如果我想使用Web应用程序跟踪与每个客户端的对话状态,那么哪个更好的替代方法是使用Session Bean还是HTTP Session?
//request is a variable of the class javax.servlet.http.HttpServletRequest
//UserState is a POJO
HttpSession session = request.getSession(true);
UserState state = (UserState)(session.getAttribute("UserState"));
if (state == null) { //create default value .. }
String uid = state.getUID();
//now do things with the user id
在执行ServletContextListener时注册为Web应用程序侦听器WEB-INF/web.xml
:
//UserState NOT a POJO this this time, it is
//the interface of the UserStateBean Stateful Session EJB
@EJB
private UserState userStateBean;
public void contextInitialized(ServletContextEvent sce) {
ServletContext servletContext = sce.getServletContext();
servletContext.setAttribute("UserState", userStateBean);
...
在JSP中:
public void jspInit() {
UserState state = (UserState)(getServletContext().getAttribute("UserState"));
...
}
同一JSP正文中的其他地方:
String uid = state.getUID();
//now do things with the user id
在我看来,它们几乎是相同的,主要区别在于UserState实例是HttpRequest.HttpSession
在前者中传输的,而在ServletContext
后者的情况下是的。
两种方法中哪一种更可靠,为什么?
正如@BalusC所指出的,在您的示例中,所有客户端的EJB都是相同的-而不是您想要的。
您仍然可以更改它,并且每个客户端只有一个EJB,例如,当您在用户登录并将其存储在会话中时创建EJB或类似的东西时。
但是,使用HttpSession
和有状态会话Bean(SFSB)之间还有其他更细微的区别。特别是这两个:
有关更多详细信息,请参见此答案:正确将SFSB与Servlet结合使用
总结:我建议您采取这种HttpSession
做法,并反对您的SFSB;仅在SFSB提供了您无法使用的功能时才使用SFSB,事实HttpSession
并非如此。
Cookie 通过 HTTP cookie 的会话跟踪是最常用的会话跟踪机制,且所有 servlet 容器都应该支持。 容器向客户端发送一个 cookie,客户端后续到服务器的请求都将返回该cookie,明确地将请求与会话关联。会话跟踪 cookie 的标准名字必须是JSESSIONID。容器也允许通过容器指定的配置自定义会话跟踪cookie的名字。 所有 servlet 容器必须提供能够配置容器
问题内容: 我想在学习活动中构建一个简单的Web应用程序。如果遇到首次访问者,Webapp应该要求用户输入他们的email_id,否则它会通过cookie记住用户并自动登录以执行功能。 这是我第一次创建基于用户的Web应用程序。我心中有一个蓝图,但是我无法弄清楚如何实现它。首先,我对收集用户cookie的方式感到困惑。我研究了各种教程和flask_login,但是与flask_login所实现的相
问题内容: 我有一些PHP脚本可以登录,如果登录成功,则返回带有会话ID的JSON数组。 在我的应用程序中,我想登录首页并继续进行登录。我创建了一个单例类,其中包含一个会话ID(以及其他一些字段),该ID从PHP页面从JSON接收。根据用户的操作检查此单例对象的字段“ session_id”。 如果用户要注销,则将session_id设置为null从而注销。 登录时,我还使用HttpURLConn
在我以前做编码的时候,我主要使用无状态的会话bean,所有跨页遍历所需的信息都放在HTTP Session对象中。当时(甚至现在),我从来没有理解过EJB的“USP”对于“业务层”实现是“透明的”和“安全的”,它处理骨架和存根以及其他行话的各种方法,这些行话是以易用性/安全性为名的矫枉过正的伪装。我只是想知道,如果可以通过SLSB+HttpSession实现同样的功能,那么为什么要使用有状态会话E
问题内容: 我刚刚完成了在PHP中创建整个登录和注册systsem的操作,但是我的问题是我还没有使用任何会话。我是PHP的新手,以前从未使用过会话。我想做的是,在用户注册并填写登录表单后,他们仍将停留在同一页面上。因此,其中一部分将是会话已登录,另一部分将是其他(用户未登录,请显示登录表单)。谁能告诉我如何开始? 问题答案: 希望这可以帮助 :) 开始会话,您需要在页面顶部或在调用会话代码之前说出
我有一个与CRUD能力的平均应用程序完全测试与邮递员。我一直试图坚持登录相当长的一段时间,现在没有运气。我已经阅读并尝试了以下内容 护照文档 Toon Io关于登录的博客 快速会话 苏格兰io,节点auth容易 加上一些其他简单的阅读材料(很多这样的问题) 但是我只能注册和登录一个用户,不能用会话持久登录。 下面是我对用户登录的理解,包括我的项目中的代码示例和邮递员结果的截图以及控制台日志。 我有