Spring MVC InternalResourceViewResolver - 无法显示我的页面

时间:2012-04-10 17:46:30

标签: java spring spring-mvc

我试图了解org.springframework.web.servlet.view.InternalResourceViewResolver

我已经按照本教程: http://www.mkyong.com/spring-mvc/spring-mvc-internalresourceviewresolver-example/

但我无法让它发挥作用。我得到“请求的资源(/ ** /)不可用”

这是我的web.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" `xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">`
<display-name>Spring Web MVC Application</display-name>

  <servlet>
    <servlet-name>mvc-dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>

  <servlet-mapping>
    <servlet-name>mvc-dispatcher</servlet-name>
    <url-pattern>*.htm</url-pattern>
  </servlet-mapping>

    <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/mvc-dispatcher-servlet.xml</param-value>
  </context-param>

  <listener>
    <listener-class>
      org.springframework.web.context.ContextLoaderListener
    </listener-class>
  </listener>
    <welcome-file-list>
        <welcome-file>WelcomePage</welcome-file>
    </welcome-file-list>
</web-app>

以下是控制器类的代码:

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;
public class WelcomeController extends AbstractController{

    @Override
    protected ModelAndView handleRequestInternal(HttpServletRequest request,
        HttpServletResponse response) throws Exception {

        ModelAndView model = new ModelAndView("WelcomePage");

        return model;
    }
}

以下是servlet配置的代码:

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:p="http://www.springframework.org/schema/p" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
            http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

    <bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping" />

    <!-- Register the bean -->
    <bean class="WelcomeController" />

    <bean id="viewResolver"
        class="org.springframework.web.servlet.view.InternalResourceViewResolver" >
        <property name="prefix">
            <value>/WEB-INF/pages/</value>
        </property>
        <property name="suffix">
            <value>.jsp</value>
        </property>
    </bean>

</beans>

为什么我找不到页面错误?

我在以下位置有一个jsp文件:

/WEB-INF/pages/WelcomePage.jsp

环境 雄猫7 Spring Framework 3.0.2 净豆7

此致 纳齐尔

1 个答案:

答案 0 :(得分:2)

我不是百分百肯定,因为我过去几年使用的是Spring 3,而不是Spring 2.但我认为问题不在于InternalResourceViewResolver。我认为问题在于根本没有调用控制器!

我相信在Spring 2中有一些东西,我们需要另外让spring知道如何根据url将传入的请求映射到Controller。

要验证:我建议在Controller中设置Debugger Breakpoint,然后查看是否完全调用Controller。

另一方面,您也可以从教程中下载完整的示例,并检查它是否与您预期的一样。

BTW:我已经提到(在评论中)这个控制器(扩展AbstractControllerAbstractFromController)是Spring 2,并且在Spring 3中已弃用。