java 307跳转_使用response.sendRedirect方法在Java中发送Post请求

我想在Java中发送发布请求。

我已经看到了使用Http Client发布请求的示例。

但是我想使用sendRedirect方法。

例如,

https://processthis.com/process?name=xyz&phone=9898989898

我想使用发布请求发送那些参数。 因此,这些参数对任何人都不可见,同时我需要将我的网址重定向到该网址,例如,

response.sendRedirect("https://processthis.com/process");

根据具有HTTP / 1.1的RFC2616,您可以发送307响应代码,这将使user-agent向提供的主机重复其POST请求。

就你而言

response.setStatus(HttpServletResponse.SC_TEMPORARY_REDIRECT);

response.setHeader("Location", url);

响应是您的HttpServletResponse对象。

希望这可以帮助。

当浏览器收到HTTP重定向代码时,它将始终按照标准执行对给定URL的GET或HEAD。这就是为什么必须通过查询字符串发送数据的原因。

如果要通过POST模拟重定向,则可以将包含所需信息的表单发送给客户端,并且在页面加载事件中,可以使用Javascript(通常用于在不同服务器之间进行通信,由SAML使用)自动提交表单。协议)。这是一个例子:

$(document).ready(function() {

document.myRedirectForm.submit();

});

边注:

如果服务器中已有信息,为什么要发送重定向而不是执行给定的操作?

也许您想实现POST / REDIRECT / GET模式?

否。实际上我正在与其他服务器进行交互。用户提交表单后,我将处理数据,然后需要将用户重定向到第三方付款页面。当用户提交带有所有必填隐藏字段的表单时,它工作正常(我尝试过的示例)。但是,在我处理完这些参数后,我想从我的网站手动重定向到第三方付款页面(例如表单提交)。意思是,参数不应该是可见的,但是必须执行请求。有什么办法可以实现。这可能很愚蠢。但是我更新鲜。请告诉我。

这就是创建上述逻辑的原因之一。您将能够在这些服务器之间发布数据,而无需通过查询字符串发送它们。

这种方法的想法是,您正在发送的信息仅对您的服务器(在数据库中,等等)对用户(您通过HTML向他发送他的信息方式)以及对要发布信息的服务器(对用户而言)可见(客户端浏览器将自动发布信息,模拟您的用户的手动发布)。你能用我的例子实现吗?

这是一个来自开源项目的示例,该示例执行与在Java中构建具有javascript并在响应中返回html的html相似的操作。 github.com/keycloak/keycloak/blob/

@Phillip Fleischer:我正在努力实现同样的目标。我的要求是通过java中的POST通过参数重定向到第三方。我应该怎么做。即使我在Java中创建html表单,那又如何呢?请帮忙。

延迟响应,但是如果您查看链接,java将返回html内容,其中包括执行表单发布的onload javascript。我已经在许多库中看到了这一点,但是它实际上是大多数现代浏览器都支持的带有javascript的简单html生成器。

我认为这是不可能的。为什么不使用RequestDispatcher。这将为您工作。只需在请求中设置参数

request.setAttribute("message","Hello test");

RequestDispatcher dispatcher = servletContext().getRequestDispatcher(url);

或-HTTP规范指出,所有重定向都必须采用GET(或HEAD)的形式。如果安全问题,可以考虑加密查询字符串参数。

或-另一个选项,如果有会话,请在servlet的会话中设置参数。重定向到所需页面后,再从会话中获取它。

您不能使用RequestDispatcher转发到外部站点。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。
好的,下面是回答: JavaWeb 登录检查及界面跳转可分为以下几个步骤: 1. 创建登录页面:在 JSP 页面上布置输入用户名和密码的表单。 2. 创建 Servlet:用于接收登录表单提交的数据,并进行验证。 3. 校验用户名和密码:从表单提交的数据获取用户名和密码,然后与数据库的数据进行比对,如果验证通过,则将用户信息存入 Session 。 4. 跳转页面:如果用户信息验证通过,则跳转至主页或其他需要登录才能访问的页面;如果验证不通过,则返回登录界面并给出错误提示。 以下是一个简单的示例: 1. 创建登录页面 login.jsp ``` <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Login</title> </head> <body> <form action="login" method="post"> <input type="text" name="username" placeholder="Username"><br> <input type="password" name="password" placeholder="Password"><br> <input type="submit" value="Login"> </form> </body> </html> ``` 2. 创建 Servlet LoginServlet ``` import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; @WebServlet("/login") public class LoginServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String username = request.getParameter("username"); String password = request.getParameter("password"); if (username.equals("admin") && password.equals("123456")) { HttpSession session = request.getSession(); session.setAttribute("username", username); response.sendRedirect("index.jsp"); } else { response.sendRedirect("login.jsp?error=1"); } } } ``` 3. 在主页 index.jsp 获取用户信息 ``` <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Index</title> </head> <body> <% HttpSession session = request.getSession(); String username = (String) session.getAttribute("username"); out.print("Welcome " + username); %> </body> </html> ``` 在上述示例,我们通过 request.getParameter() 方法获取登录表单提交的数据,然后进行校验。如果校验通过,则将用户名存入 Session ,并调用 response.sendRedirect() 方法跳转至主页 index.jsp。如果校验不通过,则重定向至登录页面 login.jsp,并附带错误提示信息。 希望上述示例对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值