当前位置:编程学习 > html/css >>

表单编码过滤器


如果用到了Spring,则可以使用org.springframework.web.filter.CharacterEncodingFilter替换掉
[html] 
<?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"> 
    <filter> 
        <filter-name>EncodingFilter</filter-name> 
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> 
        <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> 
</web-app> 


下面是JavaWeb工程中的web.xml配置
[html
<?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"> 
    <filter> 
        <filter-name>EncodingFilter</filter-name> 
        <filter-class>com.jadyer.Filter.CharacterEncodingFilter</filter-class> 
        <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> 
</web-app> 

下面是用于设定表单传输参数编码的过滤器CharacterEncodingFilter.java
[java] 
package com.jadyer.Filter; 
 
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 encoding = "ISO8859_1"; 
 
    /**
     * 当过滤器对象被销毁的时候,由Web容器调用该方法
     * @see 该方法主要用来释放过滤器对象所占用的资源
     */ 
    public void destroy() {} 
     
    /**
     * 由Web容器在刚生成过滤器对象的时候进行调用,主要用来完成对过滤器的初始化工作
     * @see 该方法接收一个FilterConfig类型的参数,通过该参数以获得有关当前过滤器的信息
     * @see 例如:调用FilterConfig的getFilterName()方法可以获得过滤器的名字
     * @see 例如:调用getServletContext()方法可以获得当前的ServletContext对象
     * @see 这里主要是用来读取web.xml中设定的<param-name>encoding</param-name>的值
     */ 
    public void init(FilterConfig config) throws ServletException { 
        encoding = config.getInitParameter("encoding"); 
    } 
 
    /**
     * doFilter()方法是Filter接口中最核心的方法,完成过滤器的过滤功能
     * @see FilterChain类型的对象是保存多个过滤器执行顺序的对象
     * @see 一个Web应用中可以有多个过滤器,这些过滤器就像珠子被线串在了一起
     * @see 调用时,是一个接着一个进行调用的,调用顺序是按照过滤器在web.xml中声明的先后顺序
     * @see 通过调用FilterChain对象的doFilter()方法,可以调用下一个过滤器的doFilter()方法
     * @see 如果下一个过滤器是最后一个,则调用客户端所请求的Servlet、JSP或者其它文件
     */ 
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { 
        request.setCharacterEncoding(encoding); //设定表单参数编码方式 
        chain.doFilter(request, response); 
    } 

补充:web前端 , HTML/CSS  ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,