Servlet-处理HTTP请求与响应
来源:互联网 发布:涟源行知中学校花图片 编辑:程序博客网 时间:2024/06/05 13:00
HttpServletRequest
HttpServletRequest 对象代表客户端的请求,客户端的所有消息都封装在这个对象中,通过这个方法可以获取请求数据
作用:
- 读取和写入HTTP请求数据
- 取得和设置Cookies
- 取得路径信息
- 标识HTTP信息
- 实现请求转发
HttpServletResponse
HttpServletRequest 对象代表服务端提供给客户端的响应,封装了HTTP响应数据
作用:
- 设置对客户端的输出内容
- 设置响应的状态码
- 设置浏览器的解码方式
- 设置Cookies
- 实现重定向
处理请求参数
例如:key-value、key-values
public ModelAndView getIps(HttpServletRequest request) { String currPageStr = request.getParameter("page"); String values[] = request.getParameterValues("name");}
请求方式
请求方式是用户请求的意向,利于服务器做出不同的响应,因为不同请求方式:
- 数据传输可能不同
- 表单提交、服务端处理可能不同
- 浏览器会用不同处理缓存方式等
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-8String 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-8
data_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'
0 0
- Servlet-处理HTTP请求与响应
- Servlet处理HTTP响应
- Servlet处理HTTP响应
- servlet处理http响应
- servlet处理http响应
- J2EE HTTP的请求和响应原理,servlet处理原理
- JavaWeb(三) ----Servlet处理HTTP响应,请求
- Servlet-请求与响应
- Servlet处理HTTP请求
- servlet处理http请求
- servlet处理http请求
- Servlet处理请求和响应
- http请求与响应
- HTTP请求与响应
- Http请求与响应
- http请求与响应
- http请求与响应
- 使用servlet处理HTTP响应
- 国际化问题简述
- ATM模拟机1.0
- 函数指针
- Servlet-基于的HTTP协议
- 针对模块化,CommonJS规范,require原理和包查找机制等的整理
- Servlet-处理HTTP请求与响应
- 如何用rvest包爬取豆瓣图书250的数据
- paxos算法概念入门
- 微信开发(一)内网映射之natapp的使用
- java Thread中,run方法和start方法的区别
- Servlet-重定向与转发
- hdu4326 Dragon Ball 单调队列优化Dp
- Servlet-Cookie 与 Session
- Maven学习总结(32)——Maven项目部署到Tomcat8中