拦截器
基本概念
SpringMVC 中的 Interceptor 拦截器也是相当重要和相当有用的,它的主要作用是拦截用户的请求并 进行相应的处理。比如通过它来进行权限验证,或者是来判断用户是否登陆等操作。对于 SpringMVC 拦截器的定义方式有两种:
实现接口:org.springframework.web.servlet.HandlerInterceptor
实现 HandlerInterceptor 接口
继承适配器:org.springframework.web.servlet.handler.HandlerInterceptorAdapter
继承 HandlerInterceptorAdapter
接口实现
preHandle
postHandle
afteCompletion
多个拦截器实现
SpringMVC 框架支持多个拦截器配置,从而构成拦截器链,对客户端请求进行多次拦截操作。
xml配置
拦截器应用 - 非法请求拦截
使用拦截器完成用户是否登录请求验证功能
UserInfoController 定义
页面定义
success.jsp 定义
文件上传
1.method==post,entype="mulitipart/form-data"
2:上传的解析器
<!--上传解析器-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!--文件的最大值,-1,根据文件的大小而定,-->
<property name="maxUploadSize" value="104857600"></property>
<!--文件上传的编码集-->
<property name="defaultEncoding" value="utf-8"></property>
<!--
设置文件放入临时文件夹的最大大小限制。
此值是阈值,低于此值,则保存在内存中,如高于此值,则生成硬盘上的临时文件。
-->
<property name="maxInMemorySize" value="4096"></property>
</bean>
3:构建Handler方法,MulitipartFile myFile
SSM 框架集成与测试
环境配置
IDEA 下创建项目
创建Maven对应的Web项目
JDK版本11
添加坐标依赖
< ! -- junit 测试 -->
< ! -- spring 核心jar -->
< ! -- spring 测试jar -->
< ! -- spring jdbc -->
< ! -- spring 事务 -->
< ! -- aspectj 切面编程的jar -->
<!-- c3p0 连接池 -->
<!-- mybatis -->
<!-- 添加mybatis与Spring整合的核心包 -->
<!-- mysql 驱动包 -->
<!-- 日志打印相关的jar -->
<!-- 分页插件 -->
.......
设置资源目录和插件
配置 web.xml
配置 spring.xml
配置 mybatis.xml
配置 db.properties
RestFul URL
模型 - 视图 - 控制器(MVC)是一个众所周知的以设计界面应用程序为基础的设计思想。
Restful 风格的 API 是一种软件架构风格,设计风格而不是标准,只是提供了一组设计原则和约束条 件。它主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易 于实现缓存等机制。
在Restful 风格中,用户请求的 url 使用同一个 url,用请求方式:get,post,delete,put...等方式 对请求的处理方法进行区分,这样可以在前后台分离式的开发中使得前端开发人员不会对请求的资源地 址产生混淆和大量的检查方法名的麻烦,形成一个统一的接口。
在 Restful 风格中,现有规定如下:
GET(SELECT):从服务器查询,可以在服务器通过请求的参数区分查询的方式。
POST(CREATE):在服务器端新建一个资源,调用 insert 操作。
PUT(UPDATE):在服务器端更新资源,调用 update 操作。
PATCH(UPDATE):在服务器端更新资源(客户端提供改变的属性)。(目前 jdk7 未实现,tomcat7 不支持)。
DELETE(DELETE):从服务器端删除资源,调用 delete 语句。
全局异常统一处理
全局异常概念
在 JavaEE 项目的开发中,不管是对底层的数据库操作过程,还是业务层的处理过程,还是控制层的处 理过程,都不可避免会遇到各种可预知的、不可预知的异常需要处理。每个过程都单独处理异常,系统 的代码耦合度高,工作量大且不好统一,维护的工作量也很大。
SpringMVC 对于异常处理这块提供了支持,通过 SpringMVC 提供的全局异常处理机制,能够将所有 类型的异常处理从各处理过程解耦出来,既保证了相关处理过程的功能较单一,也实现了异常信息的统 一处理和维护。
全局异常实现方式 Spring MVC 处理异常有 3 种方式:
1. 使用 Spring MVC 提供的简单异常处理器 SimpleMappingExceptionResolver
2. 实现 Spring 的异常处理接口 HandlerExceptionResolver 自定义自己的异常处理器
3. 使用 @ExceptionHandler 注解实现异常处理
全局异常处理方式二(推荐)
实现 HandlerExceptionResolver 接口
全局异常处理方式三
页面处理器继承 BaseController
未捕获异常的处理
对于 Unchecked Exception 而言,由于代码不强制捕获,往往被忽略,如果运行期产生了 Unchecked Exception,而代码中又没有进行相应的捕获和处理,则我们可能不得不面对尴尬的 404、 500……等服务器内部错误提示页面。
此时需要一个全面而有效的异常处理机制。目前大多数服务器也都支持在 web.xml 中通过 (Websphere/Weblogic)或者(Tomcat)节点配置特定异常情况的显示页面。修改 web.xml 文件,增加以下内容: