栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

将变量从JSP传递到servlet

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

将变量从JSP传递到servlet

在纯Servlet / JSP世界中,将数据传递/提交到服务器的标准方式 (例如,从JSP到Servlet)是使用
HTML表单

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

您还可以在路径后 的请求URL中传递查询字符串中的数据 (当您在表单中使用 GET 方法而不是 POST
时,也会发生这种情况)。不过,这是简单的情况下,如构建网址分页等(你可以看到与其他查询这里构建的URL的例子:创作URL在JSP),
例如,在URL参数传递

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

有关 使用 GETPOST 方法提交数据之间区别,请 参见此处:

  • 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名称)

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


*使用Java EE *交换数据的另一种方法 是将数据作为属性存储在不同的 作用域中 。(以下是我对SO的回答之一的摘录)

Java EE 5中有 4个作用域 (请参阅Java EE
5教程:使用作用域对象)。在Java
EE 6和Java EE 7中,有 5个作用域 (请参阅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(在
session范围内 )中设置的那些属性将一直存在,只要该会话存在,当然,只有该会话所属的用户才可以使用。

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

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


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

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

正如用户@neel和@Sanchit注意到的那样,您正在

request
对象中设置属性,但尝试从中获取属性
session
。难怪您遇到
null
这种情况。


希望这会帮助你。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/397591.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号