Response和Request对象

网友投稿 647 2022-10-19

Response和Request对象

Response和Request对象

/**作者:呆萌老师*☑csdn认证讲师*☑高级讲师*☑腾讯课堂认证讲师*☑网易云课堂认证讲师*☑华为开发者学堂认证讲师*☑爱奇艺千人名师计划成员*在这里给大家分享技术、知识和生活*各种干货,记得关注哦!*/

Response和Request

HttpServletResponse

我们在创建Servlet时会覆盖service()方法,或doGet()/doPost(),这些方法都有两个参数,一个为代表请求的request和代表响应response

HttpServletResponse常用操作

通过response设置响应行

设置响应行的状态码

setStatus​​(int sc)​​

通过response设置响应头

addHeader​​(​​​​String​​​​ name, ​​​​String​​​​ value)​​

addIntHeader​​(​​​​String​​​​ name, int value)​​

addDateHeader​​(​​​​String​​​​ name, long date)​​

setHeader​​(​​​​String​​​​ name, ​​​​String​​​​ value)​​

setDateHeader​​(​​​​String​​​​ name, long date)​​

setIntHeader​​(​​​​String​​​​ name, int value)​​

其中,add表示添加,而set表示设置

通过response设置响应体

响应体设置文本

​​PrintWriter​​getWriter​​()​​

获得字符流,通过字符流的​​write​​​​(​​​​String​​​​ s)​​方法可以将字符串设置到response   缓冲区中,随后Tomcat会将response缓冲区中的内容组装成Http响应返回给浏览    器端。

关于设置中文的乱码问题

原因:response缓冲区的默认编码是iso8859-1,此码表中没有中文,可以通过    response的setCharacterEncoding​​(​​​​String​​​​ charset)​​设置response的编码

但我们发现客户端还是不能正常显示文字

原因:我们将response缓冲区的编码设置成UTF-8,但浏览器的默认编码是本地系   统的编码,因为我们都是中文系统,所以客户端浏览器的默认编码是GBK,我们可以   手动修改浏览器的编码是UTF-8。

我们还可以在代码中指定浏览器解析页面的编码方式,

通过response的setContentType​​(​​​​String​​​​ type)​​方法指定页面解析时的编码是UTF-8

response.setContentType("text/html;charset=UTF-8");

上面的代码不仅可以指定浏览器解析页面时的编码,同时也内含            setCharacterEncoding的功能,所以在实际开发中只要编写 response.setContentType("text/html;charset=UTF-8");就可以解决页面输出中文乱码问题。

HttpServletRequest常用操作

1、通过request获得请求行

获得客户端的请求方式:​​String​​getMethod​​()​​

获得请求的资源:

​​String​​getRequestURI​​()​​

​​StringBuffer​​getRequestURL​​()​​

​​String​​getContextPath​​()​​​​ ---web​​​​应用的名称​​

​​String​​getQueryString​​()​​​​ ---- get​​​​提交​​​​url​​​​地址后的参数字符串​​

​​username=zhangsan&password=123​​

注意:request获得客户机(客户端)的一些信息

request.getRemoteAddr() --- 获得访问的客户端IP地址

2、通过request获得请求头

​​long​​getDateHeader​​(​​​​String​​​​ name)​​

​​String​​getHeader​​(​​​​String​​​​ name)​​

​​Enumeration​​getHeaderNames​​()​​

​​Enumeration​​getHeaders​​(​​​​String​​​​ name)​​

​​int​​getIntHeader​​(​​​​String​​​​ name)​​

referer头的作用:执行该此访问的的来源

做防盗链

3、通过request获得请求体

请求体中的内容是通过post提交的请求参数,格式是:

username=zhangsan&password=123&hobby=football&hobby=basketball

key ---------------------- value

username                    [zhangsan]

password                    [123]

hobby                         [football,basketball]

以上面参数为例,通过一下方法获得请求参数:

​​String​​getParameter​​(​​​​String​​​​ name)​​

​​String​​​​[]​​getParameterValues​​(​​​​String​​​​ name)​​

​​Enumeration​​getParameterNames​​()​​

​​Map​​getParameterMap​​()​​

注意:get请求方式的请求参数 上述的方法一样可以获得

解决post提交方式的乱码:request.setCharacterEncoding("UTF-8");

解决get提交的方式的乱码:

parameter = new String(parameter.getbytes("iso8859-1"),"utf-8");

request的其他功能

request是一个域对象

request对象也是一个存储数据的区域对象,所以也具有如下方法:

setAttribute​​(​​​​String​​​​ name, ​​​​Object​​​​ o)​​

getAttribute​​(​​​​String​​​​ name)​​

removeAttribute​​(​​​​String​​​​ name)​​

注意:request域的作用范围:一次请求中

request完成请求转发

获得请求转发器----​​path​​​​是转发的地址​​

RequestDispatchergetRequestDispatcher​​(​​​​String​​​​ path)​​

通过转发器对象转发

requestDispathcer.forward​​(​​​ServletRequest​​ request, ​​​ServletResponse​​ response)​​

​​注意:​​​​ServletContext​​​​域与​​​​Request​​​​域的生命周期比较?​​

​​         ServletContext​​​​:​​

​​创建:服务器启动​​

​​销毁:服务器关闭​​

​​域的作用范围:整个​​​​web​​​​应用​​

​​         request​​​​:​​

​​创建:访问时创建​​​​request​​

​​销毁:响应结束​​​​request​​​​销毁​​

​​域的作用范围:一次请求中​​

​​注意:转发与重定向的区别?​​

​​         1​​​​)重定向两次请求,转发一次请求​​

​​         2​​​​)重定向地址栏的地址变化,转发地址不变​​

​​         3​​​​)重新定向可以访问外部网站​​​​转发只能访问内部资源​​

​​         4​​​​)转发的性能要优于重定向​​

​​注意:客户端地址与服务器端地址的写法?​​

​​客户端地址:​​

​​是客户端去访问服务器的地址,服务器外部的地址,特点:写上​​​​web​​​​应用名​​​​称​​

​​直接输入地址:​​

​​重定向   ​​

​​服务器端地址:​​

​​服务器内部资源的跳转的地址,特点:不需要写​​​​web​​​​应用的名称​​

​​转发​​

​​总结:​​

​​request​​​​获得行的内容​​

​​      request.getMethod()​​

​​      request.getRequestURI()​​

​​      request.getRequestURL()​​

​​      request.getContextPath()​​

​​      request.getRemoteAddr()​​

​​request​​​​获得头的内容​​

​​      request.getHeader(name)​​

​​request​​​​获得体(请求参数)​​

​​      String request.getParameter(name)​​

​​      Map request.getParameterMap();​​

​​      String[] request.getParameterValues(name);​​

​​注意:客户端发送的参数​​​​到服务器端都是字符串​​

​​获得中文乱码的解决:​​

​​         post:request.setCharacterEncoding(“UTF-8”);​​

​​         get:​​

​​parameter = new String(parameter.getBytes(“iso8859-1”),”UTF-8”);​​

​​request​​​​转发和域​​

​​      request.getRequestDispatcher(​​​​转发的地址​​​​).forward(req,resp);​​

​​      request.setAttribute(name,value)​​

​​      request.getAttribute(name)​​

更多关注

​​https://edu./course/20519.html​​

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Android 快速开发框架 Andbase2X
下一篇:springboot中的controller注意事项说明
相关文章

 发表评论

暂时没有评论,来抢沙发吧~