问个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