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+端口 ...
随机推荐
- standard_init_linux.go:178: exec user process caused "no such file or directory"
golang docker build 制作完进项后运行报错 出现该问题的原因是编译的环境和运行的环境不同,可能有动态库的依赖 1.默认go使用静态链接,在docker的golang环境中默认是使用动 ...
- - Git常用命令 基础 总结 MD
目录 目录 Git常用命令 帮助 help 常用操作 初始化 clone init 提交 push 暂存 更新 撤销修改 分支 branch 查看分支 创建分支 切换分支 checkout 删除分支 ...
- java运算符的优先级别
一.运算符的优先级 运算符按照优先级别的高低排序分别是:自加/减运算符. 算术运算符.比较运算符.逻辑运算符.赋值运算符.具体请参考下表: 顺序 运算符 1. 括号,如 ( ) 和 [ ] 2. 一元 ...
- Web负载均衡学习笔记之K8S内Ngnix微服务服务超时问题
0x00 概述 本文是从K8S内微服务的角度讨论Nginx超时的问题 0x01 问题 在K8S内部署微服务后,发现部分微服务链接超时,Connection Time Out. 最近碰到了一个 Ngin ...
- Maven:repositories、distributionManagement、pluginRepositories中repository的区别
本文链接:https://blog.csdn.net/netyeaxi/article/details/95804076 目录 一.repositories中的repository 二.distrib ...
- JavaScript入门(二)
JavaScript入门—操作DOM树 要点 DOM树是一个树形结构,操作DOM树通常是“更新.遍历.新增.删除”. 更新DOM树 拿到DOM节点 var id=document.getElement ...
- mybatis映射mapper文件做like模糊查询
方法:使用concat函数连接通配符
- [echart] webpack中安装和使用
安装echart npm install echarts --save 全量引入 可以直接在项目代码中 require('echarts') 得到 ECharts. 官方示例 var echarts ...
- 【案例】保健品行业如何优化供应链管理?APS系统来帮忙
仙乐健康一直致力于为了客户提供世界级的产品及服务,随着业务量的不断扩大,公司先后实施了ERP系统,CRM系统,WMS系统,OA系统,朝着行业信息化水平领先的目标迈进. 但近年仅仅拥有传统ERP系统和手 ...
- Pandas 之 Series / DataFrame 初识
import numpy as np import pandas as pd Pandas will be a major tool of interest throughout(贯穿) much o ...