我需要这样的事情:
/ {paramvalue} / URL
获取param值的值,并将url指向servlet。
例如:
/ josua /简档 /玛丽/消息
“/ josua /”和“/ mary /”是我需要获取的参数
然后我需要将/ {username} / profile映射到ProfileServlet.class和/ {username} / messages到MessagesServlet.class
我有什么方法可以做到这一点吗?
答案 0 :(得分:1)
有点听起来像Pretty URLs。如果你真的很喜欢它,我建议你研究一下这些框架,PrettyFaces(对于JSF)和Stripes。
此外,它不是我们通常在Java中练习的方式,而且这可能带来一些缺点,您应该能够将您的网址映射到web.xml
,see BalusC post中的过滤器。然后使用HttpServletRequest
等getRequestURI()
方法继续进行。此外,它很好地研究regex
并试图利用它来提出这个系统,因为Django(一个python web开发框架)实现了它。
答案 1 :(得分: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);
并ProfileServlet
上的/profile/*
和MessagesServlet
上的/messages/*
。在两个servlet中,用户名应该由request.getAttribute("userName")
提供。