8.学习springmvc的拦截器
一.springmvc拦截器介绍和环境搭建
1.介绍:
过滤器:servlet中的一部分,可以拦截所有想要访问的资源。
拦截器:SpringMVC框架中的,只能在SpringMVC中使用并且只能过滤控制器的方法。
流程:用户访问页面->执行拦截器1->执行拦截器2->执行控制器方法->跳转页面->展示给用户
2.入门代码:
编写自定义的拦截器类MyInterceptor1:
/**
* 自定义拦截器类
* @author USTC_WZH
* @create 2019-12-04 12:26
*/
public class MyInterceptor1 implements HandlerInterceptor { /**
* 预处理方法,controller方法被执行前先执行
* return true 放行,执行下一个拦截器,若没有拦截器则执行Controller中的方法
* return false 不放行,可以通过request或response进行页面跳转
* @param request
* @param response
* @param handler
* @return
* @throws Exception
*/
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println("MyInterceptor1执行了...");
return true;
}
}
配置springmvc.xml中拦截器属性:
<!--配置拦截器-->
<mvc:interceptors>
<!--配置拦截器-->
<mvc:interceptor>
<!--设置具体要拦截的方法:path="/**"为拦截所有方法,path="/user/*"为拦截user下的方法-->
<mvc:mapping path="/user/*"></mvc:mapping>
<!--配置不要拦截的方法与<mvc:mapping path=""></mvc:mapping> 二者一般只设置一个-->
<!--<mvc:exclude-mapping path=""></mvc:exclude-mapping>-->
<!--配置拦截器对象为自己写的拦截器类-->
<bean class="edu.ustc.interceptor.MyInterceptor1"></bean>
</mvc:interceptor>
</mvc:interceptors>
编写控制器方法:
/**
* @author USTC_WZH
* @create 2019-12-04 12:13
*/
@Controller
@RequestMapping("/user")
public class UserController { @RequestMapping("/testInterceptor")
public String testInterceptor(){
System.out.println("testInterceptor执行了..."); return "success";
}
}
编写jsp:
index.jsp:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body> <h3>SpringMVC拦截器</h3>
<a href="user/testInterceptor">SpringMVC拦截器</a> </body>
</html>
success.jsp:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>success</title>
</head>
<body> <h3>测试Interceptor成功</h3> <% System.out.println("success.jsp执行了..."); %> </body>
</html>
执行结果:
3.拦截器接口演示
preHandle:预处理方法,在控制器方法执行之前执行,return true后执行控制器方法,return false并指定跳转页面则不执行控制器方法。可以用与检测用户是否登陆,未登录跳转登陆页面。
/**
* 预处理方法,controller方法被执行前先执行
* return true 放行,执行下一个拦截器,若没有拦截器则执行Controller中的方法
* return false 不放行,可以通过request或response进行页面跳转
* @param request
* @param response
* @param handler
* @return
* @throws Exception
*/
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println("MyInterceptor1d的preHandle方法执行了...");
// return true;
request.getRequestDispatcher("/WEB-INF/pages/error.jsp").forward(request,response);
return false; }
error.jsp:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>error</title>
</head>
<body>
<h3>这是错误页面</h3>
</body>
</html>
postHandle:后处理方法,在Controller之后执行并在Controller需要跳转的页面之前执行
/**
* 后处理方法,在Controller之后执行,在Controller需要跳转的success.jsp之前执行。
* 注:当指定跳转页面后会执行后处理方法跳转的页面
* @param request
* @param response
* @param handler
* @param modelAndView
* @throws Exception
*/
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
System.out.println("MyInterceptor1d的postHandle方法执行了...");
request.getRequestDispatcher("/WEB-INF/pages/error.jsp").forward(request,response); }
afterCompletion方法在Controller方法执行之后执行并在产生的页面success.jsp后,执行该方法。主要用于回收资源。
执行成功!
8.学习springmvc的拦截器的更多相关文章
- SpringMVC—Struts2拦截器学习网址整理
引自:http://blog.csdn.net/wp1603710463/article/details/49982683 SpringMVC—Struts2拦截器学习网址整理 最近项目中遇到权限相关 ...
- springmvc的拦截器
什么是拦截器 java里的拦截器是动态拦截action调用的对象.它提供了一种机制可以使 ...
- SpringMVC利用拦截器防止SQL注入
引言 随着互联网的发展,人们在享受互联网带来的便捷的服务的时候,也面临着个人的隐私泄漏的问题.小到一个拥有用户系统的小型论坛,大到各个大型的银行机构,互联网安全问题都显得格外重要.而这些网站的背后,则 ...
- SpringMVC经典系列-14自己定义SpringMVC的拦截器---【LinusZhu】
注意:此文章是个人原创.希望有转载须要的朋友们标明文章出处.假设各位朋友们认为写的还好,就给个赞哈.你的鼓舞是我创作的最大动力,LinusZhu在此表示十分感谢,当然文章中如有纰漏,请联系linusz ...
- 基于注解风格的Spring-MVC的拦截器
基于注解风格的Spring-MVC的拦截器 Spring-MVC如何使用拦截器,官方文档只给出了非注解风格的例子.那么基于注解风格如何使用拦截器呢? 基于注解基本上有2个可使用的定义类,分别是Defa ...
- springMVC的拦截器工作流程
首先,springmvc的拦截器配置在这就不多说了.主要讲一下拦截器的三个方法的执行顺序. preHandle方法一定是最先执行的方法,如果它返回为false下面的方法均不执行. postHandle ...
- 转 :关于springmvc使用拦截器
原博客: http://elim.iteye.com/blog/1750680 SpringMVC 中的Interceptor 拦截器也是相当重要和相当有用的,它的主要作用是拦截用户的请求并进行相应的 ...
- springmvc中拦截器与springmvc全局异常处理器的问题
最近在做一个练手的小项目, 系统架构中用了springmvc的全局异常处理器, 做了系统的统一异常处理. 后来加入了springmvc的拦截器, 为了一些需求, 在拦截器中的 preHandle 方法 ...
- springMVC配置拦截器、过滤器、前端控制器时遇到的问题总结
1.业务场景:使用vuejs+springMVC+spring框架搭建一个mis系统,集成SSO单点登录: 2.遇到问题:使用interceptor拦截器配置SSO单点登录,直接敲域名,或者ip+端口 ...
随机推荐
- [Atcoder ARC103D]Robot Arms
题目大意:平面上有$n$个点,要求你构造$m$条边(满足$m\leqslant40$),使得可以从原点到达给定的$n$个点(边必须平行于坐标轴).并要求输出每一条边的方向,每条边必须都使用,无解输出$ ...
- 使用DbVisualizer 10.0.20 查询ES中的索引时需要注意的事项
查询前5条数据 光标停在某一个查询结果框中,左下角会显示该字段的类型 查询类型是text的字段使用单引号,使用双引号查询会报错
- 可落地的DDD的(2)-为什么说MVC工程架构已经过时
摘要 mvc是一种软件设计模式,最早由Trygve Reenskaug在1978年提出,他有效的解决了表示层,控制器层,逻辑层的代码混合在一起的问题,很好的做到了职责分离.但是在实际的编码实践过程中, ...
- 整理:WPF中Xaml中绑定枚举的写法
原文:整理:WPF中Xaml中绑定枚举的写法 目的:在Combobox.ListBox中直接绑定枚举对象的方式,比如:直接绑定字体类型.所有颜色等枚举类型非常方便 一.首先用ObjectDataPro ...
- 阿里云服务器连接ftp服务(软件的使用)
首先你需要有一个阿里云的ECS服务器 开通了宽带之后,ECS服务器就可以上网了 可以在本地电脑cmd控制台运行mstsc.exe启动远程桌面连接 windows+R 计算机名输入ECS服务器的公网ip ...
- KSQL: Streaming SQL for Apache Kafka
Few weeks back, while I was enjoying my holidays in the south of Italy, I started receiving notifica ...
- English--动词时态
English|动词时态 时态是一个很玄乎的东西,要么是完全掌握,要么是不知所云. 在正式开始之前,大家需要明白汉语的谓语动词是不会随着时间与状态而变化.但是,英语的谓语动词会随着时间与状态发生变化. ...
- 好用的随查工具Dash
1. 好用的随查工具Dash 1.1. mac版本推荐 推荐一个很好用的工具,名字就叫Dash,当然缺点就是只有英文版,中文版可能也有但更新肯定不如英文及时 可以自由下载各种文档,比如下面的这图,左侧 ...
- android studio学习----打包
Gradle打包APP签名 默认情况下,debug被配置成使用一个debug keystory.debug keystory使用了默认的密码和默认key及默认的key密码.debug构建类型会自动使用 ...
- Android图像滤镜框架GPUImage从配置到应用
GPUImage简介 GPUImage 是iOS下一个开源的基于GPU的图像处理库,提供各种各样的图像处理滤镜,并且支持照相机和摄像机的实时滤镜.GPUImage for Android是它在Andr ...