servlet filter 控制页面访问

2024-11-08 09:34:31
有1个网友回答
网友(1):

你可以配置某些页面不做过滤嘛,增加ignoreURL参数,在里面加上你无需过滤的页面(登录页面)

loginCheck

*.LoginFilter


ignoreURL
/login.do,/logon.jsp


然后在过滤器里面这样处理:
public class LoginFilter implements Filter{

protected FilterConfig ftConfig;
protected String ignoreURL = null;
protected ArrayList alIgnoreURL = new ArrayList();

public void init(FilterConfig filterConfig) throws ServletException {
// TODO 自动生成方法存根
this.ftConfig=filterConfig;
this.ignoreURL = ftConfig.getInitParameter("ignoreURL");
StringTokenizer tokenizer = new StringTokenizer(ignoreURL, ",");
while (tokenizer.hasMoreElements()) {
alIgnoreURL.add(tokenizer.nextElement().toString());
}

}
doFilter方法:
String requestUrl=httpRequest.getRequestURI();
if (!isIgnoreURL(requestUrl, httpRequest.getContextPath() + java.io.File.pathSeparator))才做过滤
isIgnoreURL方法:
public boolean isIgnoreURL(String url, String contextPath) {
for (int i = 0; i < this.alIgnoreURL.size(); i++) {
if (url.indexOf((String) this.alIgnoreURL.get(i)) != -1) {
return true;
}
if (url.equals(contextPath + "/")) {
return true;
}
}
return false;
}

就算你都是用iframe来显示页面,但总有提交到页面的请求吧,把例外的请求加入到ignoreURL中就可以,不管是jsp或了html或.do都可以加进去。顺便说一句,我现在的系统实现跟你说的一样,都是用iframe加frameset来显示页面的