• servlet过滤器之EncodingFilter


    在Action中得到从JSP页面中的数据 然后插入到oracle中却发现是乱码,我按着以下方式解决。

    首先:

    <%@ page language="java" import="java.util.*" pageEncoding="GBK"%>


    发现还是乱码,然后在<head>里设置

    <meta http-equiv="content-type" content="text/html; charset=GBK">


    还是不行,接着在tomcat里 server.xml

     <Connector port="8080" protocol="HTTP/1.1" 
                   connectionTimeout="20000" 
                   redirectPort="8443"
    			   URIEncoding="GBK"/>


    本来是可以在servlet里加入

    request.setCharacterEncoding();


    但没有servlet 也不知道如何在struts里的action中怎么设置编码。

    最后想到了过滤器,还是用过滤器吧。

    首先编写一个类实现Filter接口

    package com.itmyhome.drp.filter;
    
    import java.io.*;
    import javax.servlet.*;
    
    public class EncodingFilter implements Filter {
    	private String charSet;
    
    	public void init(FilterConfig config) throws ServletException {
    		// 接收初始化的参数
    		this.charSet = config.getInitParameter("charset");
    	}
    
    	public void doFilter(ServletRequest request, ServletResponse response,
    			FilterChain chain) throws IOException, ServletException {
    		request.setCharacterEncoding(this.charSet);
    		//继续执行
    		chain.doFilter(request, response);
    	}
    
    	public void destroy() {
    	}
    }
    


    在web.xml中配置<filter>和<filter-mapping>

    <filter>
    		<filter-name>encoding</filter-name>
    		<filter-class>com.itmyhome.drp.filter.EncodingFilter</filter-class>
    		<init-param>
    			<param-name>charset</param-name>
    			<param-value>GBK</param-value>
    		</init-param>
    	</filter>
    	<filter-mapping>
    		<filter-name>encoding</filter-name>
    		<url-pattern>/*</url-pattern>
    	</filter-mapping>


     

  • 相关阅读:
    第一阶段冲刺05
    生成器
    三元表达式 ,列表推导式 , 字典生成式
    装饰器
    闭包函数
    函数的定义和参数
    列表内置方法
    字符串的内置方法
    py_11_ 0731
    py_11_ 0730
  • 原文地址:https://www.cnblogs.com/itmyhome/p/4131520.html
Copyright © 2020-2023  润新知