filter过滤器配置如何不过滤一些页面

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了filter过滤器配置如何不过滤一些页面相关的知识,希望对你有一定的参考价值。

我有几十个.jsp文件其中有3(aaa.jsp;bbb.jsp;ccc.jsp)个不想通过过滤器,其他的都要经过过滤,不知道如何配置?
因为/*就是全部过滤了,welcome标签又只能添一个页面
logservlet 要得到 log.jsp页面上输入的用户名和密码,然后logservlet判断用户名和密码是否正确,如正确则登陆系统。

我想问就这个过程如何避开过滤器,而且还要将其他的jsp文件如pro.jsp;aa.jsp等jsp文件经过过滤器,因为这些jsp文件是要用户登录后才可访问的,不是用户不能看到它们。

一般我的方法是
判断uri的是不是这三个
如果是这三个,不做处理,直接直接 下一步
=================
唉,直接给你看源码吧
在doFilter方法里写上
String contextPath = InitObjects.getContextPath();
HttpServletRequest httpServletRequest = (HttpServletRequest) request;
//获得用户请求的uri
String uri = httpServletRequest.getRequestURI();

//eccludedPages是个List,存放着比如index.jsp,error.jsp等不需要过滤的页面
if (!excludedPages.contains(uri))



filterChain.doFilter(request, response);
参考技术A 如果你不想过滤某些页面,太好的方法我也不知道。你可以这样做:
除了不想过滤的页面,其余的都过滤配置到web.xml中。
过滤指定页面:
<filter>
<filter-name>LogonFilter</filter-name>
<filter-class>com.syict.lupeng.filter.LogonFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>LogonFilter</filter-name>
//过滤import.jsp
<url-pattern>/import.jsp</url-pattern>
</filter-mapping>

<filter-mapping>
<filter-name>LogonFilter</filter-name>
//过滤query.jsp
<url-pattern>/query.jsp</url-pattern>
</filter-mapping>
</filter>
也就是把要过滤的都配置上去,页面多,配置的就要多。
参考技术B 在你 的 web.xml 文件 里看看配置

如果是这样
filter/*
可以尝试 把你的3个文件放到另一个包里

java 包的概念就是文件夹
参考技术C 直接添加多个文件映射啊,为每个需要进行过滤的文件都写个映射标签

Filter过滤器,xml配置与页面不乱码整理

1.xml配置

技术分享
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>filter</display-name>
  <filter>
    <filter-name>filter01</filter-name>
    <filter-class>com.myfilter.Filter01</filter-class>
    <init-param>
      <param-name>code</param-name>
      <param-value>utf-8</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>filter01</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
  
  <filter>
    <filter-name>filter02</filter-name>
    <filter-class>com.myfilter.Filter02</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>filter02</filter-name>
    <url-pattern>/pages/mainFilter.jsp</url-pattern>
  </filter-mapping>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
</web-app>
web.xml


2.过滤器1解析字符编码

技术分享
/**
 * 
 */
package com.myfilter;

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;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.lang3.StringUtils;


/**
 * @author Administrator
 *
 */
public class Filter01 implements Filter
{
    private String encoding=null;
    @Override
    public void destroy()
    {
        
    }
    
    @Override
    public void doFilter(ServletRequest arg0, ServletResponse arg1,
            FilterChain arg2) throws IOException, ServletException
    {
        HttpServletRequest request=(HttpServletRequest)arg0;
        HttpServletResponse response=(HttpServletResponse)arg1;
        request.setCharacterEncoding(encoding);
        response.setCharacterEncoding(encoding);
        response.setContentType("text/html charset="+encoding);
        arg2.doFilter(request, response);
        System.out.println(encoding);
    }

    @Override
    public void init(FilterConfig arg0) throws ServletException
    {
        String ww=arg0.getInitParameter("code");
        if(StringUtils.isNoneBlank(ww))
        {            
            encoding=ww;
        }
    }

}
Filter01.java


3.过滤器2

技术分享
package com.myfilter;

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 Filter02 implements Filter
{

    @Override
    public void destroy()
    {
        // TODO Auto-generated method stub

    }

    @Override
    public void doFilter(ServletRequest arg0, ServletResponse arg1,
            FilterChain arg2) throws IOException, ServletException
    {
        System.out.println("第二个过滤器----00001");
        arg2.doFilter(arg0, arg1);
        System.out.println("第二个过滤器----00002");
    }

    @Override
    public void init(FilterConfig arg0) throws ServletException
    {
        System.out.println("02");
    }

}
Filter02.java

 



以上是关于filter过滤器配置如何不过滤一些页面的主要内容,如果未能解决你的问题,请参考以下文章

java过滤器不过滤某个货某一些路径

过滤器

servlet和jsp页面过滤器Filter的作用及配置

Spring中过滤器+监听器的使用

配置登录过滤器

过滤器Filter