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 对象来共享数据。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本课程详细讲解了以下内容:    1.jsp环境搭建及入门、虚拟路径和虚拟主机、JSP执行流程    2.使用Eclipse快速开发JSP、编码问题、JSP页面元素以及request对象、使用request对象实现注册示例    3.请求方式的编码问题、response、请求转发和重定向、cookie、session执行机制、session共享问题     4.session与cookie问题及application、cookie补充说明及四种范围对象作用域     5.JDBC原理及使用Statement访问数据库、使用JDBC切换数据库以及PreparedStatement的使用、Statement与PreparedStatement的区别     6.JDBC调用存储过程和存储函数、JDBC处理大文本CLOB及二进制BLOB类型数据     7.JSP访问数据库、JavaBean(封装数据和封装业务逻辑)     8.MVC模式与Servlet执行流程、Servlet25与Servlet30的使用、ServletAPI详解与源码分析     9.MVC案例、三层架构详解、乱码问题以及三层代码流程解析、完善Service和Dao、完善View、优化用户体验、优化三层(加入接口和DBUtil)    1 0.Web调试及bug修复、分页SQL(Oracle、MySQL、SQLSERVER)     11.分页业务逻辑层和数据访问层Service、Dao、分页表示层Jsp、Servlet     12.文件上传及注意问题、控制文件上传类型和大小、下载、各浏览器下载乱码问题     13.EL表达式语法、点操作符和中括号操作符、EL运算、隐式对象、JSTL基础及set、out、remove     14.过滤器、过滤器通配符、过滤器链、监听器     15.session绑定解绑、钝化活化     16.以及Ajax的各种应用     17. Idea环境下的Java Web开发

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值