博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Request
阅读量:6431 次
发布时间:2019-06-23

本文共 1826 字,大约阅读时间需要 6 分钟。

hot3.png

HttpServletRequest

在HttpServlet   api中,定义了一个HttpServletRequest接口,它继承自ServletRequest接口,专门用来封装HTTP请求消息,由于HTTP请求分为请求消息行,请求消息头,请求消息体三部分,因此在HttpServletRequest接口中定义了获取请求行,请求头,请求体的相关方法;

获取请求行

getRequestURI() : 获取资源的绝对路径

URI和URL区别

url:http://localhost:8080/Request/request1  (完整)
uri:/Request/request1  (部分)

getProtocol() : 获取协议和版本

getQueryString() : 获取查询字符串

getMethod() : 获取请求方式

getRemoteAddr() : 获取客户端IP

getContextPath() : 获取当前Web应用的路径

获取请求头

getHeaderNames() : 获取所有请求头中的key

getHeader(String name) : 获取具体的请求头中的value(有单个值)

getHeaders(String name) : 获取具体的请求头中的value(有多个值),例如accept属性

getIntHead(String name) : 如果已知返回值为int类型,可以直接使用该方法

getDateHead(String name) : 如果已知返回值为long类型,可以直接使用该方法

获取请求体

getParameterNames : 获取所有请求参数的key

getParameter(String name) : 根据参数的key,获取对应的value(单个值)

getParameterValues(String name) : 根据参数的key,获取对应的value(多个值)

getParameterMap : 获取所有的请求参数key和value,并封装在Map集合中

生命周期

创建 : 服务器收到请求时

销毁 : 响应完成

request域存取数据

request.getRequestDispatcher(String path).forward(request, response) : 转发请求给服务器内另一个资源.path路径必须以"/"开始,该"/"代表的是当前应用的根目录

request.setAttribute(String name, Object o) : 向request对象中存储一个数据

request.getAttribute(String name) : 根据key获取request对象中的一个数据

request.removeAttribute(String name) : 根据key移除request对象中的一个数据

转发和重定向区别:

1、转发一次请求、一次响应,重定向 两次请求 两次响应
2、转发只能跳转站内程序,重定向定向任何站点 
3、转发 URL地址不变 ,重定向URL地址改变 
4、转发 对客户端不可见,重定向对客户端可见 
5、转发共享同一个Request中数据,重定向两次请求,不同Request对象,不能共享Request数据 
 

乱码问题

post --- request.setCharacterEncoding("客户端编码集");
get乱码手动解决:
username = URLEncoder.encode(username, "ISO-8859-1");// 用ISO编码
username = URLDecoder.decode(username, "utf-8"); // 用utf-8解码
简化上面写法 : username = new String(username.getBytes("ISO-8859-1"), "utf-8")
get乱码 配置tomcat默认解码字符集
在tomcat/conf/server.xml 
Connector中 添加一个属性 URIEncoding="utf-8"
结论:开发时,尽量不要修改tomcat默认解码集,提交请求尽量使用post,如果非要使用get,手动编码
 

转载于:https://my.oschina.net/px828261/blog/1536105

你可能感兴趣的文章
语言的信息密度
查看>>
Android数字选择器-NumberPicker
查看>>
Android SDK Manager 更新失败的解决方法
查看>>
Java并发编程:volatile关键字解析
查看>>
Java实现分页数据获取CachedRowSet
查看>>
Lambda应用设计模式
查看>>
4.2. MuseScore
查看>>
Asp.net管道模型(管线模型)之一发不可收拾
查看>>
Silverlight 解谜游戏 之十七 胜利界面优化
查看>>
C#使用OleDB操作ACCESS插入数据时提示:参数 @p_Contract 没有默认值
查看>>
HTML基础8--CSS、滑动门
查看>>
Oracle Database 9i/10g安装后的基本环境与服务
查看>>
IBatis 简易框架搭建
查看>>
冰血暴第一季/全集Fargo迅雷下载
查看>>
c语言_文件操作_FILE结构体解释_涉及对操作系统文件FCB操作的解释_
查看>>
解读Google分布式锁服务
查看>>
C#多线程教程(1):BeginInvoke和EndInvoke方法,解决主线程延时Thread.sleep柱塞问题(转)...
查看>>
requires a peer of grunt@>=0.4.0
查看>>
[ACM_数据结构] 线段树模板
查看>>
jQuery之工具函数
查看>>