步骤三:编写拦截器LoginTimeInterceptor.java,主要代码如下:
Java代码
package com.asm;
public class LoginTimeInterceptor extends HandlerInterceptorAdapter {
private int startTime;
private int endTime;
public void setStartTime(int startTime) {
this.startTime = startTime;
}
public void setEndTime(int endTime) {
this.endTime = endTime;
}
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler,
Exception ex) throws Exception {
System.out.println("执行afterCompletion方法-->03");
super.afterCompletion(request, response, handler, ex);
}
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
System.out.println("执行postHandle方法-->02");
super.postHandle(request, response, handler, modelAndView);
}
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
System.out.println("执行preHandle方法-->01");
Calendar cal = Calendar.getInstance();
int hour = cal.get(Calendar.HOUR_OF_DAY);
if (startTime <= hour && hour < endTime) {
return true;
} else {
response.sendRedirect("http://www.javaeye.com");
return false;
}
}
} |
说明:此拦截器作用:如果用户没有在6-18点登录,则重定向到javaeye站点
(1)拦截器必须HandlerInterceptorAdapter接口
(2)preHandle方法在后端控制器执行前被调用,postHandle方法在后端控制器执行后被调用;afterCompletion方法在整个请求处理完成后被调用。
(3) preHandle方法:返回true,映射处理器执行链将继续执行;当返回false时,DispatcherServlet处理器认为拦截器已经处理完了请求,而不继续执行执行链中的其它拦截器和处理器。它的API文档解释如下:true if the execution chain should proceed with the next interceptor or the handler itself. Else, DispatcherServlet assumes that this interceptor has already dealt with the response itself.
(4)这三个方法都是相同的参数,Object handler参数可以转化成一个后端控制器对象,比如这里可以转换成UserController对象。
步骤四:完成其它相关代码的编写User
java代码
package com.asm;
public class User {
private String username;
private String password;
} |