2011-05-31 33 views
2

web.xml中:DispatcherServlet的未出现要被处理的ModelAndView响应

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns="http://java.sun.com/xml/ns/javaee" 
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee  
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
id="WebApp_ID" 
version="3.0"> 
    <display-name>audiClave</display-name> 
    <context-param> 
    <param-name>webAppRootKey</param-name> 
    <param-value>rest.root</param-value> 
</context-param> 
<!-- Processes application requests --> 
<servlet> 
    <servlet-name>rest</servlet-name> 
    <servlet-class> 
org.springframework.web.servlet.DispatcherServlet</servlet- class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>rest</servlet-name> 
    <url-pattern>/REST/</url-pattern> 
</servlet-mapping> 

<servlet> 
    <servlet-name>base</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>2</load-on-startup> 
</servlet>  

<servlet-mapping> 
    <servlet-name>base</servlet-name> 
    <url-pattern>/</url-pattern> 
</servlet-mapping> 

基servlet.xml中:

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:mvc="http://www.springframework.org/schema/mvc" 
xmlns:context="http://www.springframework.org/schema/context" 
xsi:schemaLocation=" 
    http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd 
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> 

<!-- DispatcherServlet Context: defines this servlet's request-processing infrastructure --> 

<!-- Scans within the base package of the application for @Components to configure as beans --> 
<!-- @Controller, @Service, @Configuration, etc. --> 
<context:component-scan base-package="com.audiClave.controllers" /> 

<!-- Enables the Spring MVC @Controller programming model --> 
<mvc:annotation-driven /> 

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

</beans> 

这里是BaseController:

package com.audiClave.controllers; 

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

@Controller 
public class BaseController { 

@RequestMapping(value = "/index.html") 
public ModelAndView home() { 
    System.out.println("BaseController: Passing through..."); 
    return new ModelAndView("home"); 
    // return "WEB-INF/views/home.jsp"; 
} 
} 

我打电话给与Tomcat服务:

http://localhost:8080/audiClave/index.html 

,这是从控制台:

BaseController: Passing through... 

出现在控制台窗口中,但没有别的。内容返回状态:/WEB-INF/views/home.jsp

description The requested resource() is not available. 

内容

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
pageEncoding="ISO-8859-1"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
    <title>Audiclave</title> 
</head> 
<body> 
    <h1>Hello world from audiClave!</h1> 
</body> 
</html> 

的问题不是在文件中,但因为如果我回到

return new ModelAndView("xxxx"); 

这是相同的结果。

在我开始更改项目中的库(与JSTL和JSP相关)之前,它似乎与库相关,因为它正在工作。我不知道我改变过的图书馆的顺序。我一定最终得到了与tomcat 7不兼容的东西。

在tomcat日志中没有任何东西表明问题。这是启动日志:

01/06/2011 9:25:20 AM org.apache.catalina.core.AprLifecycleListener init 
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jre6\bin;.;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\Python26\Scripts;C:\Python26\;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\Microsoft SQL Server\90\Tools\binn\;C:\Program Files\Microsoft SQL Server\80\Tools\Binn\;C:\Program Files\Microsoft SQL Server\90\DTS\Binn\;C:\Program Files\Microsoft SQL Server\90\Tools\Binn\VSShell\Common7\IDE\;C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\PrivateAssemblies\;C:\Program Files\Java\jdk1.6.0_21\bin;%APPDATA%\Python\Scripts;C:\Program Files\Translate Toolkit;C:\Program Files\Gallio\bin 
01/06/2011 9:25:20 AM org.apache.tomcat.util.digester.SetPropertiesRule begin 
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:audiClave' did not find a matching property. 
01/06/2011 9:25:20 AM org.apache.coyote.AbstractProtocolHandler init 
INFO: Initializing ProtocolHandler ["http-bio-8080"] 
01/06/2011 9:25:20 AM org.apache.coyote.AbstractProtocolHandler init 
INFO: Initializing ProtocolHandler ["ajp-bio-8009"] 
01/06/2011 9:25:20 AM org.apache.catalina.startup.Catalina load 
INFO: Initialization processed in 336 ms 
01/06/2011 9:25:20 AM org.apache.catalina.core.StandardService startInternal 
INFO: Starting service Catalina 
01/06/2011 9:25:20 AM org.apache.catalina.core.StandardEngine startInternal 
INFO: Starting Servlet Engine: Apache Tomcat/7.0.12 
01/06/2011 9:25:22 AM org.apache.catalina.core.ApplicationContext log 
INFO: Initializing Spring FrameworkServlet 'rest' 
01/06/2011 9:25:22 AM org.springframework.web.servlet.FrameworkServlet initServletBean 
INFO: FrameworkServlet 'rest': initialization started 
01/06/2011 9:25:22 AM org.springframework.context.support.AbstractApplicationContext prepareRefresh 
INFO: Refreshing WebApplicationContext for namespace 'rest-servlet': startup date [Wed Jun  01 09:25:22 EST 2011]; root of context hierarchy 
01/06/2011 9:25:22 AM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions 
INFO: Loading XML bean definitions from ServletContext resource [/WEB-INF/rest-servlet.xml] 
01/06/2011 9:25:22 AM org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons 
INFO: Pre-instantiating singletons in org.s[email protected]62610b: defining beans [baseController,restController,org.springframework.context.annotation.internalConfigurationAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor,beanNameResolver,RemedyXml]; root of factory hierarchy 
01/06/2011 9:25:22 AM org.springframework.web.servlet.handler.AbstractUrlHandlerMapping registerHandler 
INFO: Mapped URL path [/index.html] onto handler 'baseController' 
01/06/2011 9:25:22 AM org.springframework.web.servlet.handler.AbstractUrlHandlerMapping registerHandler 
INFO: Mapped URL path [/REST/remedies/{language}] onto handler 'restController' 
01/06/2011 9:25:22 AM org.springframework.web.servlet.handler.AbstractUrlHandlerMapping registerHandler 
INFO: Mapped URL path [/REST/remedies/{language}.*] onto handler 'restController' 
01/06/2011 9:25:22 AM org.springframework.web.servlet.handler.AbstractUrlHandlerMapping registerHandler 
INFO: Mapped URL path [/REST/remedies/{language}/] onto handler 'restController' 
01/06/2011 9:25:22 AM org.springframework.web.servlet.FrameworkServlet initServletBean 
INFO: FrameworkServlet 'rest': initialization completed in 359 ms 
01/06/2011 9:25:22 AM org.apache.catalina.core.ApplicationContext log 
INFO: Initializing Spring FrameworkServlet 'base' 
01/06/2011 9:25:22 AM org.springframework.web.servlet.FrameworkServlet initServletBean 
INFO: FrameworkServlet 'base': initialization started 
01/06/2011 9:25:22 AM org.springframework.context.support.AbstractApplicationContext prepareRefresh 
INFO: Refreshing WebApplicationContext for namespace 'base-servlet': startup date [Wed Jun 01 09:25:22 EST 2011]; root of context hierarchy 
01/06/2011 9:25:22 AM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions 
INFO: Loading XML bean definitions from ServletContext resource [/WEB-INF/base-servlet.xml] 
01/06/2011 9:25:22 AM org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons 
INFO: Pre-instantiating singletons in org.s[email protected]848ecc: defining beans [baseController,restController,org.springframework.context.annotation.internalConfigurationAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor,org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping#0,org.springframework.format.support.FormattingConversionServiceFactoryBean#0,org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter#0,org.springframework.web.servlet.handler.MappedInterceptor#0,org.springframework.web.servlet.view.InternalResourceViewResolver#0]; root of factory hierarchy 
01/06/2011 9:25:23 AM org.springframework.web.servlet.handler.AbstractUrlHandlerMapping registerHandler 
INFO: Mapped URL path [/index.html] onto handler 'baseController' 
01/06/2011 9:25:23 AM org.springframework.web.servlet.handler.AbstractUrlHandlerMapping registerHandler 
INFO: Mapped URL path [/REST/remedies/{language}] onto handler 'restController' 
01/06/2011 9:25:23 AM org.springframework.web.servlet.handler.AbstractUrlHandlerMapping registerHandler 
INFO: Mapped URL path [/REST/remedies/{language}.*] onto handler 'restController' 
01/06/2011 9:25:23 AM org.springframework.web.servlet.handler.AbstractUrlHandlerMapping registerHandler 
INFO: Mapped URL path [/REST/remedies/{language}/] onto handler 'restController' 
01/06/2011 9:25:23 AM org.springframework.web.servlet.FrameworkServlet initServletBean 
INFO: FrameworkServlet 'base': initialization completed in 297 ms 
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". 
SLF4J: Defaulting to no-operation (NOP) logger implementation 
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. 
01/06/2011 9:25:23 AM org.apache.coyote.AbstractProtocolHandler start 
INFO: Starting ProtocolHandler ["http-bio-8080"] 
01/06/2011 9:25:23 AM org.apache.coyote.AbstractProtocolHandler start 
INFO: Starting ProtocolHandler ["ajp-bio-8009"] 
01/06/2011 9:25:23 AM org.apache.catalina.startup.Catalina start 
INFO: Server startup in 2490 ms 

按照六必居的建议这里是baseController返回的ModelAndView后的日志:

2011-06-01 11:32:59,218 ["http-bio-8080"-exec-11] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Invoking afterPropertiesSet() on bean with name 'home' 
2011-06-01 11:32:59,218 ["http-bio-8080"-exec-11] DEBUG org.springframework.web.servlet.DispatcherServlet - Rendering view [org.springframework.web.servlet.view.JstlView: name 'home'; URL [/WEB-INF/views/home.jsp]] in DispatcherServlet with name 'base' 
2011-06-01 11:32:59,218 ["http-bio-8080"-exec-11] DEBUG org.springframework.web.servlet.view.JstlView - Forwarding to resource [/WEB-INF/views/home.jsp] in InternalResourceView 'home' 
2011-06-01 11:32:59,218 ["http-bio-8080"-exec-11] DEBUG org.springframework.web.servlet.DispatcherServlet - Successfully completed request 
+1

你有什么定义在你的春季配置文件(前缀或后缀)可能会改变这条路径? – Sean 2011-05-31 12:37:24

+0

Spring的日志记录显示了什么? – 2011-05-31 13:22:08

回答

0

的问题是,针对home.jsp不会在

.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\audiClave\WEB-INF\views 

目录中存在,即使在eclipse它显示。直到我的记录工作正常后才能看到。 停止服务器,清理,然后重新发布似乎已修复它。

0

你就错失了一个依赖库(这是无论失败的原因您指定的JSP文件的名称)以及您的Spring上下文在尝试创建时发生错误。请仔细查看catalina.out,查看java.lang.NoClassDefFoundError,看看您是否能找出它丢失的班级。

+0

是的,我认为你是对的,但我无法找到任何东西(见我的更新) – 2011-05-31 20:52:51

1

在沿着这些线路Spring配置注册一个ViewResolver

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

现在你应该可以从你的控制器的requestmapped方法返回“家”,它应该正确地得到解决,以“/ WEB-INF/views/home.jsp“页面。

+0

能否请您在调试模式下运行它,看看是否有更多的控制台被打印出来。 – 2011-06-01 00:43:08

+0

对不起,我是所有这些新手,我在服务器上调试为 - >调试。没有更多的东西出现了,还有什么我可以做更多的细节? – 2011-06-01 00:56:12

+0

无后顾之忧Hemans - 它添加到一个文件名为log4j.properties log4j.rootLogger =调试,标准输出 log4j.appender.stdout = org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout = org.apache。 log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern =%d [%T]%-5p%C - %米%N 添加log4j.properties文件到WEB-INF /类文件夹。重新启动并查看是否有更多内容被打印到控制台 – 2011-06-01 01:03:11