1

我确实经历了一些解决方案,但没有一个解决方案适用于我的案例。 我在浏览器上运行这个简单的spring mvc示例时出现“未找到”错误。我是Spring框架的新手。任何帮助将不胜感激。Spring:无法解析Spring MVC中的视图名称

以下是我得到的控制台错误,当我运行程序:

警告[org.springframework.web.servlet.PageNotFound](默认任务-4)没有找到映射与URI HTTP请求在DispatcherServlet中名称为'SpringDispatcher'的[/ Demo1 /] WARN [org.springframework.web.servlet.PageNotFound](默认任务-5)在DispatcherServlet中找到URI为[/ Demo1/HelloPage] SpringDispatcher'

这里是web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> 
    <display-name>Demo1</display-name> 
    <context-param> 
     <param-name>contextClass</param-name> 
     <param-value> 
      org.springframework.web.context.support.AnnotationConfigWebApplicationContext 
     </param-value> 
    </context-param> 
    <listener> 
     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
    </listener> 

    <servlet> 
     <servlet-name>SpringDispatcher</servlet-name> 
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
     <init-param> 
      <param-name>contextClass</param-name> 
      <param-value> 
       org.springframework.web.context.support.AnnotationConfigWebApplicationContext 
      </param-value> 
     </init-param> 
     <init-param> 
      <param-name>contextConfigLocation</param-name> 
      <param-value>com.kurshit.springmvc.Demo1</param-value> 
     </init-param> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>SpringDispatcher</servlet-name> 
     <url-pattern>/</url-pattern> 
    </servlet-mapping> 

    <session-config> 
     <session-timeout>30</session-timeout> 
    </session-config> 
</web-app> 

弹簧调度-servlet.xml中

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

<mvc:default-servlet-handler /> 
<mvc:annotation-driven/> 
<context:component-scan base-package = "com.kurshit.springmvc.Demo1.controller" /> 

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

</beans> 

HomeController.java

package com.kurshit.springmvc.Demo1.controller; 

import java.io.IOException; 

import javax.servlet.http.HttpServletResponse; 

import org.springframework.stereotype.Controller; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.servlet.ModelAndView; 

@Controller 
public class HomeController { 

    @RequestMapping(value="/welcome.html") 
    public ModelAndView test(HttpServletResponse response) throws IOException{ 
     // TODO Auto-generated method stub 
     ModelAndView mav = new ModelAndView("HelloPage","msg","Welcome To Spring"); 


     return mav; 

    } 
} 

HomePage.jsp

<html> 
<body> 
    <h1>First Spring Example with Deployment Descriptor</h1> 

    <h2>${msg}</h2> 

</body> 
</html> 

这里是我的目录结构看起来像:

Directory Structure Image Link

我使用Maven的工具来解决依赖关系:

谢谢!

回答

2

您的jsp被称为HomePage.jsp,但您在ModelAndView中返回HelloPage。这些名字需要匹配。 (虽然你不需要ModelAndView中的.jsp扩展名)

+0

我知道它将mav改为“ModelAndView mav = new ModelAndView(”/ WEB-INF/views/HelloPage.jsp“,”msg“,”嘿”);”在控制器中。另外,删除.jsp没有帮助。它不应该是可选的吗?!非常感谢您的见解。 – Kurshit

+0

你做了什么来修复它的工作,但你真的应该能够把“HelloPage”作为构造函数中的第一个参数。这意味着你的viewResolver bean无法正常工作。恐怕我不确定为什么,我比旧的XML配置更习惯于基于Java的配置。这可能是因为您没有为视图解析器设置视图类。 (见http://www.baeldung.com/spring-mvc-view-resolver-tutorial)。您还可以启动日志记录来检查视图解析器bean是否正在初始化。 – Plog

相关问题