我嘗試將Spring MVC實現到現有的應用程序中,但即使花費數小時試圖弄清楚什麼是錯誤,它仍然不起作用。 Spring應用程序的JSP已經運行,沒有問題,並且仍在運行。每次請求都應該適合MVC servlet中的模式時,它實際上是發送給它的。但我無法在控制器中捕捉到它。在現有Spring中使用Spring MVC和JSP應用程序
首先我的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文件調度-servlet.xml中,只有具有以下屬性:
<bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"/>
<context:component-scan base-package="at.htlstp.app.mvc"/>
<context:annotation-config />
現在給定控制器是實例化,我可以找出@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沒有實例化它。然後它不能找到匹配的模式。但我能做些什麼呢?
謝謝你,這個伎倆!我很長一段時間沒有使用MVC,並認爲組件掃描可以做到這一點。應用程序正在工作 – user3172493