当前位置: 首页 > 知识库问答 >
问题:

将值从“doGet”传递到“doPost”(在同一个servlet内)

贺雅健
2023-03-14

编辑:这不是这个问题的重复,因为我正在尝试在同一个servlet的doGetdoPost之间发送数据。另一个问题询问如何在不同的servlet之间发送数据,但我已经通过将信息附加到URL来做到这一点(参见下面的第一个代码片段),这在同一个servlet中是做不到的。另外,链接的问题来自2011年,使用Tomcat 5.5,而我使用8.5。

我正在开发一个带有两个servlet和一个过滤器的小型Java 8/Tomcat 8.5“应用程序”:如果servlet路径为“/你好”,则过滤器会启动,并在没有活动会话的情况下执行此操作:

response.sendRedirect(request.getContextPath() + "/login?p="+request.getServletPath());

这将加载/login servlet(LoginServlet.java)及其html文件(LoginHTML. html):

<body>
    <form method="POST" action="login">
        <label for="username">Username:</label><br>
        <input type="text" id="username" name="username"><br>
        <label for="password">Password:</label><br>
        <input type="password" id="password" name="password"><br><br>
        <input type="hidden" id="redirect" value="">
        <input type="submit" value="Login">
    </form>
</body>

单击“登录”按钮,然后加载用户之前尝试访问的页面(通过LoginServlet.doPost),在我的情况下是“/你好”(但也可以是“/你好/bla”或“/你好/thisistest”-即使这些还不存在。

LoginServlet。多吉特:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    String redi = request.getParameter("p");
    RequestDispatcher dispatcher = request.getRequestDispatcher("/html/LoginHTML.html");
    dispatcher.forward(request, response);
}

redi包含之前访问的路径,但我现在正在寻找一种方法将其传递给doPost,以便它可以返回上一页。

正如您在上面的html代码中所看到的那样,我已经将隐藏属性redirect添加到表单中,但是如何在运行时将其值设置为redi中的值(可能在doGet中),这样我就可以通过请求在doPost中访问它了。getParameter(“重定向”)?还有别的方法吗?

共有1个答案

郭华美
2023-03-14

这不是最好的方法,但你可以试试。您可以使用JavaServer页面和JSTL或其他类似的东西来代替HTML。

在方法中使用请求。setAttribute(“redi”,redi)。在JSP中,在隐藏字段值中使用${redi}。在方法中使用请求。getParameter(“重定向”)

 类似资料:
  • 问题内容: 我已经开发了一个将信息发送到的HTML页面。在中,我正在使用方法和: 在调用Servlet的html页面代码中是: method = “get”在Servlet中使用时,我会获得id和password的值,但是在使用时method = “post”,id和password会设置为null。为什么在这种情况下我无法获取值? 我想知道的另一件事是如何使用Servlet生成或验证的数据。例如

  • 我正在尝试将某些值从servlet传递到JSP页面,并添加已传递到标记的值,阅读了许多文章,我得到了以下代码。 使用输入页面选择文件 验证上传的文件 调用上传。java将上传的文件保存在WEB-INF中 在上载的文件中,选定的文件保存为“我的”。txt 使用缓冲区读取文件内容并将其保存到变量 将其传递到JSP页面 上载JAVA 上传文件后, mypage.jsp 现在,当我点击上传按钮完成所有这些

  • 问题内容: 我想将多个值从一个servlet传递到另一个servlet。请告诉我如何通过? 问题答案: 取决于您是否使用会话: 使用session.setAttribute()将数组存储在会话变量中。 使用session.getAttribute();检索数组。 但是,变量将一直保留到会话终止,您用其他东西覆盖它或将其删除为止。 如果将一个servlet转发到另一个servlet,则可以将其存储在

  • 我是Web应用程序的新手。我的问题:如何将相同的参数从一个JSP传递到两个servlet?然后将不同的参数从servlet传递到同一个JSP? 重要!!我们应该先做过程A,然后再做过程B!!!! 由于项目需要太多进程,我想将这些进程分成两个servlet。 目前,我完成了实现进程A,它将搜索词从SEARCH PAGE JSP传递到SERVLET A(执行进程A)并将结果传递给WELCOME PAG

  • 我需要你的帮助,在这个特殊的问题上,我想传递一个隐藏输入类型的值。jsp程序到servlet程序 我现在做的基本上是这样的 从servlet中我得到了值 它没有打印任何想法。jsp表单方法是post,servlet方法是doPost 有什么想法为什么它不传递参数吗?

  • 我正在尝试将包含object的ArrayList从servlet传递到JSP。但是 Servlet文件: JSP文件: