2011-05-31 73 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