Servlet-处理HTTP请求与响应
2016-12-11 11:44
381 查看
HttpServletRequest
HttpServletRequest 对象代表客户端的请求,客户端的所有消息都封装在这个对象中,通过这个方法可以获取请求数据作用:
读取和写入HTTP请求数据
取得和设置Cookies
取得路径信息
标识HTTP信息
实现请求转发
HttpServletResponse
HttpServletRequest 对象代表服务端提供给客户端的响应,封装了HTTP响应数据作用:
- 设置对客户端的输出内容
- 设置响应的状态码
- 设置浏览器的解码方式
- 设置Cookies
- 实现重定向
处理请求参数
例如:key-value、key-valuespublic ModelAndView getIps(HttpServletRequest request) { String currPageStr = request.getParameter("page"); String values[] = request.getParameterValues("name"); }
请求方式
请求方式 | 作用 |
---|---|
GET | 请求指定资源 |
POST | 向指定的资源提交需要处理的数据 |
HEAD | 要求相应于相应的get一样,只是没有响应体 |
PUT | 上传指定资源 |
DELETE | 删除指定资源 |
数据传输可能不同
表单提交、服务端处理可能不同
浏览器会用不同处理缓存方式等
GET 与 POST
GET:- 直接将请求资源放在资源路径的后面,只能提交少量数据
- 请求参数显示在浏览器地址栏上,不安全
POST:
- 提交需要处理的数据,可以导致新资源的产生和已有资源的更新
- 请求参数添加在实体内容中,可提交大量数据
- 不会将请求参数显示在浏览器地址栏,相对安全
处理中文参数
须统一设置为UTF-8,编码和解码不一致会产生乱码请求方式为POST
step1 页面指定字符集JSP页面:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
html页面:
<meta charset="UTF-8">
step2 服务器端编码
try { request.setCharacterEncoding("utf-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); }
请求方式为GET
step1 页面与post方式相同step2 服务端
//iso-8859-1 转为 utf-8 String currPageStr = request.getParameter("page"); try { currPageStr = new String(currPageStr.getBytes("iso-8859-1"),"utf-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); }
处理返回中文
服务端:response.setContentType("text/html;charset=utf-8");
通知容器,使用指定字符集
生成消息头中content-type的值,通知浏览器返回的数据类型和字符集
Springmvc 编码过滤器
web.xml中可能需要编码过滤器<!-- 编码过滤器 --> <filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <async-supported>true</async-supported> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
其bean实现:
CharacterEncodingFilter.doFilterInternal(HttpServletRequest request...){ //核心,为每次请求都设置所配置的字符集 request.setCharacterEncoding(this.encoding); }
其他编码问题
数据库连接池,我这里是mysql: useUnicode=true&characterEncoding=utf-8data_source_url=jdbc:mysql://localhost:3306/just_test?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&allowMultiQueries=true
数据库编码查看
mysql> show variables like 'character_set_%'; +--------------------------+--------------------------------------+ | Variable_name | Value | +--------------------------+--------------------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | D:\baseRuntime\mysql\share\charsets\ | +--------------------------+--------------------------------------+ 8 rows in set (0.00 sec)
设置,如
mysql> SET character_set_client='utf-8'; mysql> SET character_set_connection='utf-8' mysql> SET character_set_results='utf-8'
相关文章推荐
- 关于servlet处理http请求和响应原理的前序和思考
- Servlet--HTTP请求、响应处理
- 使用servlet处理http请求
- Scoket模拟HTTP请求响应的处理
- Servlet 1 http请求,响应消息头,状态码 盗链机制
- HTTPClient模块的HttpGet和HttpPost(处理http请求响应)
- Servlet处理客户端HTTP请求
- servlet容器如何处理http请求?
- Servlet之tomcat处理Http请求的流程
- TOMCAT原理以及处理HTTP请求的过程、ContextPath ServletPath
- 服务器端我们通过一个 Servlet 来处理来自客户端的请求,并对客户端作出响应。其核心处理代码
- [转]TOMCAT原理以及处理HTTP请求的过程、ContextPath ServletPath
- Servlet之HTTP响应处理、表单处理
- Scoket 处理HTTP请求响应
- Servlet处理Http请求的执行过程(Servlet核心流程)
- TOMCAT原理以及处理HTTP请求的过程、ContextPath ServletPath
- 使用servlet处理HTTP响应
- Servlet处理HTTP响应
- 第四章 使用Servlet处理HTTP请求
- Servlet 处理HTTP请求