一 、 请求
HttpServletRequest表示Http环境中的Servlet请求
1.1 常用方法
方法 | 描述 |
---|---|
String getParameter(String name) | 根据表单组件名称获取提交数据( 注:服务器在接收数据时使用字符串统一接收) |
String[ ] getParameterValues(String name) | 获取表单组件对应多个值时的请求数据 |
void setCharacterEncoding(String charset) | 指定每个请求的编码(针对post请求才起作用) |
RequestDispatcher getRequestDispatcher(String path) | 跳转页面, 返回⼀个RequestDispatcher对象,该对象的forward( )方法用于转发请求 |
request.setAttribute(“key”,value); | 存值 |
request.getAttribute(“key”); | 取值后向下转型 |
1.2 客户端给服务器发送数据
- 通过表单 get/post提交
- 通过a标签发送数据(get提交)
- 通过地址栏直接拼接-get请求
- js提交数据-get请求
<a href="请求名?key=value&key=value&key=value...">
key=表单元素的控件名
value=表单中控件的value属性值
注:第一个参数使用?拼接,之后的参数使⽤&拼接,获取数据还是通过 String name=request.getParameter("name");
1.3 get和post的区别
get | post | |
---|---|---|
数据传输 | GET请求的数据会附加在URL之后,以?分割URL和传输数据,多个参数用&连接,数据会暴露在地址栏中 | 把请求的数据放置在HTTP请求包的包体中,数据不会暴露 |
传输数据的大小 | 传输数据会受到URL长度的限制(在HTTP规范中,没有对URL的长度和传输的数据大小进行限制,但是在实际开发过程中,对于GET,特定的浏览器和服务器对URL的长度有限制) | 各个服务器会规定对POST提交数据大小进行限制(Apache、IIS都有各自的配置) |
安全性 | 低(信息暴露在URL,登录页面可能通过浏览器缓存以及浏览器的历史记录查看到账号密码,且GET请求提交的数据还可能会造成Cross-site request frogery攻击) | 高 |
- | URL的编码格式采⽤的是ASCII编码,而不是uniclde,因此所有的非ASCII字符都要编码之后再传输 | - |
二、 响应
在Service API中,定义了一个HttpServletResponse接口,继承自ServletResponse接口,用来封装HTTP响应消息
在HttpServletResponse接口中定义了向客户端发送响应状态码、消息头以及消息体的方法
2.1 常用方法
方法 | 描述 |
---|---|
void addCookie(Cookie var1) | 给响应添加⼀个cookie |
void sendRedirect(String var1) | 发送⼀条响应码,将浏览器跳转到指定的位置 |
PrintWriter getWriter() | 获得字符流,通过字符流的write(String s)将字符串设置到response缓冲区中,随后Tomcat将response缓冲区中的内容组装成Http响应返回给浏览器端 |
setContentType() | 设置响应内容的类型 |
2.2 重定向与转发
都用于跳转页面
重定向 | 转发 |
---|---|
response.sendRedirect() | request.getRequestDispatcher("…/success.jsp").forward(request,response) |
地址栏会改变,request中存储的数据会丢失 | 地址栏显示的是请求⻚⾯的地址,request数据可以保存 |
属于两次请求(地址栏修改了两次)两次响应 | 属于⼀次请求⼀次响应 |