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

从Servlet访问JSF会话范围的Bean,该Bean由嵌入在JSF Webapp中的applet调用

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

从Servlet访问JSF会话范围的Bean,该Bean由嵌入在JSF Webapp中的applet调用

如果返回

null
,则只能表示两件事:

  1. JSF尚未预先创建bean。
  2. applet-servlet交互与Webapp使用的HTTP会话不同。

考虑到您描述功能需求的方式,我认为是后者。您需要确保同时传递Web应用程序的会话标识符以及来自小程序的HTTP请求。它可以采用

JSESSIONID
cookie或
jsessionid
URL路径属性的形式。

首先,您需要向applet告知该Webapp正在使用的会话ID。您可以通过将参数传递到

<applet>
<object>
标记包含小程序的标签来实现

<param name="sessionId" value="#{session.id}" />

(这

#{session}
是一个隐式的JSF
EL变量,它引用当前电流
HttpSession
,该变量又具有一种
getId()
方法;您无需为此创建托管bean,上面的代码按原样完成)

可以在小程序中按如下方式检索它:

String sessionId = getParameter("sessionId");

您没有描述如何与Servlet交互,但是假设您为此使用标准JavaSEURLConnection(指向

@WebServlet("/servleturl")
Servlet),则可以使用它
setRequestProperty()
来设置请求标头:

URL servlet = new URL(getCodebase(), "servleturl");URLConnection connection = servlet.openConnection();connection.setRequestProperty("cookie", "JSESSIonID=" + sessionId);// ...

另外,您也可以将其作为URL路径属性传递:

URL servlet = new URL(getCodebase(), "servleturl;jsessionid=" + sessionId);URLConnection connection = servlet.openConnection();// ...

(请注意,这两种情况都重要)

无论哪种方式,applet-servlet交互都将在与JSF托管bean相同的HTTP会话中进行。



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

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

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