当前位置: 首页>编程语言>正文

ResponseDTO的作用 response的功能

response(响应)request(请求)对象的作用, 重定向的特点, 请求转发和包含的特点与区别, 请求转发和重定向的区别,get和post的区别

JSP的response隐藏对象在转换bai为Servlet之后,对应于duHttpServletResponse型态对象,HttpServletResponse对象是zhi有关于对客户端请求之dao响应,您可以利用它来设定一些要响应的讯息,例如标题信息、响应状态码等.

response 响应对象

response是Servlet.service方法的一个参数,类型为HttpServletResponse

1.response的生命周期

创建时机:客户端每访问一次,请求对象就会创建一个,响应对象就创建一个
 当service方法执行完毕后 response对象和request对象销毁

2.response的作用

1.设置响应头信息
2.发送状态码
3.设置响应正文
4.设置重定向(典型面试问题)

3.response设置响应头信息

方法:setHeader(“headName”,“headValue”);
1.设置响应头信息
utf-8编码解析setHeader(“content-type”, “text/html;charset=utf-8”);//设置浏览器文本类型为text/html
2.设置浏览器刷新相关的
setHeader(“refresh”,“5”);//浏览器5秒刷新一次
setHeader(“refresh”,“5;http://www.baidu.com”);//浏览器5秒后刷新到百度页面
3.设置浏览器不缓存
response.setHeader(“expires”, “0”);
response.setHeader(“pragma”, “no-cache”);
response.setHeader(“cache-control”, “no-cache”);

response的常用方法总结:

setHeader():是一个通用的标头设定方法,您可以用它来设定任何「名称/值」的标头.
setIntHeader():是专门用来设定整数值标头的版本.
setDateHeader():是setHeader()的Date设定版本,第二个参数是设定Date的Long数值,0表示GMT 1970/1/1 00:00。   (Note:以上3个函数用来设置HTTP协议的表头,必须对HTTP协议有些了解才能正确使用,我现在也不清楚).
setStatus():是用来设定回应的状态码,例如404 Not Found,HttpServletResponse类中提供了一些助忆常数设定,例如SC_NOT_FOUND就是表示404状态码(可以在Servlet API文件中查询相关的助忆常数).
sendError():会根据服务器的预设错误网页回报方式显示错误讯息.
sendRedirect():设置重定向页面.
getWriter():取得PrintWriter对象,由它来写出响应至服务器的本体信息.

4.response发送状态码

方法:response.setStatus(200):设置状态码;
response.sendError(404, “您要查找的资源不存在”):当发送错误状态码时,Tomcat会跳转到固定的错误页面去,但可以显示错误信息。

5.response设置响应正文

方法:response.getWriter(); //字符流
 response.getOutputStream(); //字节流
注意:(1)使用完成后 要注意关闭流
 (2)字符流和字节流不能同时使用 如果同时使用触发异常
IllegalStateException (非法语句异常)

6.response重定向

原理:

浏览器发送给客户端一个请求 客户端给浏览器响应一个状态码 设置一个重定向地址 浏览器再去访问新的地址 服务器再去响应浏览器的请求
a.发送一个状态码
b.设置一个重定向地址

代码实现:

response.setStatus(302);//发送一个状态码
 response.setHeader(“location”,"/javaEE-05/servlet/FServlet");
实现重定向的便捷方法
response.sendRedirect(“URL地址”);

特点

1.两次请求 两次响应
2.地址栏会发生变化
3.第一次访问可能是get 也可能是post 第二次访问一定是get
4.重定向可以重定向到站外资源
5.负责重定向的servlet不要设置响应体(响应正文)
6.重定向属于客户端行为

request 请求对象

request是Servlet.servlet()方法的一个参数 类型为HttpServletRequest

1.request生命周期

诞生:客户端访问
销毁:service方法执行完成后

2.request作用

1.获得请求头(封装了请求头数据)
2.请求参数(封装了请求正文数据,如果是get请求,没有正文)
3.域对象功能(是一个域对象,可以把他当中Map来添加 获取数据)
4.请求转发和包含(提供了请求转发和包含功能)

3.request获得请求头

方法:getHeader(String name); //获取指定名称的请求头
 getHeaderNames(); //获得所有请求头名称 返回的是一个枚举类型
 getIntHeader(String name); //获得值为int类型的请求头

4.request获取请求参数(就是从客户端传递过来的参数)

最常见的客户端传递参数方法有两种
get请求:
 form表单
 超链接
 地址栏追加参数
post请求:
 form表单
get和post提交的区别
get提交:提交数据大小有限制 提交参数会以?号的形式追加到浏览器的地址栏中 多个参数以&做连接 数据不安全
post提交:提交数据大小没有限制 数据安全 效率低
方法:
 request.getParameter(“attname”); //返回的是String类型
 request.getParameterNames(); //获得所有参数的名字
注意:
 (1)当指点名称不存在时 获得null
 (2)提交的参数相同,后边提交的参数将前边提交的参数覆盖
方法:
 request.getParameterValues(“attname”); //获得请求中所有的参数值
 request.getParameterMap(); //返回的是一个Map集合
 将从请求中获得参数内容封装到map集合当中

5.request域对象功能

request是域对象!在javaWeb中一共有四个域对象,其中ServletContext是域对象 他在整个web应用中只创建一个ServletContext
request是域对象 request可以在一个请求中共享数据
一个请求会创建一个request对象 如果一个请求经历了多个Servlet 那么多个Servlet就可以request来共享数据
在一个请求中经历多个Servlet 请求转发 请求包含(作用四)
方法:setAttribute(String name,Object value);//存储一个对象
 getAttribute(String name); //通过属性名获得属性值数据
 removeAttribute(String name);//通过属性名移除数据
 getAttributeNames(); //获得所有属性名 返回的是以枚举类型

6.request请求转发 请求包含

无论是请求转发 请求包含,都表示由多个servlet共同处理一个请求
请求转发方法:request.getRequestDispatcher(/servlet/BServlet).forward(request,response);
请求包含方法:request.getRequestDispatcher(/servlet/BServlet).include(request,response);
请求转发和包含的特点:
1.只有一次请求,一次响应
2.地址栏不会发生变化
3.属于服务器端行为
4.转发只能是站内资源
请求转发和请求包含的区别(面试问题):
转发:(留头不留体)
如果在AServlet中请求到BServlet,那么在AServlet中就不允许在输出响应体
即不能再使用response.getWriter()和response.getOutputStream()向客户端输出 这一工作应该由BServlet来完成
不能输出响应体但还是可以设置响应头 例如:response.setContentType(“text/html;charset=utf-8”);
包含:(留头又留体)
请求转发的限制 请求包含中没有

7.请求转发与重定向的区别(面试问题)

1.请求转发是一次请求
重定向是两次请求
2.请求转发地址栏不会发生变化
重定向地址栏会发生变化
3.请求转发属于服务端行为
重定向属于客户端行为
4.请求转发要么都是get 要么都是post
重定向第二次请求一定是get
5.请求转发只能转发站内资源
重定向可以定向站外资源

8.request获得请求相关的其他方法

与URL相关的方法
方法:getMethod(); //返回请求方法
 getLocale(); //返回当前客户端的locale,表示国家和语言
 getCharacterEncoding(); //获得请求编码


https://www.xamrdz.com/lan/5k31937220.html

相关文章: