我今天使用Maven创建了一个spring-mvc项目,
当我使用版本4.1.5时,spring-mvc容器将param注入到处理程序(类中具有@Controller
的方法)正确,
但是当我使用4.3.0版本时,spring-mvc容器不会向处理程序注入任何参数,例如HttpServeltRequest
,Model
,@RequestParam
等等上。
我在两个版本之间使用了相同的配置文件,我只更改了pom.xml中的版本。
web.xml的内容如下:
<web-app>
<display-name>Archetype Created Web Application</display-name>
<servlet>
<servlet-name>spring</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:conf/spring-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
和spring-servlet.xml的内容如下:
<mvc:annotation-driven />
<context:component-scan base-package="com.tydic.rmp.controller">
</context:component-scan>
最后,控制器的内容如下:
package com.tydic.rmp.controller;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class LoginController {
@RequestMapping(value={"/login"})
public String login(Model model, HttpServletRequest request) {
model.addAttribute("hello", "111");
System.out.println(request);
return "login.jsp";
}
public LoginController() {
System.out.println("========111111111111");
}
}