SpringMVC数据交互
介绍
SpringMVC是Spring框架提供的构建Web应用程序的全功能MVC模块。
在SpringMVC的各个组件中,处理器映射器、处理器适配器、视图解析器称为SpringMVC的三大组件。
MVC是一种设计思想,将一个应用分成3个基本部分,分别代表着Web应用程序中的3种职责 Model(模型 一个或多个JavaBean对象(数据访问对象和业务逻辑对象)):用于存储数据和完成业务逻辑处理
View(视图 一个或多个JSP页面):用于显示数据和向控制器提交数据请求()
Controller(控制器 一个或多个Servlet对象):根据视图请求调用Model完成业务处理,将处理后的结果交由View进行展示
工作原理:
使用
一般参数
1、 在控制器类“UserController”中,编写接收批量删除用户的方法,在方法中使用数组类型“Integer[]”来绑定请求参数值。
2.在控制器类“UserController”中,编写接收批量新增用户的方法,在方法中使用类型“UserList”来绑定请求参数值
批量新增表单
@ModelAttribute注解
(该注解主要的作用是将数据添加到模型对象(Model)中,用于视图页面显示)
有两种使用方式:
1、标注在方法的形参上 可以自动将请求参数绑定到数据模型中
2、标注在方法上 在调用该控制器所有Action之前,会先逐个调用在方法级上标注了@ModelAttribute 的方法,同时会将该方法的返回值自动绑定到数据模型中
@SessionAttributes注解
如果需要跨请求、跨页面共享数据,就需要将数据存储到session域中,即存储到HttpSession对象中 两种方式: 使用“HttpSession”对象 使用“@SessionAttributes”注解
使用“@SessionAttributes”注解 该可以使得数据模型(Model)中的数据存储一份到session域中 该注解只能在类上使用,不能在方法上使用
Ajax+JSON数据交互
AJAX 是一种异步数据传输技术,可以在无需重新加载整个网页的情况下,能够更新部分网页内容 AJAX是使用JavaScript技术来实现的 JQuery简化了AJAX技术的使用
JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式。 JSON有对象结构和数组结构两种数据结构
不同参数类型传参获取
springMVC拦截器
介绍
Spring MVC的拦截器(Interceptor)与Java Servlet的过滤器(Filter)类似,主要用于拦截用户的请求并做相应的处理。
通常应用在权限验证、记录请求信息的日志、判断用户是否登录等功能上。 定义拦截器可以通过两种方式: 通过实现HandlerInterceptor接口 通过实现WebRequestInterceptor接口
HandlerInterceptor接口里面有三个方法
preHandle方法:该方法在控制器的处理请求方法前执行,其返回值表示是否中断后续操作,返回true表示继续向下执行,返回false表示中断后续操作,可以进行编码、安全控制、权限校验等处理。
postHandle方法:该方法在控制器的处理请求方法调用之后,解析视图之前执行,可以通过此方法对模型和视图做进一步的修改。
afterCompletion方法:该方法在控制器的处理请求方法执行完成后执行,即视图渲染结束后执行,可以通过此方法实现一些资源清理、记录日志等工作。
使用
让自定义的拦截器生效还需要在SpringMVC的配置文件中进行配置
<!--<!– 配置拦截器 -->
<mvc:interceptors>
<!-- 配置一个全局拦截器,拦截所有请求 -->
<!-- <bean class="interceptor.TestInterceptor"></bean>-->
<!-- 定义指定路径的拦截器 -->
<mvc:interceptor>
<!-- 配置拦截器执行拦截的路径 , /**表示拦截所有请i去 -->
<mvc:mapping path="/user/**"/>
<!-- 配置不需要拦截的路径 -->
<mvc:exclude-mapping path="/user/login"/>
<!-- 定义在 mvc:interceptor中,表示匹配指定路径的请求才被拦截-->
<bean class="interceptor.TestInterceptor"></bean>
</mvc:interceptor>
</mvc:interceptors>-->
解释
<mvc:interceptors>元素用于配置一组拦截器,其子元素<bean>定义的是全局拦截器,即拦截所有请求
<mvc:interceptor>元素定义指定路径的拦截器,其子元素
<mvc:mapping>用于配置拦截器作用的路径,该路径在path中定义
<mvc:exclude-mapping>用于配置不需要拦截的路径
单个拦截器执行流程
多个拦截器执行流程
在Web应用中通常需要有多个拦截器同时工作,这是它们的preHandle方法将按照配置文件中的拦截器顺序执行,而它们的postHandle方法和afterCompletion方法则按照配置反序执行