/logged/form.jsp应该是对的。我建议阅读 appserver 日志。很有可能有IllegalStateException: response already committed内部。
等等,等等,您的实际问题是您想更改访问者在地址栏中看到的 URL?
如果是这样,那么不,前锋不可能做到这一点。然后我建议从另一端解决问题。form.jsp只需在文件夹中“隐藏”/WEB-INF并始终使用 servlet 来获取/发布表单。
伪:
protected void doGet(request, response) {
request.getRequestDispatcher("/WEB-INF/logged/form.jsp").forward(request, response);
}
protected void doPost(request, response) {
doYourSubmitThingHere();
request.getRequestDispatcher("/WEB-INF/logged/form.jsp").forward(request, response);
}
将此 servlet 映射到url-patternof 上/logged/form,替换<form method="post" action="/servlet">by <form method="post" action="/logged/form">,然后您可以使用/调用它http://example.com/logged/form。
您还可以更进一步,采用页面控制器模式并利用它HttpServletRequest#getPathInfo()来获取请求路径(以及 JSP 文件的路径),这样您就不需要为每个 JSP 编写一个新的 servlet。