springmvc 中 注解驱动:<mvc:annotation-driven>的作用和使用
发布日期:2021-05-08 17:40:18 浏览次数:15 分类:原创文章

本文共 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.页面访问:

 

上一篇:git 本地修改用户名和密码
下一篇:spring mvc 页面的请求参数获取以及响应-------2.直接返回将要渲染的字符串数据

发表评论

最新留言

关注你微信了!
[***.104.42.241]2025年04月17日 22时51分03秒