2008-03-17
filters
package filters;
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;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
public class TomcatFormFilter implements Filter {
/**
* Request.java 对 HttpServletRequestWrapper 进行扩充, 不影响原来的功能并能提供所 有的
* HttpServletRequest 接口中的功能. 它可以统一的对 Tomcat 默认设置下的中文问题进行解决而只 需要用新的 Request
* 对象替换页面中的 request 对象即可.
*/
class Request extends HttpServletRequestWrapper {
public Request(HttpServletRequest request) {
super(request);
}
/**
* 转换由表单读取的数据的内码. 从 ISO 字符转到 GBK.
*/
public String toChi(String input) {
try {
byte[] bytes = input.getBytes("ISO8859-1");
return new String(bytes, "GBK");
} catch (Exception ex) {
}
return null;
}
/**
* Return the HttpServletRequest holded by this object.
*/
private HttpServletRequest getHttpServletRequest() {
return (HttpServletRequest) super.getRequest();
}
/**
* 读取参数 -- 修正了中文问题.
*/
public String getParameter(String name) {
return toChi(getHttpServletRequest().getParameter(name));
}
/**
* 读取参数列表 - 修正了中文问题.
*/
public String[] getParameterValues(String name) {
String values[] = getHttpServletRequest().getParameterValues(name);
if (values != null) {
for (int i = 0; i < values.length; i++) {
values[i] = toChi(values[i]);
}
}
return values;
}
}
public void destroy() {
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest httpreq = (HttpServletRequest) request;
if (httpreq.getMethod().equals("POST")) {
request.setCharacterEncoding("GBK");
} else {
request = new Request(httpreq);
}
chain.doFilter(request, response);
}
public void init(FilterConfig filterConfig) throws ServletException {
}
} <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <servlet> <servlet-name>action</servlet-name> <servlet-class> org.apache.struts.action.ActionServlet </servlet-class> <init-param> <param-name>config</param-name> <param-value>/WEB-INF/struts-config.xml</param-value> </init-param> <init-param> <param-name>debug</param-name> <param-value>3</param-value> </init-param> <init-param> <param-name>detail</param-name> <param-value>3</param-value> </init-param> <load-on-startup>0</load-on-startup> </servlet> <filter> <filter-name>TomcatFormFilter</filter-name> <filter-class>filters.TomcatFormFilter</filter-class> </filter> <filter-mapping> <filter-name>TomcatFormFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
评论
kenter1643
2008-03-17
把/root/apache-tomcat-5.5.23/webapps/servlets-examples/WEB-INF/classes/filters目录下把
SetCharacterEncodingFilter.class导入工程的包中,例如我的为cn.myWiki.tootls
在工程目录的WebRoot/WEB-INF/web.xml添加
SetCharacterEncodingFilter.class导入工程的包中,例如我的为cn.myWiki.tootls
在工程目录的WebRoot/WEB-INF/web.xml添加
<filter>
<filter-name>setCharEncoding</filter-name>
<filter-class>cn.myWiki.tools.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>gb2312</param-value>
</init-param>
<init-param>
<param-name>enable</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>setCharEncoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
发表评论
- 浏览: 25363 次
- 性别:

- 来自: 珠海

- 详细资料
搜索本博客
最近加入圈子
最新评论
-
一个自己写的很简陋的php ...
在构想 tag的中文映射如何构建 期待能做到足够的智能化
-- by kenter1643 -
一个用js+div实现的拖拽, ...
更多基于jquery的效果demohttp://interface.eyecon ...
-- by kenter1643 -
使用 jQuery(Ajax)/PHP/My ...
php-excel是一个非常简单,用于生成excel文档的php函数库。项目站点 ...
-- by kenter1643 -
DELPHI VCL组件 TTreeList ...
没有安装成功: Compile 时报 File not find:'bmp.r ...
-- by newchina -
vsftpd的配置
useradd -d 目录 用户名 passwd 用户 chown 用户名 ...
-- by kenter1643






评论排行榜