HttpServletRequest共享数据、请求转发、请求包含、获取流对象及中文乱码问题

简介: HttpServletRequest共享数据、请求转发、请求包含、获取流对象及中文乱码问题

一、HttpServletRequest共享数据


● HttpServletRequest不仅可以获取一些列数据,还能通过属性共享、传递一些数据,比如运用在请求转发和请求包含


● 相关方法


1、void setAttribute(String name,Object obj) ,用于定义一个属性,其中name是属性的名称,obj是属性值,如果原先已经存在相同名称的属性,则会将原来的属性删除再添加该属性,如果obj为null则会删除删除指定名称的属性


2、Object getAttribute(String name) ,根据属性名获取属性值


3、void removeAttribute(String name) ,删除指定名称的属性


4、Enumeration getAttributeNames() ,返回一个包含所有属性名的Enumeration对象


● 需要注意同一个请求中的数据才能共享、传递


二、请求转发和请求包含


请求转发


● Servlet之间可以相互跳转,如果某个Servlet的功能不能处理客户端的请求则可以使用跳转的方式将请求传递给另一个Servlet,由另一个Servlet完成并响应给客户端


● 相关方法


1. RequestDispatcher getRequestDispatcher(String path) ,该方法由

HttpServletRequest提供,用于获取一个封装了某条路径所指定资源的

RequestDispatcher对象,路径必须以斜杠/开头,即该路径就是需要转发到的某个

Servlet的路径


2. void forward(ServletRequest req,ServletResponse resp) ,该方法由

RequestDispatcher提供,用于将请求转发给另一个Web资源,如某个Servlet


请求包含


● 某个Servlet不能完全处理一个请求时可以将另一个Servlet“包含”进来,实现功能合并然后响应给客户端,这时浏览器的地址栏不会发送改变,被包含的Servlet的响应头会丢失,因为是由第一个Servlet做出响应的


● 相关方法


1. RequestDispatcher getRequestDispatcher(String path) ,该方法根请求转发的

相同,路径是需要包含的哪个Servlet的路径


2. void include(ServletRequest req,ServletResponse resp) ,该方法由

RequestDispatcher提供,用于实现包含另一个Servlet的功能


三、获取流对象


● BufferedReader getReader() ,该方法获取一个字符输入缓冲流


● ServletInputStream getInputStream() ,该方法获取一个字节输入流


● 注意这两个方法读取的数据来自请求体,所以使用GET方式获取不到数据,而POST方法可以


四、中文乱码问题


● 在网页的表单中如果需要提交的数据存在中文时可能会出现乱码的情况


● HttpServletRequest提供了 void setCharacterEncoding(String name) 方法用于设置Request对象的解码方式


● GET方式提交的请求不会出现乱码的问题,但是POST方式存在乱码问题


目录
相关文章
|
7月前
|
存储 前端开发 安全
GET 和 POST 请求:理解它们之间的区别和适用场景
GET 和 POST 请求:理解它们之间的区别和适用场景
|
7月前
|
Java 数据安全/隐私保护
response对象的转发和重定向
response对象的转发和重定向
61 0
|
Java 应用服务中间件 容器
JSP页面请求响应过程中的编码解码
JSP页面请求响应过程中的编码解码
114 0
|
Java 测试技术 API
【SpringMVC】参数传递与用户请求和响应(上)
【SpringMVC】参数传递与用户请求和响应(上)
83 0
|
API 图形学
U3D客户端框架之实现基于UnityWebRequest的Http服务 实现HttpCallBackArgs参数类、HttpRoutine访问器、HttpManager管理器
Unity3D 在2018版本中弃用了WWW请求,使用UnityWebRequest 进行网络请求,这个方法是为了满足今天的 HTTP 通信的需求,而且诞生的新类,相对于WWW这个方法,会更灵活一些,但是用起来却很不方便。
U3D客户端框架之实现基于UnityWebRequest的Http服务 实现HttpCallBackArgs参数类、HttpRoutine访问器、HttpManager管理器
|
JSON 前端开发 Java
【SpringMVC】参数传递与用户请求和响应(下)
【SpringMVC】参数传递与用户请求和响应(下)
82 0
|
数据采集 Python
使用urllib设置代理和传递/保存cookie
使用urllib设置代理和传递/保存cookie
116 0
SpringMVC学习(五):向request域对象共享数据的五种方法
SpringMVC学习(五):向request域对象共享数据的五种方法
145 0
SpringMVC学习(五):向request域对象共享数据的五种方法
servlet中请求对象与响应对象的生命周期
servlet中请求对象与响应对象的生命周期
117 0
servlet中请求对象与响应对象的生命周期
HTTP协议:响应消息和 Response对象和ServletContext对象
HTTP协议:响应消息和 Response对象和ServletContext对象