我如何使用 JSP 和 Servlet 编辑页面的 url

how can i edit the url of my page using JSP and Servlet

这是我在本地主机上的项目的 url,它是一个登录页面:: "http://localhost:8080/OnlineExamination"

在这里,一旦登录有效,我希望将 url 更改为“http://localhost:8080/OnlineExamination/home-page”,这样可以防止用户使用当页面重新加载时,他回到登录页面。我如何使用 JSP 和 Servlet 来做到这一点?我使用了提交类型输入,其中锚标记周围的输入导致未提交登录表单。请帮忙!!

您应该使用“解释器”来防止有效的登录用户访问 link。如果您只是将用户重定向到主页,他们仍然可以访问登录页面。 或者你只是创建一个简单的功能,如果他们访问登录页面但已经登录,他们必须重定向到主页。

重定向或转发 - 我应该选择哪一个?

由于您希望在浏览器中更改 URL,因此您必须向浏览器发送重定向指令,而不是将请求转发到其他资源。请注意,当您转发请求时,新资源将从请求中获取所有内容,并且 URL 保持不变。另一方面,在重定向的情况下,浏览器会为新位置创建一个新请求 (URL),这意味着旧请求中的任何内容都无法用于新请求。

如何在请求之间共享一些信息?

您必须选择更大的范围,例如session;只需将信息放入会话并在新位置检索相同的信息即可。

概念说明:

OnlineExamination.java

@WebServlet("/OnlineExamination")
public class OnlineExamination extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/plain");
        // Code to check user credentials
        // ...
        // ...
        request.getSession().setAttribute("loggedIn", true);
        response.sendRedirect("OnlineExamination/home-page");
    }
}

HomePage.java

@WebServlet("/OnlineExamination/home-page")
public class HomePage extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/plain");
        PrintWriter out = response.getWriter();
        out.write("" + request.getSession().getAttribute("loggedIn"));
    }
}

这是一个非常基本的代码,仅用于说明概念。在实际项目中,您可能会选择一些框架,可以提供各种方法来完成所有这些工作。