java 过滤器(参数传递中文乱码)
2021/6/3 14:22:42
本文主要是介绍java 过滤器(参数传递中文乱码),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
(一)过滤器类编写。
1、设置字符集编码方式:
编写过滤器类:实现接口javax.servlet.Filter
public class CharacterEncodingFilter implements Filter { private String charset; public void destroy() { // TODO Auto-generated method stub } public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException { // TODO Auto-generated method stub request.setCharacterEncoding(charset); filterChain.doFilter(request, response); } public void init(FilterConfig config) throws ServletException { // TODO Auto-generated method stub charset = config.getInitParameter("charset"); } }
标注:
以上过滤器类只能保证post提交方式能正确解码,get方式依然会出问题。
方案1:
String username = new String(request.getParamter("userName").getBytes("ISO8859-1"),"GBK")
此方法在接受页面上能够对post和get两种方式传过来的参数userName进行正确显示,但每个参数都使用这种方式来接受会太麻烦,所以还是使用过滤器的方式比较方便。
方案2:
对于get接受参数的解决方法:修改服务器的配置文件中
修该tomcat服务器的安装目录(E:/Program Files/Apache Software Foundation/Tomcat 6.0/conf)下的server.xml
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"/>
标注:添加属性 URIEncoding="GBK" ,此方式只能解决get方式提交。
2、检测用户是否登陆的过滤器
public class CheckLoginFilter implements Filter { public void destroy() { // TODO Auto-generated method stub } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { // TODO Auto-generated method stub HttpServletRequest hsRequest = (HttpServletRequest)request; HttpServletResponse hsResponse = (HttpServletResponse)response; HttpSession session = hsRequest.getSession(); //没登录 if(session.getAttribute("userID") == null) { String uri = hsRequest.getRequestURI(); // 请求登录页面 if (uri.contains("log")||uri.contains("Log") || uri.contains("reg") || uri.contains("Reg")) { chain.doFilter(request, response); }else { // 请求其它页面 hsResponse.sendRedirect("login.jsp"); } }else { // 已登录,顺利跳转 chain.doFilter(request, response); } } public void init(FilterConfig arg0) throws ServletException { // TODO Auto-generated method stub } }
(二)配置web.xml
CharacterEncodingFilter<filter-class>cn.guopeng.bbs.filter.CharacterEncodingFilterclass>charsetGBKCharacterEncodingFilter/*CheckLoginFiltercn.guopeng.bbs.filter.CheckLoginFilterCheckLoginFilter/*
标注:
(1)想过滤多个页面并且不全部过滤,
如果过滤或不过滤的地址比较有规律可以配置为全部过滤,然后在过滤器中编写代码只过滤一部分,其他的直接请求即可。
如果规律不明显,则只能通过web.xml配置,可以为过滤类写多个
(2)web.xml 中如果有servlet的配置信息, 那么filter应该在servlet的下面进行配置。
这篇关于java 过滤器(参数传递中文乱码)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南