我想在过滤器里面的url-patten里面的所有的请求都满足,除了某些之外,我应该怎样配置呢

Elim-Zhang 2010-09-09 06:59:15
我想在过滤器里面的url-patten里面的所有的请求都满足,除了某些之外,我应该怎样配置呢
我是想通过一个Filter来验证当前用户是否已登录,如果没有登录的话就转到登录页面;但是这样的话那个登录页面是不需要进行验证的,所以在url-patten里面我要把登录的那个页面除去,但我不知道应该怎样配置,请有经验的朋友们帮一下忙,谢谢了!
...全文
169 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
nvrenbumeigaga 2010-09-09
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 kaida_7 的回复:]
public class LoginFilter implements Filter {

private String filterPattern;

public void destroy() {
}

public void doFilter(ServletRequest req, ServletResponse resp,
FilterChain chain) throws……
[/Quote]
dingni
magong 2010-09-09
  • 打赏
  • 举报
回复
把需要验证过滤的页面全部放一个目录下,不需要过滤的放目录外,就好配了。
还有,
如果你过滤器中转登录页面用的是forward而不是redirect方式,则默认并不会再次被过滤,不存在什么无穷循环的问题。也就是说:对/*过滤好了,没什么大问题。
kaida_7 2010-09-09
  • 打赏
  • 举报
回复
public class LoginFilter implements Filter {

private String filterPattern;

public void destroy() {
}

public void doFilter(ServletRequest req, ServletResponse resp,
FilterChain chain) throws IOException, ServletException {

HttpServletRequest request = (HttpServletRequest)req;
HttpServletResponse response = (HttpServletResponse)resp;

//requestURI = ?
String requestURI = request.getRequestURI();

String page = requestURI.substring(request.getContextPath().length());

//判断HTTP SESSION中是否有LOGIN_ADMIN
String loginAdmin = (String)request.getSession().getAttribute("LOGIN_ADMIN");

if(page.matches(filterPattern)){

if(loginAdmin == null && !page.equals("/backend/login.jsp") && !page.equals("/backend/LoginServlet")
){
//redirect到login.jsp
response.sendRedirect(request.getContextPath()+"/backend/login.jsp");
return;
}
}
//继续向下执行
chain.doFilter(req, resp);

}

public void init(FilterConfig config) throws ServletException {
filterPattern = config.getInitParameter("filterPattern");
}

}


web.xml配置:
<filter>
<filter-name>loginFilter</filter-name>
<filter-class>cn.com.leadfar.cms.backend.view.LoginFilter</filter-class>
<init-param>
<param-name>filterPattern</param-name>
<param-value>.*Servlet|.*\.jsp</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>loginFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
duoduo6153 2010-09-09
  • 打赏
  • 举报
回复
不需要额外配置,在filter中通过request对象可以取得请求的url,如果是请求登录页面,就不用验证
yangfeihu 2010-09-09
  • 打赏
  • 举报
回复
直接在filter中写逻辑代码排除登陆页面

81,095

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧