Java 如何在从Servlet转发到jsp页面时在URL中显示.jsp扩展名

Java 如何在从Servlet转发到jsp页面时在URL中显示.jsp扩展名,java,jsp,servlets,Java,Jsp,Servlets,正如标题所说:当从Servlet转发到jsp页面时,如何在URL中显示.jsp扩展名,而不重定向,从而失去Servlet的功能 如果我使用以下代码从Servlet转发到JSP页面,我的URL中仍然有Servlet: request.getRequestDispatcher("index.jsp").forward(request, response); 您可以重定向到JSP,而不是转发到它: response.sendRedirect("index.jsp"); 你没有 浏览器显示它认为从中

正如标题所说:当从Servlet转发到jsp页面时,如何在URL中显示.jsp扩展名,而不重定向,从而失去Servlet的功能

如果我使用以下代码从Servlet转发到JSP页面,我的URL中仍然有Servlet:

request.getRequestDispatcher("index.jsp").forward(request, response);

您可以重定向到JSP,而不是转发到它:

response.sendRedirect("index.jsp");
你没有

浏览器显示它认为从中获取数据的URL。除非您告诉它通过重定向获得不同的URL,否则它无法知道服务器在幕后做什么。也不应该

从应用程序设计的角度来看,您也不应该在意。使用唯一URL的唯一原因是用户可以设置书签。如果JSP页面需要来自servlet的数据,那么给用户一个不同的URL是没有意义的


如果您死心塌地想要给浏览器一个“.jsp”URL,那么让servlet在会话中存储数据。这是丑陋的、毫无意义的,并且会出现并发访问问题,但它是有效的。

不重定向正是问题所在。我在问题中不知何故遗漏了这一点。servlet在您的URL中,因为您最初向它发送了请求(我想)。如果您希望它消失,浏览器将不得不执行另一个请求。“失去Servlet的功能”是什么意思?如果重定向,则servlet已经执行。