我试图将Spring MVC实现到现有应用程序中,但是即使花了数小时试图找出问题所在,它仍然无法正常工作。带有Spring应用程序的JSP已经可以正常运行,并且仍在运行。每次请求应适合MVC Servlet中的模式时,实际上都会将其发送给它。但是我无法在Controller中捕获它。
首先是我的web.xml,其中定义了使用的servlet。
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet>
<servlet-name>PdfServlet</servlet-name>
<servlet-class>servlet.PdfServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet- class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>
然后,我仅使用以下属性创建了servlet文件dispatcher-servlet.xml:
<bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"/>
<context:component-scan base-package="at.htlstp.app.mvc"/>
<context:annotation-config />
现在,给定的Controller被实例化,直到我能够使用@PostConstruct方法找出来。但这不是在请求上调用。
@Controller
//@RequestMapping(value = "*.htm")
public class AndroidController implements Serializable {
@PostConstruct
private void setup() {
System.out.println("Class created!");
}
@RequestMapping(value = "test.htm", method = RequestMethod.GET)
public String findDepatment() {
System.out.println("Method called");
return "<H1>bar</H1>";
}
}
每次我尝试使用匹配的* .htm请求来请求应用程序时,我只会收到以下错误。
WARNING: No mapping found for HTTP request with URI [/ViewMyMarks/test.htm] in DispatcherServlet with name 'dispatcher'
如果您过去有同样的问题,我将不胜感激。我唯一的想法是,Controller用于JSP请求,而MVC没有实例化它。然后它将无法找到匹配的模式。但是我该怎么办?
最佳答案
您的dispatcher-servlet.xml在给定的行中没有mvc驱动的注释信息。
<mvc:annotation-driven />
并且请求映射将
/
的值作为起始值 @RequestMapping(value = "/test.htm", method = RequestMethod.GET)
阅读spring-mvc的文档。它会帮助您了解spring mvc http://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html