将变量从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