2017-02-20 103 views
0

我正在開發一個使用Spring mvc的web應用程序。我有頁面顯示數據庫中的所有項目。如果我點擊列出的任何項目,它將顯示該特定項目的一些其他詳細信息。這是通過使用@PathVariable完成的。如何更改請求的URL在春天mvc,在去控制器之前

@RequestMapping(value={"/project/{name}"}) 
public String viewProject(HttpServletRequest request,@PathVariable("name")  
String projectName, ModelMap model){ 
    ....... 
    ....... 

} 

以上是我的請求映射代碼。我的網址將是http://localhost:8083/releaseDashboard/project/CSOB.html(csob是我的項目名稱,releaseDashboard是我的應用程序名稱)。直到這我的應用程序工作正常。當我點擊從這個頁面的主頁按鈕時,我的請求映射到上面的控制器方法,我的url變成localhost:8083/releaseDashboard/project/home.html。但預期的網址是localhost:8083/releaseDashboard/home.html

任何人都可以幫我嗎?我讀過我們可以使用Interceptor或Filters來更改請求的URL。但我無法看到任何代碼片段。

UPDATE

Web.xml中

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

    <servlet-mapping> 
     <servlet-name>spring</servlet-name> 
     <url-pattern>*.html</url-pattern> 
    </servlet-mapping> 

彈簧servlet.xml中

<context:component-scan base-package="com.suntec.reldashboard.controller" /> 
    <context:component-scan base-package="com.suntec.reldashboard.service" /> 
    <context:component-scan base-package="com.suntec.reldashboard.dao" /> 
    <mvc:annotation-driven/> 
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
     <property name="prefix" value="/WEB-INF/jsp/" /> 
     <property name="suffix" value=".jsp" /> 
    </bean> 
+0

瞭解你想要什麼。但不清楚你的錯誤和你做了什麼。爲什麼鏈接有一個'.html'?因爲它是Spring MVC,它必須是'http:// localhost:8083/releaseDashboard/project/CSOB'。 –

+0

web.xml是這樣配置的。這不是一個問題。如果我從web.xml中刪除該html,我的網址將與您在評論中提到的相同。 – sreehari

+0

請編輯你的問題與你的配置文件 - web.xml,彈簧配置文件等。你如何配置視圖解析器? –

回答

-1

在Spring MVC的上下文中,您在web.xml中的配置不正確。 將其編輯爲<url-pattern>/</url-pattern>。由此,您的項目的所有請求都將通過「調度程序servlet」。

(你也可以使用像這樣的<url-pattern>something-here</url-pattern>。然後你的基地網址應該有一個額外的東西在這裏)。

現在,您可以訪問資源,

@RequestMapping(value={"/project/{name}"}) 
public String viewProject(HttpServletRequest request,@PathVariable("name")  
String projectName, ModelMap model){ 
    ....... 
    ....... 
    return "hello"; 
} 

由URL http://localhost:8083/releaseDashboard/project/CSOB。然後projectName將是CSOB

您必須在/WEB-INF/jsp/下有一個名爲hello.jsp的'jsp'文件。在該jsp文件中,您可以訪問model值。

使用Spring MVC時,您不得在URL中使用.html/.jsp。使用視圖解析器將所有資源綁定到VIEW。這就是如何實施的。這是因爲它是'MVC'和'視圖解決'。

注:

按照當前的配置, 「你必須改變請求的URL」。不,你不能。那麼你的網址可能是http://localhost:8083/releaseDashboard/project/CSOB.html;和projectName是「CSOB.html」。然後,您必須使用java substring函數從「CSOB.html」中提取「CSOB」。這是一個醜陋的東西!

+0

感謝您的回覆。所以,如果我去這個URL http:// localhost:8083/releaseDashboard/project/CSOB它會顯示hello.jsp的內容。沒關係。但從這個網址,當我點擊我的家,它顯示的URL爲http:// localhost:8083/releaseDashboard/project/home,並映射到相同的控制器方法,而不是映射到控制器方法與@RequestMapping(價值= {「home」}) – sreehari

+0

「當我點擊我的家」。更改該按鈕上的網址。顯然你正在使用一個相對的網址。改正它。參考這個。 http://stackoverflow.com/questions/5559578/having-links-relative-to-root –

+0

目前我對home按鈕的操作是「home」。那麼我的網址應該是什麼? – sreehari

相關問題