将变量从JSP传递到servlet

一直以来,当我在Google上进行搜索时,我都会在Stackoverflow上找到许多答案,这些答案涉及将变量从JSP传递到servlet。但我想知道,我没有得到以下答案:How

to pass a variable from JSP to a servlet class? Is it possible?

实际上,我正在做一个简单的 PhoneBook 应用程序。在这里,我必须将联系人ID发送到Servlet进行编辑和删除。如何传递该值?

我知道,我们可以使用来将变量从servlet传递到JSP,request.setAttribute(key, value)

但是当我使用它在JSP中设置变量并再次使用来获得变量时,session.getAttribute(key )结果为null。

神救救我。

回答:

(例如,从JSP到Servlet)是使用

,即与使用其他技术(ASP.NET, PHP等)。而且它是纯HTML页面还是JSP页面都没有关系。从表单向服务器提交数据的推荐/最常用的方法是 POST

您还可以在路径后 (当您在表单中使用 GET 方法而不是 POST

时,也会发生这种情况)。不过,这是简单的情况下,如构建网址分页等(你可以看到与其他查询这里构建的URL的例子:创作URL在JSP),

例如,在URL参数传递

http://example.com/foo?param1=bar&page=100

有关 的 参见此处:

  • HTML表单上的GET与POST请求

  • 在HTML表单中,使用GET方法和POST有什么区别?

因此,您可以配置一些 servlet 来处理从JSP或HTML等发送/提交的数据。强烈建议使用 POST

方法提交数据,并分别使用doPost()servlet中的方法处理提交的数据。然后,您可以使用以下ServletRequest方法之一获取客户端在请求中传递的参数:

  • java.lang.String getParameter(java.lang.String名称)
  • java.util.Map getParameterMap()
  • java.util.Enumeration getParameterNames()
  • java.lang.String [] getParameterValues(java.lang.String名称)

这是一个带有示例的不错的教程:处理客户请求:表单数据


是将数据作为属性存储在不同的 。(以下是我对SO的回答之一的摘录)

Java EE 5中有 (请参阅Java EE

5教程:使用作用域对象)。在Java

EE 6和Java EE 7中,有 (请参阅Java EE

6教程:使用作用域和Java EE

7教程:使用作用域)。最常用的是:

  • 要求范围
  • 会议范围
  • 应用范围 (Web上下文)

通过设置适当的属性,您可以在上述所有范围中存储一些数据。

这是Java EE

API文档中与ServletRequest.setAttribute(String,Object)方法有关的

的引文:

void setAttribute(java.lang.String name,

java.lang.Object o)

在此请求中存储属性。 。此方法最常与RequestDispatcher结合使用。

因此,对于每个新请求,您在 请求中 设置的先前属性都会丢失。在 请求中 设置属性后, 将请求

到所需页面。如果您重定向,这将是一个全新的请求,因此先前设置的属性将丢失。(如果您仍然想使用重定向,请阅读以下内容

在HttpSession(在

)中设置的那些属性将一直存在,只要该会话存在,当然,只有该会话所属的用户才可以使用。

至于上下文属性,它们应可用于整个Web应用程序( )以及所有用户,此外,只要Web应用程序存在,它们就可以存在。

另外,也许本文对您也很有用:Java EE 6范围如何影响用户交互


也要注意以下 。您写道(引用):

我知道,我们可以使用request.setAttribute(key,value)将变量从servlet传递到jsp,但是当我用它在jsp中设置变量并再次使用session.getAttribute(key)获得它时,结果为null。

正如用户@neel和@Sanchit注意到的那样,您正在request对象中设置属性,但尝试从中获取属性session。难怪您遇到null这种情况。


希望这会帮助你。

以上是 将变量从JSP传递到servlet 的全部内容, 来源链接: utcz.com/qa/398484.html

回到顶部