SpringMVC数据交互与拦截器

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的配置文件中进行配置

    <!--&lt;!&ndash; 配置拦截器 -->
    <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方法则按照配置反序执行 

 

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值