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 属 ...
随机推荐
- Linkerd 金丝雀部署与 A/B 测试
本指南向您展示如何使用 Linkerd 和 Flagger 来自动化金丝雀部署与 A/B 测试. 前提条件 Flagger 需要 Kubernetes 集群 v1.16 或更新版本和 Linkerd ...
- 第二十七篇 -- QTreeWidget总结
前言 之前写过几篇关于TreeWidget的文章,不过不方便查阅,特此重新整合作为总结.不过关于QtDesigner画图,还是不重新写了,看 第一篇 就OK. 准备工作 1. 用QtDesigner画 ...
- [编译] 8、在Linux下搭建 stm8 单片机的开发烧写环境(makefile版)
目录 一.SDCC(Small Device C Compiler)编译环境搭建 1.1.下载 1.2.编译 1.3.测试 二.Hex2Bin+命令行烧写工具配置使用 2.1.下载工具安装配置 2.2 ...
- Mac搭建Vue开发环境
1.安装Homebrew /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/ ...
- 还在用Postman?来,花2分钟体验下ApiPost的魅力
2分钟玩转APIPOST 本文通过简单介绍如何利用ApiPost调试接口和快速的生成接口文档,让您初步体验ApiPost的魅力! 1. API写完想要测试?试试模拟发送一次请求 新建接口,我想模拟发送 ...
- noip模拟测试30
考试总结:这次考试,不是很顺利,首先看了一眼题目,觉得先做T1,想了一会觉得没什么好思路,就去打暴力,结果我不会枚举子集,码了半天发现不对,就随便交了一份代码上去,结果CE了,然后去打T3,20min ...
- Sth about Educational DP Contest
Contest Website : atcoder.jp/contests/dp \[\begin{array}{c|C|c|c} TaskNum & TaskName & Statu ...
- 做Android开发,你后悔过吗?
有同学跟我说,编程太难了,总是有学不完的技术.框架,新技术也层出不穷,马上三十了,还有各种学不完的东西,后悔做程序员了 编程对我来讲,还难吗 我主业是做Android的. 我刚学编程的时候,觉得难点在 ...
- 20分钟掌握Android Gradle
目前国内对Android领域的探索已经越来越深,不少技术领域如插件化.热修复.构建系统等都对Gradle有迫切的需求,不懂Gradle将无法完成上述事情.所以Gradle必须要学习. Gradle 里 ...
- java使用Selenium操作谷歌浏览器学习笔记(一)
下载安装 在淘宝镜像https://npm.taobao.org/mirrors/chromedriver/中下载与浏览器对应的版本 查看浏览器版本 点击查看谷歌浏览器版本 在IDEA项目中导入相关j ...