日期:2014-05-18  浏览次数:20728 次

问个filter问题
我用一个filter来过滤用户登陆的session是否为空,如果为空就自动跳转到登陆页面。

我把所有的页面都放在了index目录下,在filter的xml配置里这样写
<url-pattern> /index/* </url-pattern>   然后得到了我要的结果。

但我现在要index目录中的某一个页面home.jsp不被filter过滤,其他页面被filter过滤,应该怎样写呢?


------解决方案--------------------
你还是把home.jsp放到index目录外边吧!
------解决方案--------------------
filter可以配置参数,
你可以配置一个参数叫exclusion,中间用逗号隔开,记录在里面的路径,虽然进入了filter,但是不做处理

比如
<filter>
.....
<init-param>
<param-name> exclusions </param-name>
<param-value> /, /index.jsp, /login.do, /logout.do, /test.jsp </param-value>
</init-param>
</filter>

filter

public class MyFilter implements Filter {
Set exclusions;
public void init(FilterConfig filterConfig) throws ServletException {
super.init(filterConfig);
String exclu = filterConfig.getInitParameter( "exclusions ");
exclusions = new HashSet();
// split operations
}

public void doFilter(ServletRequest request,
ServletResponse response,
FilterChain chain) throws IOException, ServletException {

HttpServletRequest httpRequest = (HttpServletRequest) request;
HttpServletResponse httpResponse = (HttpServletResponse) response;

if (!exclusions.contains(httpRequest.getServletPath())) {
// 原来的操作
}
}
------解决方案--------------------
如果只是一个请求是例外,那么可以在filter里判断请求地址
------解决方案--------------------
楼上的楼上正解.
不过最好还是按目录分开过滤和不过滤的页面.
------解决方案--------------------
2樓和3樓的都可以解決你的問題
------解决方案--------------------
mark