SpringMVC笔记(3)
一、SpringMVC 拦截器
1.1 快速入门
步骤
创建拦截器类实现HandlerInterceptor接口
public class MyInterceptor01 implements HandlerInterceptor { /**
* 在目标方法执行之前
* @param request
* @param response
* @param handler
* @return
* @throws Exception
*/
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println("preHandle..."); //true则放行
return true;
} /**
* 在目标方法执行之后,视图对象返回之前
* @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("postHandle..");
} /**
* 在流程都执行完毕后执行
* @param request
* @param response
* @param handler
* @param ex
* @throws Exception
*/
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
System.out.println("afterCom...");
}
}
配置拦截器
<!-- 拦截器-->
<mvc:interceptors>
<mvc:interceptor>
<!-- 拦截路径-->
<mvc:mapping path="/**"/>
<!-- 拦截器的依赖注入-->
<bean class="interceptor.MyInterceptor01"></bean>
</mvc:interceptor>
</mvc:interceptors>
测试拦截器的拦截效果
preHandle...
目标函数执行。。
postHandle..
afterCom...
1.2 用户登录权限控制
步骤
编写登录验证拦截器
/**
* 登录拦截
* @author 郜宇博
*/
public class PrivilegeInterceptor implements HandlerInterceptor { @Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
//判断用户是否登录
// 判断session中是否存在user对象
HttpSession session = request.getSession();
//获取user对象
User user = (User) session.getAttribute("user");
//判断是否存在
if(user == null){
//无用户
//重定向到登录界面
response.sendRedirect(request.getContextPath()+"/login.jsp");
return false;
}
//放行
return true;
}
}
配置拦截器(spring-mvc.xml中)
<!-- 配置登录权限拦截器-->
<mvc:interceptors>
<mvc:interceptor>
<!-- 拦截目标-->
<mvc:mapping path="/**"/>
<!-- 放行目标-->
<mvc:exclude-mapping path="/user/login"/>
<bean class="springTest.interceptor.PrivilegeInterceptor"/>
</mvc:interceptor>
</mvc:interceptors>
</beans>
二、SpringMVC异常处理
2.1 异常处理的思路
系统中异常包括两类:预期异常和运行时异常****RuntimeException,前者通过捕获异常从而获取异常信息,后者主要通过规范代码开发、测试等手段减少运行时异常的发生。
系统的Dao、Service、Controller出现都通过throws Exception向上抛出,最后由SpringMVC前端控制器交由异常处理器进行异常处理,如下图:

2.2 异常处理的两种方式
2.2.1简单异常处理器:
使用SpringMVC提供的SimpleMappingExceptionResolver
1. 配置异常处理器
2. 编写异常页面
<!-- 配置简单异常处理器-->
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<!-- 默认错误视图-->
<property name="defaultErrorView" value="error.jsp"></property>
<!-- 单独异常配置-->
<property name="exceptionMappings">
<map>
<!-- 类转换异常-->
<entry key="java.lang.ClassCastException" value="error1.jsp"></entry>
</map>
</property>
</bean>
2.2.2异常处理接口:
实现Spring的HandelerExceptionResolver
- 实现异常处理接口
public class MyExceptionResolver implements HandlerExceptionResolver {
@Override
public ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) {
ModelAndView modelAndView = new ModelAndView();
//e异常是否是ClassCastException的实例
if(e instanceof ClassCastException){
//设置模型和视图
modelAndView.addObject("error","类转换异常");
}
else if (e instanceof DataAccessException){
//设置模型和视图
modelAndView.addObject("error","数据访问异常");
}
modelAndView.setViewName("error.jsp");
return modelAndView;
}
}
- 配置
<!-- 配置自定义异常-->
<bean class="springTest.ExceptionTest.MyExceptionResolver"/>
SpringMVC笔记(3)的更多相关文章
- SpringMVC笔记——SSM框架搭建简单实例
落叶枫桥 博客园 首页 新随笔 联系 订阅 管理 SpringMVC笔记——SSM框架搭建简单实例 简介 Spring+SpringMVC+MyBatis框架(SSM)是比较热门的中小型企业级项目开发 ...
- SpringMvc 笔记
整理出来是 SpringMvc 笔记 方便以后查询 框架太多了 不经常使用 忘记的可能性很大 自己整理一套笔记 一看就明白了 1 对比 原始请求响应流程 1 发送请求 --> 2 控制层 --& ...
- 初学者的springmvc笔记02
springmvc笔记 springmvc拦截器,spring类型转换,spring实现文件上传/下载 1.SpringMVC标准配置 导入jar包:core contaner 在web.xml文件中 ...
- SpringMVC笔记
Struts1是采用单例模式的,在并发访问中出来资源混乱,于是出现Struts2被设计为多例的解决并发产生的 数据混乱由于Struts2引入了值栈,拦截器,OGNL等,,,是访问速度下降在原生的JSP ...
- 框架SpringMVC笔记系列 二 传值
主题:SpringMVC(第一节中再回顾复习一次) 学习资料参考网址: 1.http://www.icoolxue.com 2.http://haohaoxuexi.iteye.com/blog/13 ...
- 框架SpringMVC笔记系列 一 基础
主题:SpringMVC 学习资料参考网址: 1.http://www.icoolxue.com 2.http://aokunsang.iteye.com/blog/1279322 1.SpringM ...
- 传智springMVC笔记
springmvc 第一天 springmvc的基础知识 课程安排: 第一天:springmvc的基础知识 什么是springmvc? springmvc框架原理(掌握) 前端控制器.处理器映射器.处 ...
- springmvc笔记(来自慕课网)
1.准备工作:springmvc相关的jar包. 2.这里我们先用eclipse来操作. 首先看一个接口编程,后面的所有知识点都是通过这个接口编程引出的. OneInterface.java pack ...
- springmvc笔记(基本配置,核心文件,路径,参数,文件上传,json整合)
首先导入jar包 大家注意一下我的springmvc,jackson,common-up的jar包版本.其他版本有可能出现不兼容. src文件: webroot目录: web.xml <?xml ...
- SpringMvc笔记-对RESTFUL风格的配置
1.@RequestMapping注解可以使用如下参数: 1,params:例如params={'username',"age!=100"}表示需要usernmame并且age 属 ...
随机推荐
- odoo12常用的方法
2019-09-13 今天是中秋节,星期五 #自定义显示名称 def name_get(self): result = [] for order in self: rec_name = "% ...
- 当鼠标移入div上时,div的背景色在4s之内渐变为灰色,同时在5s之内顺时针旋转45度,且尺寸缩小一半;当鼠标移走时,再渐变恢复初始样式
<style> #d1{ width:200px; height:200px; border:1px solid #000; transition:background 4s linear ...
- SQL SERVER获取某张表创建的索引
1 SELECT 索引名称=a.name 2 ,表名=c.name 3 ,索引字段名=d.name 4 ,索引字段位置=d.colid 5 FROM sysindexes a 6 JOIN sysin ...
- Calcite(一):javacc语法框架及使用
是一个动态数据管理框架. 它包含许多组成典型数据库管理系统的部分,但省略了存储原语.它提供了行业标准的SQL解析器和验证器,具有可插入规则和成本函数的可自定义优化器,逻辑和物理代数运算符,从SQL到代 ...
- shell的if语句
目录 一.基础测试 1 test命令 2 文件测试 一.基础测试 1 test命令 测试表达式是否成立 ,若不成立返回0,否则返回其他数值 格式1:test 条件表达式 格式2:[条件表达式] 2 文 ...
- Excel VBA活动抽奖小程序
在活动中,我们常会有抽奖,抽奖箱准备繁琐,现在多采用线上抽奖方式,下面用Excel VBA写了一个简单的抽奖小程序 简单测试效果如下,可实现: 多次抽奖,且每次抽奖都不重复 抽奖界面滚动人员信息,点击 ...
- “百度杯”CTF比赛 十月场-Getflag(md5碰撞+sql注入+网站绝对路径)
进去md5碰撞,贴一下脚本代码 import hashlib def md5(value): return hashlib.md5(str(value).encode("utf-8" ...
- [SQL]基本表的定义及其完整性约束
在使用数据库时,绝大多数时间都是在使用基本表. SQL Server数据类型 截图来源: https://www.w3school.com.cn/sql/sql_datatypes.asp 创建基本表 ...
- SaToken学习笔记-04
SaToken学习笔记-04 如果有问题,请点击:传送门 角色认证 在sa-token中,角色和权限可以独立验证 // 当前账号是否含有指定角色标识, 返回true或false StpUtil.has ...
- 计算机课程设计-校园二手书交易系统java二手交易平台代码ssm二手商城购物平台跳蚤市场
计算机课程设计-校园二手书交易系统java二手交易平台代码ssm二手商城购物平台跳蚤市场 注意:该项目只展示部分功能,如需了解,评论区咨询即可. 1.开发环境 开发语言:Java 后台框架:SSM(S ...