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.blog.ytso.com.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.blog.ytso.com.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>

 

 

原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/14263.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论