gpt4 book ai didi

java - 在java标签中使用EL

转载 作者:行者123 更新时间:2023-12-01 15:33:16 30 4
gpt4 key购买 nike

我有一个属性,已从servlet 转发到jsp 文件,虽然我可以将这个对象与EL 一起使用,但我想知道如何在java 标记内访问它。一个例子如下:

 Searching for "${search_phrase}" returned
<c:forEach var="video" items="${results}">
${video.getVideoName()}
${video.getVideoID()}
</c:forEach>

所以这里的结果是 ArrayList从 servlet 转发到 jsp 的 Video 类型

我想访问此ArrayList里面<% %>标签,以便执行一些我无法使用 EL 完成的更复杂的任务。

有人知道怎么做吗?

附带说明一下,这个 ArrayList我正在创造的东西可能会变得更大。这个存储在哪里?在服务器上或在某些用户临时文件中?如果它存储在服务器内存中,它会在一段时间/某个事件(例如请求 ArrayList 的用户)后被清除吗?关闭与服务器的连接?

最佳答案

这完全取决于您存储列表的位置。如果您将其存储在请求属性中(而不是其他任何地方),那么在处理请求时它将有资格进行垃圾收集。

如果您将其存储在 session 属性中,那么它将存储在服务器内存(和/或文件系统或数据库,具体取决于容器配置)中,直到 session 超时或无效,或者直到您删除它。 HTTP 是一种无状态协议(protocol)。用户没有与服务器的连接。

<% %>之间的Java代码不是java标签。它是 scriptlet,不应该在 JSP 中使用。如果您需要做一些 EL 或 JSP 标记无法轻松完成的事情,那么

  • 自己编写一个自定义 JSP 标记,将 Java 代码放入此 JSP 标记中,然后从 JSP 调用该标记,或者
  • 或者编写自定义 EL 函数,并从 JSP 调用该函数
  • 或者在分派(dispatch)到 JSP 之前在 Controller (servlet、MVC 框架操作)中准备工作,以便 JSP 可以轻松生成标记。

可以使用与用于存储列表的 setAttribute 方法相对应的 getAttribute 方法来访问该列表:

HttpServletRequest.setAttribute() --> HttpServletRequest.getAttribute()
HttpSession.setAttribute() --> HttpSession.getAttribute()
ServletContext.setAttribute() --> ServletContext.getAttribute()

关于java - 在java标签中使用EL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9293096/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com