SPring MVC JSON数据交互
Spring提供了一个HttpMessageConverter<T>接口来实现浏览器与控制器类(Controller)之间的数据交互。
该接口主要用于将请求信息中的数据转换为一个类型为T的对象,并将类型为T的对象绑定到请求方法的参数中,或者将对象转换为响应信息传递给浏览器显示。
在使用注解式开发时,需要用到2个重要的JSON格式转换注解,分别为@RequestBody和@ResponseBody,
@RequestBody 用于将要请求的体中的数据绑定到方法中的参数上,该注解用再形参上
@ResponseBody 直接返回return对象 该注解用在方法上
<!-- <bean>标签配置注解方式的处理器映射器和处理器适配器必须配对使用 -->
<!-- 使用<bean>标签配置注解方式的处理器映射器 -->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping" />
使用<bean>标签配置注解方式的处理器适配器
<bean
class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
<property name="messageConverters">
<list>
在注解适配器中配置JSON转换器
<bean
class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter" />
</list>
</property>
</bean> -->
静态资源:在springmvc.xml配置如下:
<!--配置静态资源的访问映射,此配置中的文件,将不被前端控制器拦截 -->
<mvc:resources location="/js/" mapping="/js/**"/>
<mvc:resources location="/css/" mapping="/cs/**"/>
拦截器定义
拦截器:
Spring MVC中的拦截器(Interceptor)类似于Servlet中的过滤器(Filter),它主要用于拦截用户请求并作相应的处理。
例如通过拦截器可以进行权限验证、记录请求信息的日志、判断用户是否登录等。
拦截器定义:
通过实现HandlerInterceptor接口,或继承HandlerInterceptor接口的实现类(如HandlerInterceptorAdapter)来定义
通过实现WebRequestInterceptor接口,或继承WebRequestInterceptor接口的实现类来定义。
拦截器执行流程
单个拦截器流程:
程序先执行preHandle()方法,如果该方法的返回值为true,则程序会继续向下执行处理器中的方法,否则将不再向下执行
在业务处理器(即控制器Controller类)处理完请求后,会执行postHandle()方法,然后会通过DispatcherServlet向客户端返回响应
在DispatcherServlet处理完请求后,才会执行afterCompletion()方法
多个拦截器执行顺序:
当有多个拦截器同时工作时,它们的preHandle()方法会按照配置文件中拦截器的配置顺序执行,
而它们的postHandle()方法和afterCompletion()方法则会按照配置顺序的反序执