ServletRequest 与 ServletResponse 接口
目录
ServletRequest
ServletRequest 由 Servlet 容器来管理,当客户请求到来时,Servlet 容器创建一个
ServletRequest 对象,封装请求数据,同时创建一个
ServletResponse 对象,封装响应数据。这两个对象将被容器作为参数传递给 Servlet 的 service() 方法的,Servlet 利用 ServletRequest 对象获取客户端发来的请求数据,利用ServletResponse 对象发送响应数据。
已继承的子接口:HttpServletRequest
已实现的抽象类:ServletRequestWrapper 抽象类实现 ServletRequest 接口;HttpServletRequestWrapper 抽象类继承 ServletRequestWrapper 抽象类并实现 HttpServletRequest 接口。
HttpServletRequest
HttpServletRequest 接口继承 ServletRequest 接口,是对 http 协议请求消息的一种封装,为 HttpServlet 容器提供请求信息。HttpServlet 容器创建一个HttpServletRequest 对象,并将其作为参数传递给 HttpServlet 容器的服务方法(doGet、doPost等)。
HttpServletRequest 对象有一大堆获取客户端请求信息的方法。
请求转发
一种在
服务器内部的资源跳转方式。即访问某个资源后跳转到下一个资源继续访问。
使用步骤:
1、 通过 request 对象获取请求转发器对象:RequestDispatcher
getRequestDispatcher(String path)。 // path 要转发到的资源路径。
2、使用 RequestDispatcher 对象来进行转发:forward(ServletRequest request, ServletResponse response)
代码:
//使用请求转发 req.getRequestDispatcher("/下一个资源路径").forward(req, resp);
数据共享:
request 对象的作用域在一次请求的范围,一般用于请求转发的多个资源中共享数据
转发特点:
1、浏览器地址栏路径不发生变化
2、只能转发到当前服务器内部资源中。
3、转发是一次请求。浏览器请求一次,访问多个资源。
ServletResponse
已继承的子接口:HttpServletResponse
已实现的抽象类:ServletResponseWrapper 抽象类实现 ServletResponse 接口;HttpServletResponseWrapper 抽象类继承 ServletResponseWrapper 抽象类并实现 HttpServletResponse 接口。
HttpServletResponse
HttpServletResponse 接口继承自 ServletResponse 接口,主要用于封装 HTTP 响应消息。设置响应消息发送给浏览器客户端。
设置响应消息:
- 设置响应行 格式:HTTP/1.1 200 ok
- 设置状态码:setStatus(int sc)
设置响应头:setHeader(String name, String value) 设置响应体: 获取输出流 字符输出流:PrintWriter getWriter()
字节输出流:ServletOutputStream getOutputStream() 使用输出流,将数据输出到客户端浏览器
重定向
重定向(Redirect)也是一种资源跳转的方式。就是通过各种方法将各种网络请求重新定个方向转到其它位置(如:网页重定向、域名的重定向、路由选择的变化也是对数据报文经由路径的一种重定向)。
重定向(redirect)告诉浏览器的信息:
1、告诉浏览器重定向:状态码302
2、告诉浏览器B资源的路径: 响应头location:其他资源的路径
代码:
// 第一种代码实现 //1. 设置状态码为302 response.setStatus(302); //2.设置响应头location,响应头location的值为/day15/responseDemo2 response.setHeader("location","/day15/responseDemo2"); // 第二种简单上述代码实现 // 简单的重定向方法 response.sendRedirect("/day15/responseDemo2");
重定向的特点:
1、地址栏发生变化。
2、重定向可以访问其他站点(服务器)的资源。
3、重定向是两次请求。不能使用 request 对象来共享数据。
- Servlet(5)—ServletRequest接口和ServletResponse接口
- ServletRequest和ServletResponse接口方法汇总
- ServletRequest和ServletResponse(2)
- 把系统的Spring3.2.1升级到4.1.0之后测试接口报NoSuchMethodError: javax.servlet.http.HttpServletResponse.getStatus()
- ServletRequest和ServletResponse
- 理解ServletRequest和ServletResponse
- ServletRequest和ServletResponse
- Servlet---ServletResponse和ServletRequest(3)
- ServletRequest,HttpServletRequest ServletResponse,HttpServletResponse的区别:
- 深入理解ServletRequest与ServletResponse
- 深入理解ServletRequest与ServletResponse
- ServletRequest的getRequestDispatcher().forward()和HttpResponseServlet.sendRedirect()
- ServletRequest与ServletResponse -15
- 系统学习JavaWeb之四ServletRequest和ServletResponse浅读
- Servlet分析(3) servletRequest与 servletResponse
- Servlet技术浅析(四)之-----ServletResponse接口和HttpServletResponse接口
- java web给手机端写接口HttpServletRequest ,HttpServletResponse
- Servlet的生命周期及filter,servletRequest和servletResponse
- ServletRequest、ServletResponse和GenericServlet类
- 深入理解ServletRequest与ServletResponse