拦截未登录的用户。
项目结构:
web.xml
springmvc
org.springframework.web.servlet.DispatcherServlet
springmvc
*.do
index.jsp
拦截器配置:
拦截器编写:public class LoginInterceptor implements HandlerInterceptor {
//Handler执行完成之前调用这个方法
@Override
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Object handler) throws Exception {
//获取Session
HttpSession session = request.getSession();
String username = (String)session.getAttribute("username");
//System.out.println(username == null);
if(username == null){
System.out.println("尚未登陆");
response.sendRedirect("/index.jsp");
return false;
}
return true;
}
//Handler执行之后,ModelAndView返回之前调用这个方法
@Override
public void postHandle(HttpServletRequest request,
HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
// TODO Auto-generated method stub
}
//Handler执行完成之后调用这个方法
@Override
public void afterCompletion(HttpServletRequest request,
HttpServletResponse response, Object handler, Exception ex)
throws Exception {
// TODO Auto-generated method stub
}
}
controller:@RequestMapping(value = "/login.do", method = RequestMethod.POST)
public @ResponseBody
Map login(HttpServletRequest request) throws IOException {
UserDao udao = new UserDaoImpl();
User user = new User();
String username = request.getParameter("username");
user.setUsername(username);
user.setPassword(request.getParameter("password"));
List ans = udao.queryUser(user);
Map map = new HashMap();
HttpSession session = request.getSession();
// 密码正确
if (ans.size() > 0) {
map.put("msg", "yes");
session.setAttribute("username",username);
} else {
map.put("msg", "no");
}
return map;
}
后台能够输出 尚未登陆这句话,但是response.sendRedirect("/index.jsp");好像没执行,反正就拦截了没效果,能进去bank下的页面,但是里面的ajax请求确拦截了。。这 到底是怎么回事