很扯淡的一次SpringMVC错误,配置mvc:resources后跳转找不到Controller

Web.xml拦截所有:

<servlet>
<servlet-name>spring</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>

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

spring-servlet.xml配置:

 

<mvc:resources mapping="/css/**" location="/css/" />
<mvc:resources mapping="/images/**" location="/images/" />
<mvc:resources mapping="/ckeditor/**" location="/ckeditor/" />
<mvc:resources mapping="/js/**" location="/js/" />
<mvc:resources mapping="/slide_img/**" location="/slide_img/" />

<!-- 启用spring mvc 注解-->
<context:annotation-config /> 

<!-- 设置使用注解的类所在的jar包 -->
<context:component-scan base-package="com.zkl.controller"></context:component-scan>

<!-- 完成请求和注解POJO的映射 -->
<bean
class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />

<!-- 对模型视图名称的解析,在请求时模型视图名称添加前后缀 -->
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/" />
<property name="suffix" value=".jsp" />
<property name="viewClass"
value="org.springframework.web.servlet.view.JstlView" />
</bean>

 

就这配置,其他的都好好的,要考注解实现。

我直接访问一个jsp然后跳转到我的Controller发现直接404了。

然后我把拦截改为/*发现不404。可以直接访问项目,也就是index页面。但是不能直接访问到jsp了。

说明 /*是拦截所有包括.jsp后缀。/不包含jsp。

我又将mvc:resources的标签全部去掉,发现都正常了,但是访问不到图片了。说明图片以及css和其他静态资源被拦截了。

于是我去检查其他地方,我猜测是spring-servlet.xml的问题。我进去后就找到了<context:annotation-config />这个标签。这个是启用注解的。

我百度了一番后发现配置这个的并不多  <mvc:annotation-driven />    倒都是配置着。

我找到了这么一句话:

 

<mvc:annotation-driven/>
相当于注册了DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter两个bean,配置一些messageconverter。即解决了@Controller注解的使用前提配置。 

<context:annotation-config/>
1)隐式地向Spring容器中注册AutowiredAnnotationBeanPostProcessor、CommonAnnotationBeanPostProcessor、PersistenceAnnotationBeanPostProcessor 及 equiredAnnotationBeanPostProcessor 这 4 个 BeanPostProcessor。
在配置文件中使用<context:annotationconfig/>之前,必须在 <beans> 元素中声明 context 命名空间<context:component-scan/>。
2)是对包进行扫描,实现注释驱动Bean定义,同时将bean自动注入容器中使用。即解决了@Controller标识的类的bean的注入和使用。 


<context:component-scan/> 
配置项不但启用了对类包进行扫描以实施注释驱动 Bean 定义的功能,同时还启用了注释驱动自动注入的功能(即还隐式地在内部注册了 AutowiredAnnotationBeanPostProcessor 和 CommonAnnotationBeanPostProcessor),因此当使用 <context:component-scan/> 后,除非需要使用PersistenceAnnotationBeanPostProcessor和equiredAnnotationBeanPostProcessor两个Processor的功能(例如JPA等)否则就可以将 <context:annotation-config/> 移除了。

转载于:https://www.cnblogs.com/yangqian/archive/2013/02/01/2888753.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值