filter过滤器设置URL例外

来源:互联网 发布:ringdivas 淘宝 编辑:程序博客网 时间:2024/05/01 04:32

web.xml声明的一个filter中:

 

<!– session过滤filter –><filter><filter-name>SessionFilter</filter-name><filter-class>com.iqbon.jcms.web.util.SessionFilter</filter-class><init-param><param-name>excludedPages</param-name><param-value>/admin/login.do</param-value></init-param></filter><filter-mapping><filter-name>SessionFilter</filter-name><url-pattern>/admin/*</url-pattern></filter-mapping>


可以看到url-pattern的设置里面过滤的url规则是/admin/*,如果要把/admin/login.do排除在过滤url之外。

可以结合init-param的初始化参数和HttpServletRequestgetServletPath()方法来判断。


<init-param>   <param-name>excludedPages</param-name>   <param-value>/admin/login.do</param-value>   </init-param>   

其次在filterjava代码中加上判断:

 

import java.io.IOException;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;importjavax.servlet.ServletRequest;importjavax.servlet.ServletResponse;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importjavax.servlet.http.HttpSession;importorg.apache.commons.lang3.StringUtils;importcom.iqbon.jcms.util.KeyConstant;/*** session过滤器*/public class SessionFilter implementsFilter {/*** 需要排除的页面*/private String excludedPages;private String[] excludedPageArray;/*** @see Filter#destroy()*/public void destroy() {return;}/*** 对session进行判断当前访问是否有登录*/public void doFilter(ServletRequestrequest, ServletResponse response, FilterChain chain) throws IOException,ServletException {boolean isExcludedPage = false;for (String page : excludedPageArray) { //判断是否在过滤url之外if(((HttpServletRequest)request).getServletPath().equals(page)) {isExcludedPage = true;break;}}if (isExcludedPage) {//在过滤url之外chain.doFilter(request, response);} else {//不在过滤url之外,判断session是否存在HttpSession session =((HttpServletRequest) request).getSession();if (session == null ||session.getAttribute(KeyConstant.SESSION_KEY_USER) == null) {((HttpServletResponse)response).sendRedirect(“/login.htm”);} else {chain.doFilter(request, response);}}}/*** 初始化函数,获取需要排除在外的url*/public void init(FilterConfig fConfig)throws ServletException {excludedPages =fConfig.getInitParameter(“excludedPages”);if(StringUtils.isNotEmpty(excludedPages)) {excludedPageArray =excludedPages.split(“,”);}return;}}

0 0
原创粉丝点击