你可以配置某些页面不做过滤嘛,增加ignoreURL参数,在里面加上你无需过滤的页面(登录页面)
*.LoginFilter
然后在过滤器里面这样处理:
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来显示页面的