黑马程序员技术交流社区
标题:
在jsp中过滤器的用法(简单解决中文乱码问题)
[打印本页]
作者:
wangfayin
时间:
2011-8-12 10:49
标题:
在jsp中过滤器的用法(简单解决中文乱码问题)
一.配置web.xml文件,形势如下:
<filter>
<filter-name>filter</filter-name>
<filter-class>com.filter</filter-class>
</filter>
<filter-mapping>
<filter-name>filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
注意:1.filter与filter-mapping节点下的filter-name一定要一致。
2.filter-class节点指的是过滤器的path
3.url-pattern节点用来指定要过滤的页面,“\*”表示过滤所有页面。
二.编写实现了自java.servlet.Filter接口的过滤器,简单示例如下:
import java.io.IOException;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
public class SetCharacterEncodingFilter implements Filter
{
public void destroy() {
// TODO Auto-generated method stub
}
public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {
arg0.setCharacterEncoding("GBK");
arg2.doFilter(arg0, arg1);
}
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
}
}
三.过滤器完成了
这样你的jsp项目就可以避免中文乱码了(由于项目本身设置不同,也许会用部分页面无法解决乱码,那么请尝试使用Sting的getBytes()方法来解决)。
其实过滤器的作用还有很多这里只是简单的实现了过滤编码格式的问题,我们还可以用他控制页面的访问,等等……
这是以前做项目遇到的一个问题,现在拿出来给大家分享一下。
作者:
匿名
时间:
2011-8-12 11:42
使用Sting的getBytes()方法在什么地方使用呢,可以详细说一下吗?
作者:
匿名
时间:
2011-8-12 20:04
标题:
回复 沙发 的帖子
此过滤器只对post请求起到处理乱码的作用,如果想对get请求的参数进行乱码处理,可以写一个静态方法用来调用。方法如下:
package Filters;
import java.io.UnsupportedEncodingException;
public class doGetEncod {
public static String changeEncod(String str){
try {
str=new String(str.getBytes("ISO-8859-1"),"gbk");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return str;
}
}
值得注意的是:在处理乱码问题时,get请求和post请求是不一样的。
还有就是编码格式的设置也比较复杂,所以一定要一致,比如tomcat的配置文件server.xml的URIEncoding属性的设置,和页面编码的设置等。
作者:
匿名
时间:
2011-8-12 20:39
[url]http://blog.csdn.net/wangfayinn/article/details/6682964[/url]
此页有对乱码问题的较为详细的解决方法。
作者:
匿名
时间:
2011-8-14 14:08
自己尝试了一下,学习了,多谢。
作者:
匿名
时间:
2011-8-14 15:37
[color=Red]不客气,我们在相互学习,共同进步嘛![/color]
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2