当前位置: 移动技术网 > IT编程>开发语言>Java > Spring MVC 注解自动扫描失效原因分析

Spring MVC 注解自动扫描失效原因分析

2019年07月22日  | 移动技术网IT编程  | 我要评论

dnf官方网,单纯公主vs霸道四爵少,瓜州房屋出租

关于spring自动扫描,在控制层,采用注解配置@controller,项目能够成功启动,且无任何报错。但是 在进行页面跳转时,并未进行相应的拦截,整个界面只能在默认界面 ,跳转报404,由于楼主初次尝试,在绕了一个大圈后,初步确认是在扫描时mvc控制器,并未成功,详情请看代码

<!-- 开启controller注解支持 -->
<context:component-scan base-package="com.cjw.test.controller" use-default-filters="false">
</context:component-scan> <!--使控制器注解生效--> <mvc:annotation-driven/> <!-- 容器默认的defaultservlethandler处理 所有静态内容与无requestmapping处理的url--><mvc:default-servlet-handler/> 

但是在进行页面跳转时,始终报404,因为在控制器扫描时未将控制层与其余注解区别,修改后代码如下:

<!-- 开启controller注解支持 -->
<context:component-scan base-package="com.cjw.test.controller" use-default-filters="false">
<context:include-filter type="annotation"
expression="org.springframework.stereotype.controller"/>
</context:component-scan> 

同时,为求将配置项最简单化,楼主分别剔除相应的配置,观察其会对 整个功能的启动或跳转产生什么影响,在去除

<mvc:annotation-driven/> 

后发现同样不能跳转。最后确认其原因如下:

最后的配置如果没有<mvc:annotation-driven/>,那么所有的controller可能就没有解析,所有当有请求时候都没有匹配的处理请求类,就都去<mvc:default-servlet-handler/>即default servlet处理了。添加上<mvc:annotation-driven/>后,相应的请求被controller处理,而静态资源因为没有相应的controller就会被default servlet处理。总之没有相应的controller就会被default servlet处理就ok了。

web.xml配置如下,采用静态页面跳转:

<servlet-mapping>
<servlet-name>test</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>

以上所述是小编给大家介绍的spring mvc 注解自动扫描失效原因分析

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网