2011-08-09 63 views
0

我想,當用戶點擊以下網址:我可以在java中有自定義的servlet URL嗎?

http://host:8080/AppName/ServletName/Param1/Param2 

它應該去一個名爲ServletNameParam1Param2成爲請求參數的servlet。我在紅寶石項目中看到過這種類型的網址。在Java中可能嗎?

+0

BalusC發佈了一個awnser到這個地方,讓我看看。 – Jacob

+2

這是[答案](http://stackoverflow.com/questions/6678029/dynamic-urls-in-java-web-application-like-in-rails/6678490#6678490) – Jacob

+0

@cularis:是的。 +1。 –

回答

2

是的,你可以用servlet做類似的事情。您需要設置servlet映射在web.xml中是這樣的:

<servlet-mapping> 
    <servlet-name>ServletName</servlet-name> 
    <url-pattern>/ServletName/*</url-pattern> 
</servlet-mapping> 

讓所有請求,並在servlet需要解析的HttpServletRequest.getPathInfo()結果。

0

我沒有這樣做,甚至還沒有看到,但嘗試這個

首先在web.xml網址映射這樣

<servlet> 
    <servlet-name>ServletName</servlet-name> 
    <servlet-class>ServletName</servlet-class> 
</servlet> 
    <servlet-mapping> 
    <servlet-name>ServletName</servlet-name> 
    <url-pattern>/ServletName/Param1/Param2</url-pattern> 
</servlet-mapping> 

,然後用得到的URL字符串 String url=request.getRequestURI();

然後你可以拆分並得到param1和param2。

3

如果您使用的是Spring MVC,則可以映射@Controller並在@RequestMapping中訪問參數@PathVariable

@Controller 
public class MyController { 

    @RequestMapping("/{param1}/{param2}) 
    public Response get(@PathVariable("param1") String param1, @PathVariable("param2") String param2) { 
    //method body 
    } 

} 
相關問題