我配置了一个简单的“编码”过滤器如下:
public class EncodeFilter implements Filter  {
private FilterConfig config;

public void init(FilterConfig config)
{
this.config=config;
}

public void destroy()
{
this.config=null;
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
// TODO Auto-generated method stub
HttpServletRequest res=(HttpServletRequest)request;
System.out.println(res.getServletPath());

request.setCharacterEncoding("utf-8");
chain.doFilter(request,response);
response.setCharacterEncoding("utf-8");
}}XML配置文件如下:
  <!-- 配置编码拦截器 -->
  <filter>
    <filter-name>MyFilter</filter-name>
    <filter-class>com.padragon.ManagementSystem.Util.EncodeFilter</filter-class>
  </filter>
  
  <filter-mapping>
    <filter-name>MyFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>但是当我开始浏览login.jsp页面时,控制台打印出如下信息:
/admin/login.jsp
/admin/images/Default.css
/admin/images/xtree.css
/admin/images/user_botton.gif
/admin/images/User_Login.css
/admin/images/user_all_bg.gif
/admin/images/user_top_l.gif
/admin/images/user_top_c.gif
/admin/images/user_top_r.gif
/admin/images/user_main_l.gif
/admin/images/user_main_c.gif
/admin/images/user_main_r.gif
/admin/images/user_bottom_l.gif
/admin/images/user_bottom_c.gif
/admin/images/user_bottom_r.gif
/admin/images/user_login_name.gif
/admin/images/user_login_password.gif

红色信息都是我login.jsp页面里关于CSS或者图片的链接,这就意味着我login.jsp页面里的链接又重新提交到了这个filter里一遍?求高手解答

解决方案 »

  1.   

    不是又提交了,是对请求都过滤了
    <url-pattern>/*</url-pattern>
    过滤所有请求
    不如改成*.jsp
      

  2.   

    是的.你看浏览器 browser是多线程的.每个图片要重新开线程下载
    相当于http的request
      

  3.   

    很好,很强大。二楼也很强啊。不过我还想知道为什么楼主的过滤链要写在response.setCharacterEncoding("utf-8");的前面??