2013-02-22 49 views
0

我在spring mvc框架中做了一個基本的應用程序。url-pattern在spring mvc應用程序中不工作

當我寫web.xml上下面的網址圖案:

<servlet-mapping> 
     <servlet-name>springxml</servlet-name> 
     <url-pattern>*.jsp</url-pattern> 
    </servlet-mapping> 

並運行(使用../SpringMVCXML/welcome.jsp)應用程序,它顯示HTTP狀態404錯誤。

當我更改除.jsp以外的url模式時,應用程序運行良好。

爲什麼應用程序未運行.jsp url pattern?

我曾經使用下面的java類作爲控制器。

@Controller 
@RequestMapping(value="/welcome",method=RequestMethod.GET) 
public class ControllerHello { 
    @RequestMapping(method=RequestMethod.GET) 
    public String printHello(ModelMap map) { 
     map.addAttribute("message", "Hello Spring MVC Framework"); 
     return "hello"; 
    } 
} 

而且,我springxml-servlet.xml中有下面的代碼:

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

回答

1

假設你有也springxml的servlet也服務於其他視圖不是* .JSP(你可能在你的web.xml其他servlet的映射)時,情況如下:

您註冊了路徑/ welcome的控制器,而不是/welcome.jsp。因此,/ welcome.jsp沒有映射到Spring mvc控制器。 /歡迎HelloController會爲您提供字符串輸出hello。

/welcome.jsp會給出錯誤404,因爲它在WEB-INF中,並且該網址沒有Spring MVC控制器。

org.springframework.web.servlet.view.InternalResourceViewResolver是爲了將您的jsp文件放在/ WEB-INF中。請看http://www.mkyong.com/spring-mvc/spring-mvc-internalresourceviewresolver-example/以獲取有關InternalResourceResolver所做的簡單解釋。基本上,它使Spring MVC能夠使用不在公共資源中的jsp作爲視圖。 這不是一種將這些jsps註冊爲有效url的機制。

網址在請求映射中確定。

0

你可能沒有任何彈簧控制器映射到這個網址春天的/welcome.jsp 什麼版本你正在使用?如果您使用的彈簧2.5或以上,請嘗試以下代碼

@RequestMapping(value = "welcome.jsp") 
public String welcomeJSP(){ 
    return "welcome"; 
} 
+0

我編輯問題。請看看它。 – 2013-02-22 07:33:06

相關問題