没使用过滤器时只是中文乱码,使用过滤器后出现:HTTP Status 404 - /P04/servlet/DealWithServlet无法找到指定位置的资源,第一次学习过滤器,望知道的大神指点……
表单:
                                       filterForm.jsp
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<html>
  <body>
    <form action="servlet/DealWithServlet" method="post">
     请输入学生名字:<input type="text" name="stuname">
     <input type="submit" value="提交">
    </form>
  </body>
</html>servlet处理:
                                         DealWithServlet.java
package servlet;import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;public class DealWithServlet extends HttpServlet {
public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException {
doPost(request,response);
}
public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException {
String stuname = request.getParameter("stuname");
System.out.println("姓名: " + stuname);

}
}过滤器:
                             EncodingFilter.java
package filter;
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;public class EncodingFilter implements Filter {
public void destroy() {}

public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {
arg0.setCharacterEncoding("gb2312");
}
public void init(FilterConfig arg0) throws ServletException {}
}                               web.xml
<filter>
   <filter-name>EncodingFilter</filter-name>
   <filter-class>filter.EncodingFilter</filter-class>
  </filter>
  <filter-mapping>
   <filter-name>EncodingFile</filter-name>
   <url-pattern>/*</url-pattern>
  </filter-mapping> http://my.csdn.net/my/album/detail/1249606#1249606

解决方案 »

  1.   

    楼主您好,我觉得应该是路径不对,您可以试一试"servlet/DealWithServlet"中去掉servlet把路径改为
    /DealWithServlet这个,还有一个我认为web里应该设置个变量 charset value GBK,个人意见希望对楼主有用 谢谢
      

  2.   

    1:楼主路径配置的是<url-pattern>/*</url-pattern>
    所以请求路径可以改为/servlet/DealWithServlet 或者/DealWithServlet 2:public void doFilter(ServletRequest arg0, ServletResponse arg1,
     FilterChain arg2) throws IOException, ServletException {
     arg0.setCharacterEncoding("gb2312");
     }应该加上一句:arg2.doFilter(request, response);//使程序继续执行