【WEB小工具】EncodingFilter—设置全局编码

  1.我们知道,如果是POST请求,我们需要调用request.setCharacterEncoding("utf-8")

方法来设计编码。

1 public void doGet(HttpServletRequest request, HttpServletResponse response)
2             throws ServletException, IOException {
3          request.setCharacterEncoding("gbk");  //只适用于post提交,不适用于get
4          response.setCharacterEncoding("gbk");
5     }

  2.如果是GET请求,我们需要自己手动来处理编码问题。

  3.如果我们使用了EncodingFilter,那么就处理了POST和GET请求的编码问题。

修改web.xml:

<!-- 处理全站请求编码。无论是GET还是POST,默认是UTS-8 -->
<filter>
    <filter-name>EncodingFilter</filter-name>
    <filter-class>cn.itcast.filter.EncodingFilter</filter-class>
    <init-param>
        <param-name>charset</param-name>
        <param-value>utf-8</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>EncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

EncodingFilter() 类源代码:

 1 package cn.itcast.filter;
 2
 3 import java.io.IOException;
 4
 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
13
14 public class EncodingFilter implements Filter {
15     private String charset = "UTF-8";
16     @Override
17     public void destroy() {}
18
19     @Override
20     public void doFilter(ServletRequest request, ServletResponse response,
21             FilterChain chain) throws IOException, ServletException {
22         HttpServletRequest req = (HttpServletRequest) request;
23         if(req.getMethod().equalsIgnoreCase("GET")) {
24             if(!(req instanceof GetRequest)) {
25                 req = new GetRequest(req, charset);//澶勭悊get璇锋眰缂栫爜
26             }
27         } else {
28             req.setCharacterEncoding(charset);//澶勭悊post璇锋眰缂栫爜
29         }
30         chain.doFilter(req, response);
31     }
32
33     @Override
34     public void init(FilterConfig fConfig) throws ServletException {
35         String charset = fConfig.getInitParameter("charset");
36         if(charset != null && !charset.isEmpty()) {
37             this.charset = charset;
38         }
39     }
40 }
时间: 2024-08-04 20:30:25

【WEB小工具】EncodingFilter—设置全局编码的相关文章

Ecplise设置全局编码为UTF-8的方法

如果要使插件开发应用能有更好的国际化支持,能够最大程度的支持中文输出,则最好让Java文件使用UTF-8编码. 然而,Eclipse工作空间(workspace)的缺省字符编码是操作系统缺省的编码,简体中文操作系统 (Windows XP.Windows 2000简体中文)的缺省编码是GB18030,Windows7/8/10的缺省编码是GBK,在此工作空间中建立的工程编码是GB18030或者GBK,工程中建立的java文件也是GB18030或者GBK. 如果要使新建立工程.java文件直接是U

java_eclipse_设置全局编码_utf-8_编译class指定_运行jar乱码解决_不依赖环境

简述: javac时指定  编码 UTF-8   [ javac -encoding UTF-8 Test.java],运行时  java 指定编码 UTF-8 这样就不会出现乱码问题[ javac -Dencoding=UTF-8 Test] maven  ant 自己指定编码 ,eclipse导出时 指定编译编码 如下 如果要使插件开发应用能有更好的国际化支持,能够最大程度的支持中文输出,则最好使 Java文件使用UTF-8编码.然而,Eclipse工作空间(workspace)的缺省字符编

Java工具类-设置字符编码

package common; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResp

在web.xml中设置全局编码

在web.xml中配置 <filter> <filter-name>characterFilter</filter-name> <filter-class>com.cn.CharacterFilter</filter-class> </filter> <filter-mapping> <filter-name>characterFilter</filter-name> <url-pattern

【WEB小工具】BaseServlet—一个Servlet处理多个请求

1 package cn.itcast.test.web.servlet; 2 3 import java.io.IOException; 4 import java.io.PrintWriter; 5 6 import javax.servlet.ServletException; 7 import javax.servlet.http.HttpServlet; 8 import javax.servlet.http.HttpServletRequest; 9 import javax.ser

【WEB小工具】jQuery函数

jQuery简介 jQuery是JavaScript框架,jQuery也是JavaScript代码.使用jQuery要比直接使用JavaScript方便很多. 要使用jQuery,首先需要在jsp页面中导入jQuery.jQuery就是一个js文件而已. 导入jQuery有三种方法: 1 <!-- 导入c标签库 --> 2 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %

安利一个markdown在线解析的web小工具

访问地址: https://mdrush.herokuapp.com/ github项目: https://github.com/qcer/MDRush

WordPress记录———自定义小工具自定义图片

如上图,我在WordPress中前台自定义中的小工具里设置轮播图,根据自己需求增加图片数量,添加图片时js有点问题,点击上传,选择图片之后确实显示了,但是却没有触发隐藏input的change事件,搞了好久才发现这个问题,jQuery("input[name='"+button_id+"']").trigger('change');//只有触发change事件才会更新. 自己创建的添加轮播图小工具.原本想在模板中增加的,结果技术不够,实现不了TT.下面记录下这个轮播

web day19 Service层处理事务(利用ThreadLocal),TxQueryRunner小工具,单表练习(增删改查操作),分页

Service事务 DAO中不是处理事务的地方,因为DAO中的每个方法都是对数据库的一次操作 在Service中不应该出现Connection,它应该只在DAO中出现, 因为它是JDBC的东西,JDBC的东西是用来连接数据库的 修改JdbcUtils 我们把对事务的开启和关闭放到JdbcUtils中,在Service中调用JdbcUtils的方法来完成事务的处理, 但在Service中就不会再出现Connection这一"禁忌"了. 代码 public class JdbcUtils