
本文共 3789 字,大约阅读时间需要 12 分钟。
一.概述作用
在spring mvc的各个组件种,处理器映射器、处理器适配器、视图解析器成为spring mvc的三大组件
1.<mvc:annotation-driven> Spring MVC用来提供Controller请求转发,json自动转换等功能。,默认会帮我们注册默认处理请求,参数和返回值的类。
2.默认底层会集成jackson进行对象或集合的json格式字符串的转换,且使用它时候,自动加载ReuestMappingHandlerMapping(处理映射器)
和RequestMappingHandlerAdapter(处理适配器),
3.在spirng-xml的配置文件中使用<mvc:annotation-driven>替代注解处理器和适配器的配置
二.使用场景
1.<mvc:annotation-driven>会自动注册RequestMappingHandlerMapping与RequestMappingHandlerAdapter两个Bean,这是Spring MVC为@Controller分发请求所必需的,并且提供了数据绑定支持,@NumberFormatannotation支持,@DateTimeFormat支持,@Valid支持读写XML的支持(JAXB)和读写JSON的支持(默认Jackson)等功能。
2.数据返回响应:
2.1 当我们需要controller返回一个 javabean,list,map等数据的json对象时,可以设定<mvc:annotation-driven />,
2.2 静态资源的访问时,
一开始我在写配置的时候,只写了<context:component-scan/>,并没有使用<mvc:annotation-driven/>,servlet拦截*.do,.do请求可以被正确捕捉和处理。
后来为了解决静态资源访问的问题,servlet改成了拦截所有请求,即/,并添加了默认的servlet,这时候*.do请求不能被控制器捕捉了,页面错误为404。直到添加了<mvc:annotation-driven/>之后,.do请求才又能被正确捕捉和处理。
参考:
三.使用案例
1.controller:
/** * @author liujianfu * @description 方法10:配置springmvc 让框架自动转成json串 * @date 2021/1/10 14:44 * @param * @return org.springframework.web.servlet.ModelAndView */ @RequestMapping("/product10") @ResponseBody //告诉springmvc 不进行页面跳转,直接进行数据返回响应,方法返回的字符串不是跳转而是直接在http响应体种返回。 public User productDemo10(HttpServletResponse response) throws IOException { System.out.println("进入controoler10层....."); User u=new User(); u.setAge(344); u.setUserName("ljf"); return u; }
2. spring mvc注解驱动的配置
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsd"> <!-- 配置spring创建容器时要扫描的包 --> <context:component-scan base-package="com.ljf.spring.mvc.demo"> <!-- 只扫描controller层 <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/> --> <!-- 排除不扫描controller层 <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/> --> </context:component-scan> <!-- 配置视图解析器 --> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/pages/"></property> <property name="suffix" value=".jsp"></property> </bean> <!-- 配置 controller返回对象 ,集合 自动转成json串 的处理映射器,和 <mvc:annotation-driven></mvc:annotation-driven> 注解驱动 实现相同功能 <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"> <property name="messageConverters"> <list> <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"></bean> </list> </property> </bean> --> <!-- 在spring mvc的各个组件种,处理器映射器、处理器适配器、视图解析器成为spring mvc的三大组件 <mvc:annotation-driven> Spring MVC用来提供Controller请求转发,json自动转换等功能 默认底层会集成jackson进行对象或集合的json格式字符串的转换,且使用它时候,自动加载ReuestMappingHandlerMapping(处理映射器) 和RequestMappingHandlerAdapter(处理适配器),在spirng-xml的配置文件中使用<mvc:annotation-driven>替代注解处理器和适配器的配置 和上面的bean标签 <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"> 具有相同功能 --> <!-- spring mvc 的注解驱动--> <mvc:annotation-driven></mvc:annotation-driven></beans>
图片截图:
3.页面访问:
发表评论
最新留言
关于作者
