使用过滤器验证登录重定向,该如何解决
使用过滤器验证登录重定向
小弟写了个小程序,使用过滤器验证登录重定向。
配置都配好了的,过滤器的doFilter函数也被调用了。
但是当我在浏览器中输入登录页面的时候却报404的错误。我不知道到底是哪里错误,求大神指正。
过滤器代码如下
<code>
public class CheckLoginFilter implements Filter{
public void destroy() {
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse res = (HttpServletResponse) response;
HttpSession session = req.getSession(true);
String currentURL = req.getRequestURI();//截取当前文件名用于比较
if("/LoginFilter/com/daiq/login.jsp".equals(currentURL)){
System.out.println("欢迎来到登录页面");
chain.doFilter(req, res);
}else{
//从session里取的用户名信息
String username = (String) session.getAttribute("username");
//判断如果没有取到用户信息,就跳转到登陆页面
if (username == null || "".equals(username)) {
//跳转到登陆页面
System.out.println("doing Filter");
System.out.println(currentURL);
res.sendRedirect("http://"+req.getHeader("Host")+"/LoginFilter/com/daiq/login.jsp");
}
else {
//已经登陆,继续此次请求
chain.doFilter(req,res);
}
}
}
public void init(FilterConfig arg0) throws ServletException {
}
}
<code>
------解决方案--------------------
打断点跟一下,看
再检查
一步步查看,看代码能走到哪里?
小弟写了个小程序,使用过滤器验证登录重定向。
配置都配好了的,过滤器的doFilter函数也被调用了。
但是当我在浏览器中输入登录页面的时候却报404的错误。我不知道到底是哪里错误,求大神指正。
过滤器代码如下
<code>
public class CheckLoginFilter implements Filter{
public void destroy() {
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse res = (HttpServletResponse) response;
HttpSession session = req.getSession(true);
String currentURL = req.getRequestURI();//截取当前文件名用于比较
if("/LoginFilter/com/daiq/login.jsp".equals(currentURL)){
System.out.println("欢迎来到登录页面");
chain.doFilter(req, res);
}else{
//从session里取的用户名信息
String username = (String) session.getAttribute("username");
//判断如果没有取到用户信息,就跳转到登陆页面
if (username == null || "".equals(username)) {
//跳转到登陆页面
System.out.println("doing Filter");
System.out.println(currentURL);
res.sendRedirect("http://"+req.getHeader("Host")+"/LoginFilter/com/daiq/login.jsp");
}
else {
//已经登陆,继续此次请求
chain.doFilter(req,res);
}
}
}
public void init(FilterConfig arg0) throws ServletException {
}
}
<code>
------解决方案--------------------
打断点跟一下,看
String currentURL = req.getRequestURI();获取到的currentURL是什么格式的?
再检查
if("/LoginFilter/com/daiq/login.jsp".equals(currentURL)){这个比较是否是正确的?
一步步查看,看代码能走到哪里?