【问题标题】:how can i edit the url of my page using JSP and Servlet如何使用 JSP 和 Servlet 编辑我的页面的 url
【发布时间】:2020-12-05 04:52:54
【问题描述】:

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

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

【问题讨论】:

  • 为了在服务器端确认身份验证,您应该在响应中设置一个带有“主页”URL 的重定向标头。您可能还想设置一个会话 cookie,确认用户已通过身份验证
  • 听起来很有帮助。我想详细了解一下,因为我只是这些 Web 项目的初学者,并且在玩重定向、响应和会话方面没有扎实的知识。请问可以吗?
  • 看起来就像 response.sendRedirect(...) stackoverflow.com/questions/34972006/… 我说“...看起来像”因为我这些天在 PHP 中操作...从登录做重定向,只需使用 PHP API。无论如何,试试这个
  • @ControlAltDel 我也需要一个建议。在我的 servlet 文件中,我使用 request.getRequestDispatcher().forward(request, response) 重定向到不同的页面。但我也看到一些开发者在他们的 youtube 视频中使用了“响应”。哪个更好用,为什么?
  • 我不知道你可以绝对地说一个比另一个好。但我认为发送响应标头比将响应转发到不同的 servlet 更好,因为它会更新客户端浏览器中的 url

标签: java jsp redirect servlets servlet-3.0


【解决方案1】:

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

由于您希望在浏览器中更改 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"));
    }
}

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 这不是我要问的,先生!我想知道如何从服务器端编辑 url。您正在解释如何控制会话。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-15
    • 1970-01-01
    • 2018-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多