characterEncodingFilter作用[通俗易懂]

characterEncodingFilter作用[通俗易懂]characterEncoding表示编码方式,enabled表示是否启用编码,分别从初始化参数中取值。web.xml中的配置如下:如果使用的字符编码Filter、request中取出的字符可能是

大家好,又见面了,我是你们的朋友全栈君。

package com.demo.test;

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.ServletResponse;

public class characterEncodingFilter implements Filter {

    
    private String characterEncoding;
    private boolean enabled;
    public void destroy() {
        // TODO Auto-generated method stub
        characterEncoding = null;//销毁时清空资源
    }

    public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain) throws IOException, ServletException {
        // TODO Auto-generated method stub
        if(enabled || characterEncoding != null){//如果启用该Filter
            request.setCharacterEncoding(characterEncoding);//设置reques编码
            response.setCharacterEncoding(characterEncoding);//设置response编码
        }
        chain.doFilter(request,response );//doFilter,执行下一个Filter或者Servlet
    }

    public void init(FilterConfig config) throws ServletException {//初始化时加载参数
        // TODO Auto-generated method stub
        characterEncoding = config.getInitParameter(characterEncoding);//编码方式
        enabled = "true".equalsIgnoreCase(config.getInitParameter("enabled").trim());//启用
    }
  
}

characterEncoding表示编码方式,enabled表示是否启用编码,分别从初始化参数中取值。

web.xml中的配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <display-name></display-name>    
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  <filter>
    <filter-name>characterEncodingFilter</filter-name>
    <filter-class>com.helloweenvsfei.filter.CharacterEncodingFilter</filter-class>
    <init-param>
      <param-name>characterEncoding</param-name>
      <param-value>UTF-8</param-value>
    </init-param>
    <init-param>
      <param-name>enabled</param-name>
      <param-value>true</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>characterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
</web-app>

如果使用的字符编码Filter、request中取出的字符可能是乱码,否则不会出乱码。页面编码的方式与Filter编码方式必须一致。另外,如果表单是GET方式提交的,还需要修改Tomcat的conf/servlet.xml配置文件,制定URIEncoding(默认为IOS-8859-1);否则,依然会出现乱码。修改如下:

<Connector port=”8080″ protocol=”HTTP/1.1″ connectionTimeout=”20000″ redirectPort=”8443″ URIEncoding=”UTF-8″>

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/154346.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • jupyter和python的关系_jupyter notebook和python

    jupyter和python的关系_jupyter notebook和python这个问题参见以下文章即可,讲的很全面。核心总结Python就是原生python;anaconda类似第三方集成,方便我们管理,而且自带很多库。如果选择安装Python的话,那么还需要pipinstall一个一个安装各种库,安装起来比较痛苦,还需要考虑兼容性;PyCharm就是一个IDE的角色,和NotePad没什么本质区别。只是大家习惯上,java配合MyEclipse使用,Anaconda…

    2022年8月27日
    10
  • 程序员垃圾简历长什么样?

    程序员垃圾简历长什么样?已经连续五年参加大厂校招、社招的技术面试工作,简历看的不下于万份这篇文章会用实例告诉你,什么是差的程序员简历!疫情快要结束了,各个公司也都开始春招了,作为即将红遍大江南北的新晋UP主,那当然要为小伙伴们做点事(手动狗头)。就在公众号里公开征简历,义务帮大家看,并一一点评。《启舰:春招在即,义务帮大家看看简历吧》一石激起千层浪,三天收到两百多封简历。花光了两个星期的所有空闲时…

    2022年5月21日
    38
  • sql修改字段类型和长度

    sql修改字段类型和长度标准SQL修改字段类型和长度语句:ALTERTABLEtableNamemodifycolumncolumnName类型;例如Mysql的修改字段类型语句:altertabletestmodifycolumnnamevarchar(255);Oracle修改字段类型和长度语句:ALTERTABLEtableNamemodify(columnNa

    2022年6月12日
    102
  • UGUI合批drawcall高的原因「建议收藏」

    UGUI合批drawcall高的原因「建议收藏」各个UI界面Batches高的原因通用原因1.UI重叠打断合批增加一倍的drawcall特别是列表里面的重叠https://zhuanlan.zhihu.com/p/431118062.空图片例如ScrollRect已经下面的View可考虑使用空的Text或者写一个类继承MaskableGraphic不绘制使用UpdateGeometry不绘制3.都是散图可考虑系统按钮作为一个图集活动图标作为一个图集…

    2022年9月18日
    0
  • linux 安装python3

    linux 安装python3

    2021年11月27日
    37
  • node.js介绍及其常用命令

    node.js介绍及其常用命令NodeJs简介:-node.js是提供了一个JavaScript的后台运行环境,简单地说就是运行在服务器端的JS浏览器是Javascript的前端网页的运行环境地址:https://nodejs.org/zh-cn/nodejs和javascript的区别1、nodejs中不支持DOM、BOM的操作支持JS的逻辑运算、函数、数据、json、对象、数组等操作2、专业的说法:Node.js是一个事件驱动I/O服务器的Javascipt运行环境,基于Google的V8引擎,V8引擎执行JS的

    2022年7月16日
    9

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号