从JSP传递变量与Servlet(Passing variables from JSP to ser

2019-08-19 06:54发布

一直以来,当我搜索在谷歌,我这是张贴在大约#1传递变量从JSP的servlet的答案打。 但我想知道,我没有得到的答案是: How to pass a variable from JSP to a servlet class? Is it possible? How to pass a variable from JSP to a servlet class? Is it possible?

其实我做一个简单的电话簿应用程序。 这里我接触式ID发送给一个servlet进行编辑和删除。 我怎样才能通过这个价值?

我知道,我们可以从servlet的通过传递变量JSP request.setAttribute(key, value)但是当我用它来设置变量,JSP,并再次用得到它session.getAttribute(key )则结果为空值。

神救救我。

Answer 1:

在纯粹的Servlet / JSP世界传递/数据提交到服务器 (在你的情况下,从JSP到Servlet) 的标准方法是使用HTML形式 ,即以同样的方式使用其它技术时为(ASP.NET, PHP等)。 而且这不要紧,无论它是一个纯HTML页面或JSP页面。 从形式向服务器提交数据的推荐的/最常用的方法是POST。

您也可以通过在包含在路径后的请求URL查询字符串数据 (当改为POST,你在表单中使用GET方法也会发生这种情况)。 不过,这是简单的情况下,如构建网址分页等(你可以看到构建的URL与这里的其他查询的例子: 在JSP撰写URL )
在URL传递参数的实施例:
http://example.com/foo?param1=bar&page=100

提交使用GETPOST方法在这里读到的数据之间差异

  • GET对在HTML表单POST请求

  • 在HTML表单,什么是使用GET方法与POST之间的区别?

所以,你可以配置一些servlet来处理发送/强烈建议提交使用POST方法,数据数据从一个JSP或HTML等提交,并分别处理使用提交的数据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中名称)

这里是一个很好的教程,范例: 处理客户端请求:表单数据

上面的教程是从以下过程:
构建Web应用程序在Java中:开头和中间的Servlet和JSP教程


使用Java EE 交换数据的另一种方法是将数据存储在不同的范围的属性。 (以下是摘自上,所以我的答案之一)

4个领域中的Java EE 5(见的Java EE 5教程:使用范围的对象 )。 在Java EE 6和Java EE中7有5个范围 (参照该Java EE 6教程:使用作用域和Java的EE 7教程:使用作用域 )。 最常用的是:

  • 申请范围
  • 会议范围
  • 适用范围 (Web上下文)

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

下面是相关的Java EE API文档报价ServletRequest.setAttribute(字符串,对象)关于请求范围的方法:

 void setAttribute(java.lang.String name, java.lang.Object o) 

商店在这个要求的属性。 属性是请求之间重置 。 这种方法是最经常与RequestDispatcher的结合使用。
...

因此,每一个新的请求,您在请求中设置以前的属性都将丢失。 在您设定的请求的属性,您必须将请求转发给需要的页面。 如果您重定向,这将是一个完全新的请求,从而预先设置的属性都将丢失。 (如果你仍然想使用重定向阅读: 错误消息的Servlet重定向到同一页 )

这是在设置的属性HttpSession中 (在会话范围内 ),只要将居住在会话的生命,当然,将只提供给哪个会话所属的用户。

对于上下文属性他们是为了提供给整个Web应用程序( 适用范围 ),并为所有用户,再加上只要Web应用程序生活,他们住。

此外,也许这篇文章会为你有用的: Java EE 6个的作用域如何影响用户交互


另外要注意以下问题 。 你写的(引用):

我知道,我们可以从servlet的传递变量使用了request.setAttribute(键,值)的jsp但是,当我用它来设置变量,JSP和再次使用session.getAttribute(键)得到它,然后结果为空值。

随着用户@neel和@Sanchit已经注意到了,你设置的一个属性request对象,而是试图把它从后面session 。 难怪你越来越null在这种情况下。


希望这会帮助你。



文章来源: Passing variables from JSP to servlet