注意:此文章是个人原创。希望有转载须要的朋友们标明文章出处。假设各位朋友们认为写的还好,就给个赞哈。你的鼓舞是我创作的最大动力,LinusZhu在此表示十分感谢,当然文章中如有纰漏,请联系linuszhu@163.com,敬请朋友们斧正,谢谢。

这部分主要解说SpringMVC的拦截器的部分。会带着大家完毕定义拦截器的两种方式的实例。不多说了。開始……

SpringMVC的拦截器主要是用于拦截用户的请求,而且进行对应的处理,如:权限验证、推断登录等。

定义拦截器的两种方式,例如以下:

1. 实现接口:

org.springframework.web.servlet.HandlerInterceptor

接口中有例如以下方法须要重写:

注意:參数中的Object handler是下一个拦截器。

a) public boolean preHandle

(HttpServletRequest request,HttpServletResponse response, 

Object handler) throws Exception

该方法在action运行前运行,能够实现对数据的预处理,比方:编码、安全控制等。

假设方法返回true,则继续运行action。

b) public void postHandle

(HttpServletRequest request,HttpServletResponse response, 

Object handler,ModelAndView modelAndView) throws Exception

该方法在action运行后,生成视图前运行。

在这里,我们有机会改动视图层数据。

c) public void afterCompletion(HttpServletRequest request,HttpServletResponse response, Object handler, Exception ex)throws Exception

最后运行,通经常使用于释放资源,处理异常。我们能够依据ex是否为空。来进行相关的异常处理。由于我们在平时处理异常时。都是从底层向上抛出异常,最后到了spring框架从而到了这种方法中。

2. 继承适配器类:

org.springframework.web.servlet.handler.HandlerInterceptorAdapter

这个适配器实现了HandlerInterceptor接口。提供了这个接口中全部方法的空实现。

以下是我定义的两中实现拦截器的演示样例代码,仅供大家參考:

//方式1

package interceptor;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.HandlerInterceptor;

import org.springframework.web.servlet.ModelAndView;

public class MyInterceptor implements HandlerInterceptor {

@Override

public void afterCompletion(HttpServletRequest request,

HttpServletResponse response, Object handler, Exception ex)

throws Exception {

System.out.println("zxs-最后运行!

!!一般用于释放资源!!");

}

@Override

public void postHandle(HttpServletRequest request,

HttpServletResponse response, Object handler,

ModelAndView modelAndView) throws Exception {

System.out.println("zxs-Action运行之后。生成视图之前运行。!

");

}

@Override

public boolean preHandle(HttpServletRequest request,

HttpServletResponse response, Object handler) throws Exception {

System.out.println("zxs-action之前运行。!

。");

return true; // 继续运行action

}

}

//方式2

package interceptor;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

public class MyInterceptor2 extends HandlerInterceptorAdapter {

@Override

public boolean preHandle(HttpServletRequest request,

HttpServletResponse response, Object handler) throws Exception {

System.out.println("MyInterceptor2.preHandle()");

return true; // 继续运行action

}

}

3. springmvc-servlet.xml中怎样加入例如以下配置,使用拦截器:

<mvc:interceptors>

<!-- 拦截器1会拦截全部.do请求 -->

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

<!-- 拦截器2会拦截user.do请求 -->

<mvc:interceptor>

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

<bean class="interceptor.MyInterceptor2"></bean>

</mvc:interceptor>

</mvc:interceptors>

SpringMVC经典系列-14自己定义SpringMVC的拦截器---【LinusZhu】的更多相关文章

  1. SpringMVC经典系列-15对SpringMVC的总结---【LinusZhu】

    注意:此文章是个人原创,希望有转载须要的朋友们标明文章出处,假设各位朋友们认为写的还好,就给个赞哈.你的鼓舞是我创作的最大动力,LinusZhu在此表示十分感谢,当然文章中如有纰漏,请联系linusz ...

  2. SpringMVC学习记录七——sjon数据交互和拦截器

    21       json数据交互 21.1      为什么要进行json数据交互 json数据格式在接口调用中.html页面中较常用,json格式比较简单,解析还比较方便. 比如:webservi ...

  3. SpringMvc Controller请求链接忽略大小写(包含拦截器)及@ResponseBody返回String中文乱码处理

    SpringMvc Controller请求链接忽略大小写(包含拦截器)及@ResponseBody返回String中文乱码处理... @RequestMapping(value = "/t ...

  4. SpringMVC经典系列-12基于SpringMVC的文件上传---【LinusZhu】

    注意:此文章是个人原创.希望有转载须要的朋友们标明文章出处,假设各位朋友们认为写的还好,就给个赞哈,你的鼓舞是我创作的最大动力.LinusZhu在此表示十分感谢,当然文章中如有纰漏.请联系linusz ...

  5. SpringMVC系列(十二)自定义拦截器

    Spring MVC也可以使用拦截器对请求进行拦截处理,用户可以自定义拦截器来实现特定的功能,自定义的拦截器必须实现HandlerInterceptor接口– preHandle():这个方法在业务处 ...

  6. springMvc源码学习之:spirngMvc的拦截器使用

    SpringMVC 中的Interceptor 拦截器也是相当重要和相当有用的,它的主要作用是拦截用户的请求并进行相应的处理.比如通过它来进行权限验证,或者是来判断用户是否登陆,或者是像12306 那 ...

  7. SpringMVC第七篇【RESTful支持、拦截器】

    RESTful支持 我们在学习webservice的时候可能就听过RESTful这么一个名词,当时候与SOAP进行对比的-那么RESTful究竟是什么东东呢??? RESTful(Representa ...

  8. 【SpringMVC】文件上传与下载、拦截器、异常处理器

    文件下载 使用ResponseEntity实现下载文件的功能 index.html <!DOCTYPE html> <html lang="en" xmlns:t ...

  9. Spring Boot入门系列(十)如何使用拦截器,一学就会!

    前面介绍了Spring Boot 如何整合定时任务已经Spring Boot 如何创建异步任务,不清楚的朋友可以看看之前的文章:https://www.cnblogs.com/zhangweizhon ...

随机推荐

  1. MySQL基础之第2章 Windows平台下安装与配置MySQL

    2.1.msi安装包 2.1.1.安装 特别要注意的是,安装前要删除原来的my.ini和原来的data目录,改名也行,不然在最后一步会“apply security settings”报个1045错误 ...

  2. c# datagridview与DataSet绑定, 列与数据库表里面的列一一对应

    参考代码1: 自己模拟出数据,并分别对dataGridView赋值. using System; using System.Collections.Generic; using System.Comp ...

  3. Matlab编程实例(1) 移动平均

    MATLAB数字信号处理作业,把自己写的程序发上来..欢迎交流~ QQ 五幺九七九零六四   首先是任意点移动平均: 主程序:mov_average_main.m (运行) 函数:mov_averag ...

  4. IOS 点击按钮 光环 冲击波效果

    UIBezierPath * path = [UIBezierPath bezierPathWithArcCenter:CGPointMake(0, 0) radius:ROUND_WIDTH/2 - ...

  5. 将VLC库封装为duilib的万能视频播放控件

    转载请说明出处,谢谢~~ 昨天封装好了基于webkit的浏览器控件,修复了duilib的浏览器功能的不足,而我的仿酷狗播放器项目中不光需要浏览器,同时也需要视频播放功能,也就是完成MV的功能.所以我打 ...

  6. 机器学习中的数学(3)-模型组合(Model Combining)之Boosting与Gradient Boosting

    版权声明: 本文由LeftNotEasy发布于http://leftnoteasy.cnblogs.com, 本文可以被全部的转载或者部分使用,但请注明出处,如果有问题,请联系wheeleast@gm ...

  7. ACM2025

    /* 查找最大元素 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Sub ...

  8. pku3670 Eating Together

    http://poj.org/problem?id=3670 DP,最长不降子序列,O(n*logn)解法 #include <stdio.h> #define N 30030 int n ...

  9. CentOS上firefox安装flash

    CentOS下firefox安装flash说明 CentOS下自带了firefox,但没有flash插件的,按它自己的提示安装不成功,需要手动安装,如下: 1.打开flash官网,http://lab ...

  10. 【现代程序设计】【homework-05】

    这次作业的运行效果图: 新建了20个客户端线程,服务器相应开了20个线程接收客户端数据,每一秒输出每一轮的结果 这次作业用c#完成 利用 Socket 类实现了局域网中的客户端和服务器之间的通信 主要 ...