2011-04-05 93 views
2

我需要有這樣的事情:如何通過web.xml中的URL傳遞參數?

/{} paramvalue/URL

並獲得參數值的方式的值,URL指向的servlet。

例如:

/josua/profile文件 /瑪麗/消息

「/ josua /」 和 「/瑪麗/」 是,我需要得到

的參數,然後我需要映射/ {名} /輪廓ProfileServlet.class和/ {名} /消息MessagesServlet.class

有什麼辦法,我能做到這一點?

回答

1

這有點聽起來像Pretty URLs。如果你是真正達到它,我建議你尋找到這些框架,PrettyFaces(用於JSF)和Stripes的。

除此之外,它不是我們通常在Java中練習的方式,這可能會帶來很多缺點,您應該能夠將您的URL映射到您的web.xml,see BalusC post中的過濾器。然後利用HttpServletRequest方法如getRequestURI()繼續下去。此外,其良好的尋找到regex,並嘗試利用了以先到了這個系統,爲Django(蟒web開發框架)來實現它。

+0

URL模式'東西/ */profile'無效。 – BalusC 2011-04-05 12:34:18

+0

感謝BalusC。實際上,我非常失去聯繫。 – 2011-04-06 02:54:15

1

映射一個Filter/*其確實基本上doFilter()方法如下。

String[] pathParams = ((HttpServletRequest) request).getRequestURI().substring(1).split("/", 2); 
String userName = pathParams[0]; 
String servletUrl = pathParams[1]; 

request.setAttribute("userName", userName); 
request.getRequestDispatcher("/" + servletUrl).forward(request, response); 

與地圖上/messages/*/profile/*ProfileServletMessagesServlet。在這兩個servlet中,用戶名應由request.getAttribute("userName")提供。