2014-10-08 96 views
0

我創建了一個Spring Web MVC項目。我想在url中使用.jsp處理請求,以便所有URL中的.jsp請求都由同一個控制器處理。在Spring中解析包含.jsp的URL請求

以下是我使用web.xml中的URL模式

<servlet-mapping> 
     <servlet-name>project</servlet-name> 
     <url-pattern>/</url-pattern> 
</servlet-mapping> 

在控制器中的註釋是這樣的

@RequestMapping("/welcome") 

有了這個,我能夠解決的形式http://localhost:8080/project/welcome的網址

但不是這一個:http://localhost:8080/project/welcome.jsp

回答

2

那是一個春天MVC控制器非常少見的要求,但以春一個非常靈活的工具。

你可以試試這個(未經測試...):

@RequestMapping("/{name}.jsp") 
public ModelAndView jspHandler(@PathVariable("name") String name) { 
... 

控制器將獲得所有*.jsp請求,你會在name變量由它被稱爲

1

您可以使用此:

@RequestMapping(value={"/welcome","/welcome.jsp"}) 
+0

這將工作,但我想要做的是運行該特定控制器的所有類型的.jsp請求。即http:// localhost:8080/project/abc.jsp也應該被處理。 – rdp 2014-10-08 05:04:51

+0

你也可以使用正則表達式來實現它。 – Jason 2014-10-08 05:10:50

0

它的真實姓名找到很容易就可以做到使用以下技術

添加下面的代碼在你的控制器

@RequestMapping("/{jspName}.jsp") 
    public String allRequestProcess(@PathVariable("jspName") String jspName) { 
     System.out.println("JSP Page Name : " + jspName); 
    } 

但在一個控制器中很難處理每個這樣的請求。 儘量避免這種情況。最好使用其他的.jsp