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

将对象从JSP页面传递回Servlet

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

将对象从JSP页面传递回Servlet

了解HTTP的工作原理:

  • 客户端(通常是Web浏览器)会触发HTTP请求。
  • 服务器检索HTTP请求。
  • Servletcontainer创建 new
    HttpServletRequest
    HttpServletResponse
    对象。
  • Servletcontainer使用那些对象调用适当的servlet。
  • Servlet处理请求并将请求和响应转发到JSP。
  • JSP写入响应主体。
  • Servletcontainer提交HTTP响应并 破坏 请求和响应对象。
  • 服务器将HTTP响应发送回客户端。
  • 客户端检索HTTP响应并进行处理(显示HTML,应用CSS,执行JS)。

当您通过提交表单发送新请求时,它将不会重复使用相同的请求和响应对象。

有两种方法可以克服HTTP的这种无状态本质。您需要将此对象转换

String
为JSP并将其包含在JSP的HTML表单的隐藏输入字段中,以便在提交时将其用作请求参数。

<input type="hidden" name="myObject" value="${myObjectAsString}" />

String
由于HTTP和HTML无法理解Java对象,因此必须进行转换。从Java的角度来看,HTML基本上是一种大型语言
String
(在Web浏览器中单击鼠标右键和“
查看源代码”
以查看它)。如果您不将Java对象转换为
String
,则默认情况下,Java对象的
toString()
结果将被打印为HTML,根据定义,该HTML不能转换回原始Java对象。
String
复杂对象最常用的格式是JSON和XML。有很多可用的Java库,它们可以在复杂的Java对象之间以及
String
JSON或XML格式之间进行转换。

或者,如果对象太大或太复杂而无法转换为对象

String
,反之亦然,那么您需要将其存储在服务器的内存或某些数据库中,并将其唯一标识符作为隐藏的输入值传递给周围。通常,会话范围用于此目的。

因此,在准备数据并转发到JSP页面的servlet中:

String myObjectId = UUID.randomUUID().toString();request.getSession().setAttribute(myObjectId, myObject);request.setAttribute("myObjectId", myObjectId);request.getRequestDispatcher("/WEB-INF/page.jsp").forward(request, response);

并且,在转发的JSP页面中:

<form action="nextservlet" method="post">    <input type="hidden" name="myObjectId" value="${myObjectId}" />    ...</form>

最后,在下一个处理表单提交的servlet中:

String myObjectId = request.getParameter("myObjectId");Object myObject = request.getSession().getAttribute(myObjectId);request.getSession().removeAttribute(myObjectId);// ...


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

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

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