Controller:
/*10 用户验证 */
@RequestMapping("/login.action")
public String login(HttpSession session,HttpServletResponse res , User u) {
System.out.println("收到了用户:"+u);
String username = u.getU_username();
session.setAttribute("username", username);
//设置会话时间
Cookie cookie = new Cookie("JSESSIONID", session.getId());
cookie.setMaxAge(30);
res.addCookie(cookie);
return "redirect:/studentList.action";
}
Interceptor:
public class MyInterceptor01 implements HandlerInterceptor {
// controller执行后且视图返回后调用此方法
// 这里可得到执行controller时的异常信息
// 这里可记录操作日志
@Override
public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)
throws Exception {
System.out.println("HandlerInterceptor1....afterCompletion");
}
// controller执行后但未返回视图前调用此方法
// 这里可在返回用户前对模型数据进行加工处理,比如这里加入公用信息以便页面显示
@Override
public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)
throws Exception {
System.out.println("HandlerInterceptor1....postHandle");
}
// Controller执行前调用此方法
// 返回true表示继续执行,返回false中止执行
// 这里可以加入登录校验、权限拦截等
@Override
public boolean preHandle(HttpServletRequest req, HttpServletResponse res, Object arg2) throws Exception {
System.out.println("用户登录拦截器");
HttpSession session = req.getSession();
Object username = session.getAttribute("username");
System.out.println("用户名:"+username);
if (username != null) {
System.out.println(username);
return true; //如果session不为空就放行
} else {
res.sendRedirect(req.getContextPath()+"/toLogin");
}
return false;
}
}
springmvc.xml
<!-- 配置拦截器 -->
<mvc:interceptors>
<mvc:interceptor>
<!-- 所有的请求都进入拦截器 -->
<mvc:mapping path="/studentList.action" />
<!-- 配置具体的拦截器 -->
<bean class="com.itrucheng.interceptor.MyInterceptor01" />
</mvc:interceptor>
<mvc:interceptor>
<!-- 所有的请求都进入拦截器 -->
<mvc:mapping path="/**" />
<!-- 配置具体的拦截器 -->
<bean class="com.itrucheng.interceptor.MyInterceptor02" />
</mvc:interceptor>
</mvc:interceptors>
```