2009-10-16 56 views
3

我剛開始用的Spring MVC試圖創建一個新的項目,來到翻過對於沒有手動或教程似乎幫助一個問題...Spring MVC的 - jsp中沒有渲染

我已經設置了一個簡單的應用程序沒有邏輯,只是試圖讓Spring配置正確。控制器只是返回一個視圖的名稱來顯示,但視圖解析器不呈現的jsp,並返回404錯誤....

任何幫助,非常感謝。

我的web.xml文件是:

<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"> 
    <servlet> 
    <servlet-name>openstats</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
    </servlet> 

    <servlet-mapping> 
    <servlet-name>openstats</servlet-name> 
    <url-pattern>*.do</url-pattern> 
    </servlet-mapping> 

    <display-name>OpenStats API Server</display-name> 
</web-app> 

的我openstats-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" 
     xsi:schemaLocation="http://www.springframework.org/schema/beans 
      http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> 

    <context:component-scan base-package="org.openstats.api.controller"/> 

    <!-- Enable to request mappings PER METHOD --> 
    <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/> 

    <!-- Enable annotated POJO @Controller --> 
    <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"/> 

    <!-- Define the view resolver to use jsp files within the jsp folder --> 
    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
     <property name="viewClass"><value>org.springframework.web.servlet.view.JstlView</value></property> 
     <property name="prefix"><value>/jsp/</value></property> 
     <property name="suffix"><value>.jsp</value></property> 
    </bean> 
</beans> 

控制器本身沒有任何邏輯,它只是:

@Controller 
public class ProductController { 

    @RequestMapping(value = "/products.do", method = RequestMethod.GET) 
    public ModelAndView listProducts(HttpServletRequest request) { 

     ModelAndView model = new ModelAndView("index"); 
     return model; 
    } 
} 

的控制器已到達,問題是當試圖呈現...

我設立在調試log4j的,這是我所得到的部分:

02:08:19702 DEBUG 的DispatcherServlet:1094 - 測試處理器適配器 [org.springframework.web.servlet.mvc。 [email protected]] 02:08:19803 DEBUG HandlerMethodInvoker:134 - 調用 請求處理方法,包括:公共org.springframework.web.servlet.ModelAndView org.openstats.api.controller.ProductController.listProducts(的javax.servlet .http.HttpServletRequest) 02:08:19,833調試 DefaultListableBeanFactory:1367 - 調用的afterPropertiesSet()上豆 與名稱 '索引' 02:08:19876 DEBUG 的InternalResourceViewResolver:81 - 緩存視圖[指數] 02:08:19877 DEBUG 的DispatcherServlet:1181 - 模擬 視圖 [org.springframework。 web.servlet.view.JstlView: name'index'; URL [/jsp/index.jsp]在 DispatcherServlet的與名稱 'openstats' 02:08:19877 DEBUG JstlView:240 - 模擬視圖與 名稱與模型{}和靜態 屬性{} 02 '索引': 08:19923 DEBUG JstlView:234 - 轉發至資源 [/jsp/index.jsp]在 InternalResourceView '索引' 02:08:19926 DEBUG DispatcherServlet的:955 - DispatcherServlet的名稱爲 'openstats' 最後所確定已修改 值[/api-server/jsp/index.jsp] 02:08:19,927調試 DispatcherServlet:1054 - 測試 處理程序映射 [org.springframe[email protected]440c4cee] 在DispatcherServlet的與名稱 'openstats' 02:08:19928 DEBUG DefaultAnnotationHandlerMapping:179 - 未發現 處理程序映射[/ JSP /索引。JSP] 02:08:19929 DEBUG DispatcherServlet的:962 - 否getLastModified 02發現處理程序 :08:19937 DEBUG DispatcherServlet的:781 - DispatcherServlet的名稱爲 'openstats' 的 [/ API服務器/ JSP處理請求/的index.jsp] 02:08:19938 DEBUG DispatcherServlet的:843 - 綁定請求 上下文線程:GET /api-server/products.do HTTP/1.1

我的JSP文件夾是內「web應用權「並且存在index.jsp文件。

在此先感謝。

+2

這裏有什麼奇怪的是,一旦InternalResourceViewResolver找到了正確的JSP,DispatcherServlet就開始將它當作一個請求來對待,並且正在尋找一個控制器來處理URN /api-server/jsp/index.jsp 您可以發佈內容的JSP? 是否有任何其他配置可能導致此行爲? – 2009-10-23 16:23:16

回答

5

我確實與Spring 3.x有同樣的問題。 到目前爲止的進展情況如何?

編輯: 我想通了自己:-)我用下面的servletmapping:

<servlet-mapping> 
    <servlet-name>spring-frontcontroller</servlet-name> 
    <url-pattern>/*</url-pattern> 
    </servlet-mapping> 

編輯URL的模式如* .do修復了不呈現JSP的問題。 但是,這留下了這個問題如何可能與您的網址模式。

+2

我也有這個確切的問題,謝謝指出!我想我得解決一個擴展。 – Haakon 2009-12-18 17:36:15

+0

此行爲記錄在某處嗎? – Nefreo 2016-07-26 22:48:12

2

您的web.xml是否在歡迎文件列表中定義了index.jsp,如果是,它可能會被覆蓋。嘗試將jsp名稱更改爲products.jsp。

例如

@Controller 
public class ProductController { 

    @RequestMapping(value = "/products.do", method = RequestMethod.GET) 
    public String handleRequest() { 
      return "products"; 
    } 
} 
0

沒有你的.jsp和你的。做衝突?因爲文件不能與兩者的.jsp結束,。做..所以它永遠不會解決...所以你應該擺脫的.jsp的或更改URL模式/ *

0

更改

import org.springframework.web.servlet.ModelAndView; 

通過

import org.springframework.web.portlet.ModelAndView; 

在我的情況下工作。