黑马程序员技术交流社区

标题: 求教关于filter过滤器解决中文乱码问题 [打印本页]

作者: 归☆夜↑『    时间: 2013-5-28 19:12
标题: 求教关于filter过滤器解决中文乱码问题
话说filter可以对工程下所有的资源进行过滤,对数据做些预处理,如编码,可是最近在做strtuts2框架的一个小实验的时候发现filter“罢工”不起作用了,中文乱码不预期地跑出来了,!!这是何解啊??求教各位~~下面贴出有关代码
下面是我提交数据的JSP页面的主要代码
  1. <h2>用户登陆</h2>
  2.   <struts:form action="login" method="post">
  3.   <struts:textfield name="userName" label="账号"/>
  4.   <struts:password name="userPsw" label="密码"/>
  5.   <struts:submit value="登陆"/>
  6.   </struts:form>
  7.   </center>
  8.   </body>
  9. </html>
复制代码
下面是我的过滤器filter的代码
  1. package filter;
  2. import java.io.IOException;
  3. import javax.servlet.Filter;
  4. import javax.servlet.FilterChain;
  5. import javax.servlet.FilterConfig;
  6. import javax.servlet.ServletException;
  7. import javax.servlet.ServletRequest;
  8. import javax.servlet.ServletResponse;

  9. public class EncodingFilter implements Filter {
  10.         public EncodingFilter() {
  11. System.out.println("struts2.0EncodingFilter实例化……");               
  12.         }

  13.         public void destroy() {
  14.                 // TODO Auto-generated method stub

  15.         }

  16.         public void doFilter(ServletRequest request, ServletResponse response,
  17.                         FilterChain chain) throws IOException, ServletException {
  18.                 // TODO Auto-generated method stub
  19. System.out.println("struts2.0EncodingFilter过滤动作……");               
  20.                 request.setCharacterEncoding("gb2312");
  21.                 chain.doFilter(request, response);

  22.         }

  23.         public void init(FilterConfig arg0) throws ServletException {
  24.                 // TODO Auto-generated method stub
  25. System.out.println("struts2.0EncodingFilter初始化……");
  26.         }

  27. }
复制代码
下面是处理数据的action
  1. package action;

  2. import com.opensymphony.xwork2.ActionSupport;

  3. public class LoginAction extends ActionSupport {
  4.        
  5.         private static final long serialVersionUID = 1L;
  6.         private String userName;
  7.         private String userPsw;
  8.        
  9.         public String getUserName() {
  10.                 return this.userName;
  11.         }
  12.         public void setUserName(String userName) {
  13.                 this.userName = userName;
  14.         }
  15.         public String getUserPsw() {
  16.                 return this.userPsw;
  17.         }
  18.         public void setUserPsw(String userPsw) {
  19.                 this.userPsw = userPsw;
  20.         }
  21.        
  22.         public String execute() throws Exception {
  23.                 if(getUserPsw().equals("123")) {//只要密码是123就可以登录成功
  24.                         return SUCCESS;
  25.                 }
  26.                 else return ERROR;
  27.         }
  28. }
复制代码
下面是登录陆成功success.jsp页面主要代码
  1. <body>
  2.     <center>
  3.     <h2>欢迎登陆</h2>

  4.     当前用户:<struts:property value="userName"/>
  5.     </center>
  6.   </body>
复制代码
下面是struts2的配置文件的主要代码
  1. <package name="test"   extends="struts-default">
  2.         <action name="register" class="action.RegisterAction">
  3. <action name="login" class="action.LoginAction">
  4.         <result name="success">/success.jsp</result>
  5.         </action>
  6.     </package>
复制代码
下面是web.xml配置文件的代码
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  4. <filter>
  5.   <filter-name>struts2</filter-name>
  6.   <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
  7. </filter>
  8. <filter>
  9.   <filter-name>encodingFilter</filter-name>
  10.   <filter-class>filter.EncodingFilter</filter-class>
  11. </filter>
  12. <filter-mapping>
  13.   <filter-name>struts2</filter-name>
  14.   <url-pattern>/*</url-pattern>
  15. </filter-mapping>
  16. <filter-mapping>
  17.   <filter-name>encodingFilter</filter-name>
  18.   <url-pattern>/*</url-pattern>
  19. </filter-mapping>
  20. <welcome-file-list>
  21.   <welcome-file>index.jsp</welcome-file>
  22. </welcome-file-list>
  23. <login-config>
  24.   <auth-method>BASIC</auth-method>
  25. </login-config>
  26. </web-app>
复制代码
随便输入几个中文字符,密码123
登录成功页面就给我这个了:
欢迎登陆
当前用户:???
我的filter有什么问题呢!!!!!!!!!!!!!?请各位指点!!!!








欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2