2012-05-15 74 views
0

我想要做一些示例應用程序。但是,當我試圖顯示一個沒有任何內容的視圖時,我得到的輸出就像「請求的資源()不可用」。請糾正我在哪裏,我錯了..控制器類不爲彈簧加載

的WebContent/index.jsp的

<% 
System.out.println("--inside index--"); 
response.sendRedirect("newUser.jav"); %> 

的WebContent/WEB-INF/web.xml中

<?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>xHaiSpring</display-name> 
    <welcome-file-list> 
    <welcome-file>index.html</welcome-file> 
    <welcome-file>index.htm</welcome-file> 
    <welcome-file>index.jsp</welcome-file> 
    <welcome-file>default.html</welcome-file> 
    <welcome-file>default.htm</welcome-file> 
    <welcome-file>default.jsp</welcome-file> 
    </welcome-file-list> 

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

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

</web-app> 

的WebContent/WEB-INF /調度員的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:p="http://www.springframework.org/schema/p" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xsi:schemaLocation="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"> 

    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="viewResolver" 
     p:prefix="/JSP/" p:suffix=".jsp"> 
    </bean> 

</beans> 

控制器文件

package com.mycontroller; 

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

@Controller 
public class UserController{ 
    @RequestMapping(value="/newUser", method=RequestMethod.GET) 
    public ModelAndView newUserForm() 
    { 
      System.out.println("inside controller"); 
     return new ModelAndView("registerUser"); 
    } 

} 

,我已經在的WebContent/JSP/A registerUser.jsp這是一個空白的jsp頁面

問題是什麼?爲什麼我沒有收到該控制器文件?

+0

你能後所有的錯誤消息的? –

+0

其實我的控制檯正在打印「--inside index--」。並沒有顯示其他錯誤。瀏覽器顯示消息「請求的資源不可用」 –

+0

難道你的DispatcherServlet被映射到'* .jav',但你的Controller映射到'/ newUser'嗎? – ftr

回答

0

既然你只得到「--inside index--」在控制檯上,而不是「內部控制」的問題似乎是要求沒有達到控制器。

在線

response.sendRedirect("newUser.jav"); %> 

嘗試預掛起 '/' 來UR查詢。

而且,你嘗試過使用下面

<servlet-mapping> 
    <servlet-name>dispatcher</servlet-name> 
    <url-pattern>*.jav</url-pattern> // have you tried /*.jav 
    </servlet-mapping> 
1

「/*.jav」什麼是你的控制器類的位置?

在您的應用上下文xml文件中添加基礎包。

<context:component-scan base-package="com.sparkle" /> 

也儘量

<% 
System.out.println("--inside index--"); 
response.sendRedirect("jsp/newUser.jav"); %> 

在JSP

+0

我說得對。只是因爲我沒有把基礎包聲明。需要有response.sendRedirect(「jsp/newUser.jav」); 它將由調度程序自動執行該文件。無論如何,謝謝你的建議。 –

0

我覺得你有一些失誤這裏,或者至少看起來是這樣。所有的

1)首先,在UserController返回new ModelAndView("registerUser")。這意味着註冊的視圖解析器應該查找名稱爲registerUser的視圖。 您的代碼寄存器視圖解析器id爲viewResolver指向/JSP/.jsp後綴。請將其修改爲WEB-INF/views,這樣他們將不容易在Spring之外訪問(這通常是一種很好的安全措施)。 現在,您的視圖應該位於WebContent/WEB-INF/views/registerUser.jsp。請注意,視圖的名稱用於查找特定的視圖文件。

2)控制器設置@RequestMapping(value="/newUser", method=RequestMethod.GET)但你明確告訴春季只用*.jav路徑(請求映射在web.xml)。所以任何對/newUser的調用都不會被Spring處理。確保對servlet使用<url-pattern>*</url-pattern>映射。

3)它看起來像你想建立春天沒有一些關於它是如何工作的基本知識。請務必閱讀互聯網上提供的一些體面的教程,並參考Spring的深入描述參考。否則,你是在尋求麻煩。使用框架需要一些學習曲線,否則你很快就會感到沮喪。