Filter-过虑器应用之1-设置request编码
来源:互联网 发布:mysql rename table 编辑:程序博客网 时间:2024/06/06 00:55
写一个过虑器,对所有url全部过虑,/*.在doFilter方法中,设置request的编码为utf-8。
一般情况下,这个过虑器永远是第一个要执行的过虑器。
最好是通过配置设置编码。<filter><init-param>…
第一步:实现Filter接口,在doFIlter中接收初始化参数,设置编码
public class CharFilter implements Filter {//声明编码的成员变量private String encoding;public void init(FilterConfig config) throws ServletException {encoding = config.getInitParameter("bm");}public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {request.setCharacterEncoding(encoding);//放行,必须要放行。chain.doFilter(request, response);}public void destroy() {}}
第二步:将上面的类配置到web.xml
<filter> <filter-name>char</filter-name> <filter-class>cn.itcast.filter.CharFilter</filter-class> <init-param> <!-- 为了便于配置,在配置文件中设置编码 --> <param-name>bm</param-name> <param-value>UTF-8</param-value> </init-param> </filter><filter-mapping><filter-name>char</filter-name><url-pattern>/*</url-pattern></filter-mapping>
对get可以处理中文
在CharFilter中对reuqest进行包装。
目的:修改增强getParameter方法,如果是get转码。
第一步:声明包装类:
//声明包装类class MyRequest extends HttpServletRequestWrapper{public MyRequest(HttpServletRequest request) {super(request);}//增强getParamter@Overridepublic String getParameter(String name) {String val = super.getParameter(name);if(super.getMethod().equals("GET")){try {val = new String(val.getBytes("ISO-8859-1"),super.getCharacterEncoding());} catch (UnsupportedEncodingException e) {e.printStackTrace();}}return val;}}
第二步:在doFilter方法中,声明包装类的实例
public class CharFilter implements Filter {// 声明编码的成员变量private String encoding;public void init(FilterConfig config) throws ServletException {encoding = config.getInitParameter("bm");}public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {request.setCharacterEncoding(encoding);response.setContentType("text/html;charset=" + encoding);// 判断是否需要包装HttpServletRequest req = (HttpServletRequest) request;if (req.getMethod().equals("GET")) {request = new MyRequest(req);}// 声明包装类的实例// 放行chain.doFilter(request, response);}public void destroy() {}}// 声明包装类class MyRequest extends HttpServletRequestWrapper {public MyRequest(HttpServletRequest request) {super(request);}// 增强getParamter@Overridepublic String getParameter(String name) {String val = super.getParameter(name);try {val = new String(val.getBytes("ISO-8859-1"),super.getCharacterEncoding());} catch (UnsupportedEncodingException e) {e.printStackTrace();}return val;}}
0 0
- Filter-过虑器应用之1-设置request编码
- 过虑器应用之1-设置request编码
- Filter-过虑器应用之2-设置页面缓存
- Filter-过虑器应用之3-验证用户是否登录
- Filter-过虑器应用之4-用户自动登录
- Filter-过虑器应用之-数据的压缩
- Servlet Filter(过虑器)
- Filter过虑器链
- 四个有用的过虑器 Filter
- filter-设置action编码
- filter过滤器设置编码
- request response 编码设置
- struts2 filter设置字符编码不起作用之傻瓜式解决方案
- 使用Filter对Request进行统一编码
- 通过filter来改变request编码
- 使用Filter对Request进行统一编码
- 使用filter统一设置编码
- 使用(Filter)过虑器实现对Session是否过时的判断
- C#编写简单的聊天程序
- USART总结。
- ViewState 加载后AspxGridview网页出现死机现象
- 10步让你成为更优秀的程序员
- 虚函数
- Filter-过虑器应用之1-设置request编码
- jpa注解
- Ubuntu JDK安装配置详解
- HTTP请求报文和HTTP响应报文
- jsoup
- mono touch下载文件到本地
- IT工作人员的几种生态
- Android 相机的开发注意事项
- 黑马程序员_集合知识总结