一个小问题,是关于过滤器的,在index页面我是这么过去的 <a href="servlet/TestDataServlet">测试</a>,servlet里面我也放了一些数据,是中文的,现在就是现实是一个个小方块的乱码,我过滤器是配置了,过滤器初始化执行了,好像doFilter那步好像没执行,下面是web里面的配置,先多谢大家了,据说<a href="servlet/TestDataServlet">这样的链接处理不了中文乱码?
web.xml<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>TestDataServlet</servlet-name>
<servlet-class>servlet.TestDataServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>TestDataServlet</servlet-name>
<url-pattern>/servlet/TestDataServlet</url-pattern>
</servlet-mapping>
<filter>
<filter-name>EncodingServlet</filter-name>
<filter-class>servlet.EncodingServlet</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>EncodingServlet</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
web.xml<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>TestDataServlet</servlet-name>
<servlet-class>servlet.TestDataServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>TestDataServlet</servlet-name>
<url-pattern>/servlet/TestDataServlet</url-pattern>
</servlet-mapping>
<filter>
<filter-name>EncodingServlet</filter-name>
<filter-class>servlet.EncodingServlet</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>EncodingServlet</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
解决方案 »
- <c:forEach>中的变量范围问题
- 比较难办的字符串操作问题,请来看看
- 大四了,想自己动手做一些项目,但不知道该做什么项目,请大家给点意见吧~谢谢!
- 如何将三个页面录入的数据在一个页面提交?
- 没分了提示就行,请问用时间函数算出现在距离奥运会开幕(2008-08-08)还有多少天?谢谢了
- ##模块可否应用的问题????
- ManFirst(ManFirst),不晚 请进
- 为什么我的BEAN不能访问?
- 老大们.我真的很郁闷..用dreamweaver写的javabean,显示的源程序中的两个括号颜色不同,所以编译不通过,显示缺少括号~~
- JDBC和oracle连接的,那里又可以下载的阿
- JSP 的内置对象有哪些
- Struts2中如何在action赋值,在页面中取到?
public class CharacterEncodingFilter implements Filter{ private String encoding;
public void setEncoding(String encoding) {
this.encoding = encoding;
}
@Override
public void destroy() {
// TODO Auto-generated method stub
} @Override
public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest)req;
if(encoding==null||encoding.trim().length()==0)
request.setCharacterEncoding("UTF-8");
else
request.setCharacterEncoding(encoding);
chain.doFilter(request, res);
} @Override
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
}}web.xml:<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>....CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
顺序的确是要像这位说的那样去做的,顺序反了不会报错的应该
在SERVLET里 要先写明 request.setCharacterEncoding("UTF-8");(虽然可以在FILTER 过滤器里就OK 了,但写了也没事) LZ试试
throws ServletException
{
filterConfig = filterconfig;
encoding = filterconfig.getInitParameter("encoding");
}
--
依你的页面<a href="servlet/TestDataServlet">测试</a>跳转,在web.xml中,就已经有 <servlet-mapping>
<servlet-name>TestDataServlet</servlet-name>
<url-pattern>/servlet/TestDataServlet</url-pattern>
</servlet-mapping>
与之对应相应了,过滤器当然不会执行。所以你页面的上的<a></a>应该先跳转到过滤器,再由过滤器跳到你要的页面
用这个转码:
String param= new String(request.getParameter("param").getBytes("ISO-8859-1"), "GBK");