我需要有这样的事情:如何通过web.xml中的URL传递参数?
/{} paramvalue/URL
并获得参数值的方式的值,URL指向的servlet。
例如:
/josua/profile文件 /玛丽/消息
“/ josua /” 和 “/玛丽/” 是,我需要得到
的参数,然后我需要映射/ {名} /轮廓ProfileServlet.class和/ {名} /消息MessagesServlet.class
有什么办法,我能做到这一点?
我需要有这样的事情:如何通过web.xml中的URL传递参数?
/{} paramvalue/URL
并获得参数值的方式的值,URL指向的servlet。
例如:
/josua/profile文件 /玛丽/消息
“/ josua /” 和 “/玛丽/” 是,我需要得到
的参数,然后我需要映射/ {名} /轮廓ProfileServlet.class和/ {名} /消息MessagesServlet.class
有什么办法,我能做到这一点?
这有点听起来像Pretty URLs。如果你是真正达到它,我建议你寻找到这些框架,PrettyFaces(用于JSF)和Stripes的。
除此之外,它不是我们通常在Java中练习的方式,这可能会带来很多缺点,您应该能够将您的URL映射到您的web.xml
,see BalusC post中的过滤器。然后利用HttpServletRequest
方法如getRequestURI()
继续下去。此外,其良好的寻找到regex
,并尝试利用了以先到了这个系统,为Django(蟒web开发框架)来实现它。
映射一个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/*
的ProfileServlet
和MessagesServlet
。在这两个servlet中,用户名应由request.getAttribute("userName")
提供。
URL模式'东西/ */profile'无效。 – BalusC 2011-04-05 12:34:18
感谢BalusC。实际上,我非常失去联系。 – 2011-04-06 02:54:15