2011-04-05 90 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")提供。