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>
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; } } }
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"); } }
以上是关于filter过滤器配置如何不过滤一些页面的主要内容,如果未能解决你的问题,请参考以下文章