我想要一个可以在没有参数的情况下使用的简单 servlet。就像是 :
http://servername:8080/do/view/username/address
并像参数一样使用它:
http://servername:8080/do?action=view&login=username&page=address
两个 url 将具有相同的行为。我更喜欢不使用任何框架,只使用 servlet 和过滤器。
如何从 servlet 获取 url 名称?最好的解决方案是什么?
回复:
根据@BalusC 的回复,我创建了以下 servlet,可以满足我的所有需求:
@WebServlet("/do/*")
public class ActionTestCasesServlet extends HttpServlet {
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException
{
String pathInfo = request.getPathInfo();
String[] parts = pathInfo.substring(1).split("/");
RequestDispatcher destination = getServletContext()
.getRequestDispatcher("/" + parts[0] + ".jsp");
if (parts.length > 1) {
request.setAttribute("username", parts[1]);
}
if (parts.length > 2) {
request.setAttribute("page", parts[2]);
}
destination.forward(request, response);
}
}
此代码调用“view.jsp”传递属性“用户名”和“页面”。