Jsp Servlet URL重定向

Jsp Servlet URL重定向,jsp,servlets,Jsp,Servlets,在JAVA动态Web应用程序中,我通过action=“post”将Payment.jsp中的值传递给servlet。 在servlet doPost()方法中: 在makepayment.jsp中,我使用${cost}获取值 我的问题是,当我进入地址栏并按enter键时,${cost}不会打印任何内容 我知道这是因为它调用doGet()方法,但我如何解决这个问题呢?您需要了解servlet应用程序的流程 在浏览器中提交表单时,浏览器会序列化输入参数并创建GET/POST请求。它将此请求发送到您的

在JAVA动态Web应用程序中,我通过action=“post”将Payment.jsp中的值传递给servlet。 在servlet doPost()方法中:

在makepayment.jsp中,我使用${cost}获取值

我的问题是,当我进入地址栏并按enter键时,${cost}不会打印任何内容


我知道这是因为它调用doGet()方法,但我如何解决这个问题呢?

您需要了解servlet应用程序的流程

在浏览器中提交表单时,浏览器会序列化输入参数并创建
GET
/
POST
请求。它将此请求发送到您的服务器,并选择一个servlet来处理它。您在请求属性中添加的属性在该请求的生命周期内都是有效的,即在返回响应之前。他们不会在第二次请求中可用

在您的问题中,您提交了一个
POST
请求(例如通过单击按钮),请求被发送,servlet的
doPost()
方法被执行。这些线

request.setAttribute("cost", cost);
request.getRequestDispatcher("makepayment.jsp").forward(request, response); 
向请求属性添加属性
cost
,并转发到
jsp
资源。该资源将有权访问请求属性,例如,
${cost}
,同时生成最终将返回给客户端的响应

我的问题是,当我进入地址栏并按enter键时,${cost}不会打印任何内容


如果转到地址栏并按enter键,将发送一个新请求,因此,在没有看到您的
doGet()
的情况下,上一个请求的请求属性将不存在。您需要以某种方式持久化它们,可能是使用会话属性

你的目标不明确
request.setAttribute("cost", cost);
request.getRequestDispatcher("makepayment.jsp").forward(request, response);