0

我是使用会话管理的新手,我正在使用带有 MySQL 作为后端的 struts。我正在开发一个简单的时间表应用程序。我的要求是当用户在登录页面成功登录时,他应该能够添加保存在该用户会话范围内的工作或完成的任务。同样,他应该只能看到他的时间表数据,就像从数据库中检索数据的正常会话范围一样。是否可以在没有 Action 类(Java 源代码)的情况下使用 JSTL 标记进行会话范围的后端交互。请从头到尾告诉一个简单的详细过程来实现这一点。

我很困惑,如何使存储在一个表或数据库中的所有用户数据在用户会话范围内工作。如果不是,应该如何存储数据(为每个用户单独存储?)请解释一下。

4

1 回答 1

0

其实很简单。

使用 Struts,每个请求都发送到 Struts servlet,后者将其分派给 Struts 动作。

Struts 操作从操作表单中获取来自用户的输入数据。它还可以访问会话。有了所有这些信息,它就可以从数据库中获取数据,并将这些数据(作为 Java Bean)存储到请求属性中。

然后该动作返回一个动作转发,并且 Struts servlet 将请求转发到相应的 JSP 页面。该 JSP 页面使用存储在操作请求属性中的数据生成 HTML。

因此,登录后,您应该在会话中拥有经过身份验证的用户的 ID。该操作可以使用此用户 ID 从属于此用户的数据库中获取数据:

select foo.id, foo.name, foo.description from FOO foo where foo.user_id = ?

不要试图从 JSP 中的数据库中获取数据。JSP 应该只生成 HTML。从操作类调用的 Java 代码的工作是从会话中获取用户 ID 并使用此用户 ID 从数据库中获取数据。这就是 Struts 提倡的 MVC 模式的全部意义所在。

于 2012-07-05T07:26:01.580 回答