spring-mvc入门(三):映射处理器

发表于:2011-3-21 09:34

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:86asm(JavaEye)    来源:51Testing软件测试网采编

  步骤三:编写拦截器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;   
  •     //省略getter/setter方法  
  • }
  • 43/4<1234>
    《2023软件测试行业现状调查报告》独家发布~

    关注51Testing

    联系我们

    快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

    法律顾问:上海兰迪律师事务所 项棋律师
    版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
    投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

    沪ICP备05003035号

    沪公网安备 31010102002173号