/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-pattern
of 上/logged/form
,替换<form method="post" action="/servlet">
by <form method="post" action="/logged/form">
,然后您可以使用/调用它http://example.com/logged/form
。
您还可以更进一步,采用页面控制器模式并利用它HttpServletRequest#getPathInfo()
来获取请求路径(以及 JSP 文件的路径),这样您就不需要为每个 JSP 编写一个新的 servlet。