整个分为实现类以及在web.xml文件中对编写的filter类进行注册

代码如下

  1. package cn.itcast.itcaststore.web.filter;
  2. import java.io.IOException;
  3. import java.io.UnsupportedEncodingException;
  4. import java.util.Map;
  5. import javax.servlet.Filter;
  6. import javax.servlet.FilterChain;
  7. import javax.servlet.FilterConfig;
  8. import javax.servlet.ServletException;
  9. import javax.servlet.ServletRequest;
  10. import javax.servlet.ServletResponse;
  11. import javax.servlet.http.HttpServletRequest;
  12. import javax.servlet.http.HttpServletRequestWrapper;
  13. /**
  14. * 编码过滤器(用于统一项目编码)
  15. */
  16. public class EncodingFilter implements Filter {
  17. public void init(FilterConfig filterConfig) throws ServletException {
  18. }
  19. public void doFilter(ServletRequest request, ServletResponse response,
  20. FilterChain chain) throws IOException, ServletException {
  21. // 处理请求乱码
  22. HttpServletRequest httpServletRequest = (HttpServletRequest) request;
  23. HttpServletRequest myRequest = new MyRequest(httpServletRequest);
  24. // 处理响应乱码
  25. response.setContentType("text/html;charset=utf-8");
  26. chain.doFilter(myRequest, response);
  27. }
  28. public void destroy() {
  29. }
  30. }
  31. // 自定义request对象
  32. class MyRequest extends HttpServletRequestWrapper {
  33. private HttpServletRequest request;
  34. private boolean hasEncode;
  35. public MyRequest(HttpServletRequest request) {
  36. super(request);// super必须写
  37. this.request = request;
  38. }
  39. // 对需要增强方法 进行覆盖
  40. @SuppressWarnings({ "unchecked", "rawtypes" })
  41. @Override
  42. public Map getParameterMap() {
  43. // 先获得请求方式
  44. String method = request.getMethod();
  45. if (method.equalsIgnoreCase("post")) {
  46. // post请求
  47. try {
  48. // 处理post乱码
  49. request.setCharacterEncoding("utf-8");
  50. return request.getParameterMap();
  51. } catch (UnsupportedEncodingException e) {
  52. e.printStackTrace();
  53. }
  54. } else if (method.equalsIgnoreCase("get")) {
  55. // get请求
  56. Map<string, string[]=""> parameterMap = request.getParameterMap();
  57. if (!hasEncode) { // 确保get手动编码逻辑只运行一次
  58. for (String parameterName : parameterMap.keySet()) {
  59. String[] values = parameterMap.get(parameterName);
  60. if (values != null) {
  61. for (int i = 0; i < values.length; i++) {
  62. try {
  63. values[i] = new String(values[i].getBytes("ISO-8859-1"),"utf-8");
  64. } catch (UnsupportedEncodingException e) {
  65. e.printStackTrace();
  66. }
  67. }
  68. }
  69. }
  70. hasEncode = true;
  71. }
  72. return parameterMap;
  73. }
  74. return super.getParameterMap();
  75. }
  76. @Override
  77. public String getParameter(String name) {
  78. @SuppressWarnings("unchecked")
  79. Map<string, string[]=""> parameterMap = getParameterMap();
  80. String[] values = parameterMap.get(name);
  81. if (values == null) {
  82. return null;
  83. }
  84. return values[0]; // 取回参数的第一个值
  85. }
  86. @Override
  87. public String[] getParameterValues(String name) {
  88. @SuppressWarnings("unchecked")
  89. Map<string, string[]=""> parameterMap = getParameterMap();
  90. String[] values = parameterMap.get(name);
  91. return values;
  92. }
  93. }

web.xml配置

<filter>

<filter-name>encodingFilter</filter-name>

<filter-class>cn.itcast.itcaststore.web.filter.EncodingFilter</filter-class>

</filter>

<filter-mapping>

<filter-name>encodingFilter</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

Java-Filter过滤器用于过滤整个项目的编码的更多相关文章

  1. Java Filter过滤器(拦截路径的配置+拦截方式的配置+生命周期+多个过滤器的先后执行顺序)

    Java Filter过滤器+Listen监听器 啥是过滤器 顾名思义即过滤掉一些东西,比如我们经历的高考中考都是过滤器,他过滤掉一些在学习这一方面不是很好的人,而那些成绩好的人则升入高中,大学. 但 ...

  2. Java Filter过滤器的简单总结

    1.Filter的介绍 Filter技术是servlet 2.3新增加的功能.它能够对Servlet容器的请求和响应对象进行检查和修改. Filter本身并不生成请求和响应对象,只是提供过滤功能. F ...

  3. java filter过滤器及责任链设计模式

    什么是Filter? Filter属于sevlet规范,翻译为过滤器. Filter在web开发中有什么作用? 案例一:一个web站点只有用户登录才能继续访问该站点的资源,那么需要用户每次访问都判断是 ...

  4. java Filter过滤器例外URL设置

    在web.xml声明的一个filter中: <!– session过滤filter –> <filter> <filter-name>SessionFilter&l ...

  5. Python 内建的filter()函数用于过滤序列。

    例如,在一个list中,删掉偶数,只保留奇数,可以这么写: def is_odd(n): return n % 2 == 1 list(filter(is_odd, [1, 2, 4, 5, 6, 9 ...

  6. 【Servlet】Java Serlvet Filter 过滤器

    Filter的设计思想Filter是一种AOP(aspect-oriented programming)的设计思想 : 面向切面编程.用于的请求和响应都会走 使用filter的登录案例我们通过一张图片 ...

  7. SpringBoot使用Filter过滤器处理是否登录的过滤时,用response.sendRedirect()转发报错

    1.使用response.sendRedirect("/login")时报错,控制台报错如下: Cannot call sendError() after the response ...

  8. python的map、reduce和filter(过滤器)函数(廖雪峰老师python基础)

    1.map 语法: map(func,Iterable) map()函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返 ...

  9. python之filter过滤器

    Python内建的filter()函数用于过滤序列. 和map()类似,filter()也接收一个函数和一个序列.和map()不同的时,filter()把传入的函数依次作用于每个元素,然后根据返回值是 ...

随机推荐

  1. Linux 修改用户名

    0.使用root用户登录进行操作 1.删除用户相关进程 ps -ef | grep zheng236 2. 修改用户登录名 usermod zheng236 -l zheng 3.修改用户家目录 mv ...

  2. 【2016北京集训测试赛(十)】 Azelso (期望DP)

    Time Limit: 1000 ms   Memory Limit: 256 MB Description 题解 状态表示: 这题的状态表示有点难想...... 设$f_i$表示第$i$个事件经过之 ...

  3. OpenCV中phase函数计算方向场

    一.函数原型 ​该函数参数angleInDegrees默认为false,即弧度,当置为true时,则输出为角度. phase函数根据函数来计算角度,计算精度大约为0.3弧度,当x,y相等时,angle ...

  4. Django创建博客

    拜读http://www.cnblogs.com/fnng/p/3737964.html 后自操作步骤,mark一下 我的想法: modles.py中只负责添加类,定义数据结构,至于将该类添加到adm ...

  5. [2013-01-15]The Little Schemer 学习笔记

    <The Little Schemer> FP编程.lisp入门必备 这书貌似没中文版: 有英文pdf版:完整版下载链接 英文不好的,被前几页噎住的,可以先到这里看翻译好的前言部分 看完人 ...

  6. HDMI转MIPI DSI芯片方案TC358779XBG

    型号:TC358779XBG功能:HDMI1.4转MIPI DSI通信方式:IIC分辨率:1920*1080电源:3.3/1.8/1.2封装形式:BGA80深圳长期现货 ,提供技术支持,样品申请及规格 ...

  7. 手工删除crfclust.bdb文件

    环境:RHEL 6.5 + Oracle 11.2.0.4 RAC 现象:巡检发现自己的测试环境节点2的空间使用率过高,进一步查询,发现大文件是GI目录下crfclust.bdb文件. crfclus ...

  8. jquery获取json对象中的key小技巧

    jquery获取json对象中的key小技巧 比如有一个json var json = {"name" : "Tom", "age" : 1 ...

  9. chrome开发工具指南(三)

    Security 面板 使用 Security Overview 可以立即查看当前页面是否安全. 检查各个源以查看连接和证书详情(安全源)或找出具体哪些请求未受保护(非安全源). Security O ...

  10. (5)ES6解构赋值-函数篇

    函数参数的解构赋值 function sum(x, y) { return x + y; } sum(1,2); //解构赋值 function sum([x, y]) { return x + y; ...