精华内容
下载资源
问答
  • 主要介绍了SpringMvc自定义拦截器(注解)代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • SpringMVC自定义拦截器

    2018-10-23 14:24:47
    SpringMVC可以使用拦截器对请求进行拦截处理,用户可以自定义拦截器来实现特定的功能,自定义的拦截器必须实现HandlderInterceptor接口 boolean preHandle();这个方法在业务处理器处理请求之前被调用,在该方法...

    SpringMVC可以使用拦截器对请求进行拦截处理,用户可以自定义拦截器来实现特定的功能,自定义的拦截器必须实现HandlderInterceptor接口

    • boolean preHandle();这个方法在业务处理器处理请求之前被调用,在该方法中对用户请求request进行处理,如果ture,可以继续进行其他业务方法,如果false时,不需要处理接下来的业务方法
      -postHandle()这个方法在业务方法处理完请求后,但是DispatcherServlet向客户端返回响应前被调用,该方法中对用户请求request进行处理
      -afterCompletion(),这个方法在DispatcherServlet完全处理完请求后被调用,可以在该方法中进行一些资源清理的操作。
      举例:
      如果当前时间9-17点之间,可以访问当前页面
      在Java类中加入MyInterceptor类

    public classs MyInterceptor implements HandlerIntercepter{
    //调用业务方法或者下一个拦截器之前需要执行的方法,如果返回值为ture则继续执行下一个业务方法或者拦截器,否则,不要向下执行

    boolean preHandle(HttpServletRequest request,HttpServletResponse response,Object handler){
    Date date=new Date();
    int hour=date.getHours();
    if(hour>=9&&hour<=17){
    return true;
    }else{
    response.sendRedirect("error");
    return false;
    }
    }
    //调用业务方法结束之后,在渲染视图之前
    postHandle();
    //渲染视图之后要调用的方法
    afterCompletion()
    }
    

    在springmvc.xml中配置拦截器

    <mvc:interceptors>
    <mvc:interceptor>
    <mvc:mapping path="/toFormat"/>//拦截资源的设定,如果没有mapping就是拦截所有的请求
    <bean id="MyInterceptor" class="MyInterceptor包的全路径“”
    </mvc:interceptor>
    </mvc:interceptors>
    

    注:自定义拦截器使用流程:
    1.自定义的拦截器类:实现handlerInceptor的方法
    2.在springmvc.xml中进行mvc:interceptors-mvc:interceptor-mvc:mapping

    展开全文
  • 主要介绍了SpringMVC自定义拦截器实现过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • SpringMvc自定义拦截器(注解) 自定义拦截器实现HandlerInterceptor接口的三个方法。 public class MyInterceptor implements HandlerInterceptor{ @Override public boolean preHandle(HttpServletRequest ...

    SpringMvc自定义拦截器(注解)

    自定义拦截器实现HandlerInterceptor接口的三个方法。

    public class MyInterceptor implements HandlerInterceptor{
        @Override
        public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
            //拦截内容
            
            //放行
            return true;
        }
    
        @Override
        public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
            //请求来时执行
        }
    
        @Override
        public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
            //响应来时执行
        }
    }
    

    springmvc配置文件

    //将拦截器放入mvc容器中
        @Bean
        public MyInterceptor myInterceptor(){
            return new MyInterceptor();
        }
    //添加拦截器,并配置拦截路径
        @Override
        public void addInterceptors(InterceptorRegistry registry) {
            //配置拦截器
            registry.addInterceptor(myInterceptor()).addPathPatterns("/**");
        }
    
    展开全文
  • springmvc自定义拦截器的实现步骤

    千次阅读 2019-10-24 16:12:58
    一、自定义类 1.1:继承HandlerInterceptorAdapter这个抽象类 MyInterceptorextends HandlerInterceptorAdapter 1.2:实现HandlerInterceptor这个接口 MyInterceptorimplementsHandlerInterceptor ...

     

    一、自定义类

        1.1: 继承HandlerInterceptorAdapter这个抽象类

            MyInterceptor extends HandlerInterceptorAdapter

        1.2:实现HandlerInterceptor这个接口

            MyInterceptor implements HandlerInterceptor

     

        1.3:不管你使用的是上面的哪种方式,必须重写三个方法

            

              afterCompletion():当跳转完页面之后执行,也就是请求已经通过view跳转到了前台页面

              postHandle():当请求已经进入了控制层,但是还没有跳转页面,这个时候会执行

              preHandle():当请求进入控制层之前会执行

                                       当该方法返回true的时候,继续执行;返回false的时候,直接请求结束

     

    二、配置文件

            在spring-mvc的配置文件中加入这一段配置

       <!-- 配置自定义拦截器 -->

        <mvc:interceptors>

            <!--配置拦截器, 多个拦截器,顺序执行 -->

            <mvc:interceptor>

                <!-- 匹配的是url路径, 如果不配置或/**,将拦截所有的Controller,所有的path路径必须以斜线(/)开头,否则拦不住 -->

                <!-- <mvc:mapping path="/" />

                <mvc:mapping path="/user/**" />

                <mvc:mapping path="/test/**" /> -->

                <mvc:mapping path="/*.do" />

                <!-- 加载的是自定义拦截器的包名、类名 -->

                <bean class="common.interceptor.MyInterceptor"></bean>

            </mvc:interceptor>

            <!-- 当设置多个拦截器时,先按顺序调用preHandle方法,然后逆序调用每个拦截器的postHandle和afterCompletion方法 -->

        </mvc:interceptors>

     

     

     

     

     

     

     

    展开全文
  • 文档内有springmvc拦截器的配置
  • 版权声明:本文转自: ... ssm框架在当今项目中是比较常用的,而我们也经常需要用到拦截器做资源和权限管理,譬如登陆拦截等等,最近几天领导要求我用拦截器做一个操作日志的记录,下面我给大家分...
    版权声明:本文转自: https://blog.csdn.net/byy8023/article/details/79014228

    ssm框架在当今项目中是比较常用的,而我们也经常需要用到拦截器做资源和权限管理,譬如登陆拦截等等,最近几天领导要求我用拦截器做一个操作日志的记录,下面我给大家分享一下我的代码以及心得。

       SpringMVC的拦截器HandlerInterceptorAdapter对应提供了三个preHandle,postHandle,afterCompletion方法。preHandle在业务处理器处理请求之前被调用,
        postHandle在业务处理器处理请求执行完成后,生成视图之前执行,afterCompletion在DispatcherServlet完全处理完请求后被调用,可用于清理资源等 。所以要想实现自己的权限管理逻辑,需要继承HandlerInterceptorAdapter并重写其三个方法。
    (1)   首先我们要注册拦截器并书写拦截

    @Bean
    public GlobalInterceptor globalInterceptor(){
       return new GlobalInterceptor();
    }
    @Bean
    public InsuranceLoginterceptor insuranceLoginterceptor(){
       return  new InsuranceLoginterceptor();
    }
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
       registry.addInterceptor(globalInterceptor()).addPathPatterns("/**").excludePathPatterns("/api/**").excludePathPatterns("/staitc/**");
      registry.addInterceptor(insuranceLoginterceptor()).addPathPatterns("/api/yingu/insurance/updateInsuranceEmpNum");
       super.addInterceptors(registry);
    }
    (2)实现HandlerInterceptorAdapter自定义拦截器,并重写方法

    @Override
    public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {
        log.info("进入调单方法controller层之前");
        String insuranceId = httpServletRequest.getParameter("insuranceId");
        try {
            FanHuaBack fanHuaBackOld = insureListService.getinsure(insuranceId);
            String oldData = JSON.toJSONString(fanHuaBackOld);
            httpServletRequest.setAttribute("dataBefore", oldData);
            super.preHandle(httpServletRequest,httpServletResponse,o);
        } catch (Exception e) {
            log.error("车险投保信息查询异常", e.getMessage());
        } finally {
            return true;
        }
    

    }

    @Override
    public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {
    log.info(“进入调单方法controller层之后-----------日志记录开始”);
    InsuranceOperatLog insuranceOperatLog = new InsuranceOperatLog();
    int status = 0;
    try {
    String requestURI = httpServletRequest.getRequestURI();
    String insuranceId = httpServletRequest.getParameter(“insuranceId”);
    String empNo = httpServletRequest.getParameter(“empNo”);
    String empName = httpServletRequest.getParameter(“empName”);
    int opeStatus = (int) httpServletRequest.getAttribute(“status”);
    FanHuaBack fanHuaBackNew = insureListService.getinsure(insuranceId);
    String newData = JSON.toJSONString(fanHuaBackNew);
    String oldData = (String) httpServletRequest.getAttribute(“dataBefore”);
    Map<String, String> map = new HashMap<>();
    map.put(“empNum”, empNo);
    map.put(“empName”, empName);
    map.put(“insuranceId”, insuranceId);
    String reqObj = JSON.toJSONString(map);
    insuranceOperatLog.setInsuranceId(insuranceId);
    insuranceOperatLog.setCreateTime(DateUtil.format(new Date(), DateUtil.Formatter.yyyyMMddHHmmss));
    insuranceOperatLog.setDataBefore(oldData);
    insuranceOperatLog.setDataAfter(newData);
    insuranceOperatLog.setReq_json(reqObj);
    insuranceOperatLog.setReq_url(requestURI);
    insuranceOperatLog.setOperatorType(“调单”);
    insuranceOperatLog.setStatus(opeStatus == 1 ? “成功” : “失败”);
    SysUser sysUser = (SysUser) SecurityUtils.getSubject().getPrincipal();
    if (sysUser != null) {
    insuranceOperatLog.setOperatorName(sysUser.getLoginName());
    insuranceOperatLog.setOperatorNo(sysUser.getUserNo());
    }
    insuranceOperatRepository.save(insuranceOperatLog);
    super.postHandle(httpServletRequest,httpServletResponse,o,modelAndView);
    } catch (Exception ex) {
    log.error(“调单操作异常日志保存异常{}”, ex.getMessage());
    }
    log.info(“调单操作日志记录结束{}”);
    }

    @Override
    public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {

    }
    (3)preHandle()方法在业务处理器处理请求之前被调用  如果返回false  从当前的拦截器往回执行所有拦截器的afterCompletion(),再退出拦截器链 如果返回true   执行下一个拦截器,直到所有的拦截器都执行完毕   再执行被拦截的Controller   然后进入拦截器链,  从最后一个拦截器往回执行所有的postHandle()  接着再从最后一个拦截器往回执行所有的afterCompletion()  ;postHandle()在业务处理器处理请求执行完成后,生成视图之前执行的动作 可在modelAndView中加入数据,比如当前时间 ;afterCompletion()方法在DispatcherServlet完全处理完请求后被调用,可用于清理资源等
    当有拦截器抛出异常时,会从当前拦截器往回执行所有的拦截器的afterCompletion()  。

    展开全文
  •      **"/>  <bean class="com.core.message.LoginInterceptor"></bean>   ...按拦截器定义顺序调用 认证和...在拦截器链内所有拦截器返成功调用 afterCompletion 只有 preHandle 返回 true 才调用  
  • 1.DispatcherServlet  SpringMVC具有统一的入口DispatcherServlet,所有的请求都...拦截匹配的请求,Servlet拦截匹配规则要自已定义,把拦截下来的请求,依据某某规则分发到目标Controller来处理。 所以我们现在w
  • SpringMvc自定义拦截器

    2021-05-28 07:52:03
    首先在SpringMvc.xml中加入自己定义的拦截器//拦截改路径的url请求2.任何访问我定义拦截的url都会返回登录页面package com.usermanage.util;import javax.servlet.http.HttpServletRequest;import javax.servlet....
  • springmvc自定义拦截器

    2021-03-16 21:46:33
    Spring MVC也可以使用拦截器对请求进行拦截处理,用户可以自定义拦截器来实现特定的功能,自定义的拦截器必须实现HandlerInterceptor接口。直接看下例子:package com.ztz.springmvc.interceptor;import javax....
  • 自定义SpringMVC自定义拦截器详解

    千次阅读 2016-10-09 10:51:06
    perHandle()是在处理请求之前调用的, 如果返回true ,执行下一个拦截器,直到所有的拦截器都执行完毕 再执行被拦截的Controller 然后进入拦截器链, 从最后一个拦截器往回执行所有的postHandle()
  • 新建拦截器实现HandlerInterceptor 接口,实现三个方法,一般只用第一个就好。 public class AuthorInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest ...
  • SpringMVC 自定义拦截器

    千次阅读 2019-04-04 16:03:11
    • Spring MVC也可以使用拦截器对请求进行拦截处理,用户可以自定义拦截器来实现特定的功能,自定义的拦截器必须实现HandlerInterceptor接口 – preHandle():这个方法在业务处理器处理请求之前被调用,在该方法中...
  • SpringMVC自定义拦截器与异常处理 拦截器概念 拦截器代码演示 创建maven工程 pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns=...
  • 自定义拦截器 跟过滤器比较像的技术。发送请求时,被拦截器拦截,在控制器的前后添加额外功能。 注意: ①跟aop区分:aop拦截特定方法(service实现类); ②拦截器是用来拦截请求,针对于控制器方法(对...
  • SpringMvc自定义拦截器 SpringMvc也可以使用拦截器对请求进行拦截处理,用户可以自定义拦截器来实现特定的功能,自定义拦截器必须实现HandlerInterceptor接口 preHandle(): 这个方法在业务处理器处理请求之前被...
  • springMVC 自定义拦截器

    2015-03-19 11:17:03
    springMVC自定义拦截器1.自定义拦截器import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.HandlerInterceptor; import ...
  • SpringMVC拦截器HandlerInterceptorAdapter对应提供了三个preHandle,postHandle,afterCompletion方法。preHandle在业务处理器处理请求之前被调用,  postHandle在业务处理器处理请求执行完成后,生成视图之前...
  • 1.编写拦截器类,继承HandlerInterceptorAdapter类,重写preHandle(),afterCompletion()方法,并加入到Spring容器中 @Component public class LoginInterceptor extends HandlerInterceptorAdapter { private ...
  • SpringMVC自定义拦截器

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 26,153
精华内容 10,461
关键字:

springmvc自定义拦截器

spring 订阅