首页 > 技术文章 > spring MVC中controller失效

John-Lyn 2015-06-09 15:24 原文

好久没有编程了,最近配置了一个springMVC的项目,结果controller失效了,任何路径都不拦截,呕死我了。。。

 

结果发现是springMVC配置处出了问题,springMVC的配置有两种:

 

一种是:

 1 <bean
 2         class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
 3         <property name="messageConverters">
 4             <list>
 5                 <bean
 6                     class="org.springframework.http.converter.StringHttpMessageConverter">
 7                     <property name="supportedMediaTypes">
 8                         <list>
 9                             <value>text/plain;charset=UTF-8</value>
10                         </list>
11                     </property>
12                 </bean>
13             </list>
14         </property>
15     </bean> 

这种配置方法可以 防止@responseBody返回视图出现乱码,所以手动配置Bean,它不能和 <mvc:annotation-driven />一起使用 

 

另一种:

 1 <mvc:annotation-driven /> 

 

之前的项目中我用第一种方法配置,项目可以正常运行,不会报错,但是换了一台电脑后,就会出现本文开始提到的问题。

解决方法就是,用第二种方法配置即可。

为什么会这样,我也不知道。

 

还有一种情况就是拦截路径问题:

1 <form action="/login" method="post">
2 <div>
3 登录名:<input type="text" name="Uname" />
4 密码:<input type="text" name="Upassword" />
5 <input type="submit" value="登录" />
6 </div>
7 </form>

这样默认的拦截路径就是:/login

1  <form action="./login" method="post">
2  <div>
3  登录名:<input type="text" name="Uname" />
4  密码:<input type="text" name="Upassword" />
5  <input type="submit" value="登录" />
6 </div>
7  </form>

这样默认的拦截路径就是:工程名/发出请求页面所在路径/login

如果控制器里面拦截路径这么写:

@RequestMapping("/login")
    public String checkLogin(){
}

controller的拦截路径为:工程名/login

@RequestMapping("**/login")
    public String checkLogin(){
}

controller的拦截路径为:工程名/发出请求页面所在路径/login

 

如果页面请求路径和拦截路径不一样就会报,404错误,找不到。。。

 

初学者的烦恼呀。。。

 

推荐阅读