【问题标题】:Using Spring MVC in an existing Spring with JSP application在带有 JSP 应用程序的现有 Spring 中使用 Spring MVC
【发布时间】:2014-01-08 09:31:00
【问题描述】:

我尝试将 Spring MVC 实现到我现有的应用程序中,但即使花费数小时试图找出问题所在,它仍然无法正常工作。带有 Spring 应用程序的 JSP 已经正常运行并且仍在工作。每次请求应该符合 MVC servlet 的模式时,它实际上是发送给它的。但我无法在 Controller 中捕捉到它。

首先是我定义使用的 servlet 的 web.xml

    <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 />

现在给定的控制器已实例化,我可以使用@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' 

如果您过去遇到同样的问题,我将非常感谢您的回答。我唯一的想法是,控制器用于 JSP 请求,而 MVC 没有实例化它。然后它将无法找到匹配的模式。但是我能做些什么呢?

【问题讨论】:

    标签: java spring jsp spring-mvc


    【解决方案1】:

    你的 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

    【讨论】:

    • 谢谢你,成功了!我很长一段时间没有使用 MVC,并认为组件扫描会做到这一点。应用程序正在运行
    猜你喜欢
    • 2012-09-30
    • 2015-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多