zoukankan      html  css  js  c++  java
  • 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>


     

  • 相关阅读:
    linux 学习(二)防火墙
    linux学习(一)开始
    ajax和sap以及网络安全
    仿苹果导航菜单js问题
    基本类型和引用类型调用是的区别(Object.create)
    箴言
    思维的宽度
    笔记
    循环传值_闭包
    一个问题的解法(兔子三个月之后每月都生兔子的问题)
  • 原文地址:https://www.cnblogs.com/itmyhome/p/4131520.html
Copyright © 2011-2022 走看看