SessionAware 接口示例

17 Mar 2025 | 4 分钟阅读

Action 类必须实现 SessionAware 接口,以便将信息存储在会话范围内。

SessionAware 接口的方法

它只包含一个方法 setSession。

公共和抽象方法描述
void setSession(Map<String,Object> map)struts 框架通过传递 SessionMap 类的实例来调用此方法。

SessionMap 类

struts 2 框架传递 org.apache.struts2.dispatcher.SessionMap 的实例。它扩展了 java.util.AbstractMap 类,该类实现了 java.util.Map.SessionMap。SessionMap 类有很多有用的方法。

SessionMap 类的方法

SessionMap 类的常用方法如下

方法描述
public Object put(Object key, Object value)在 HttpSession 对象中存储一个属性。
public Object remove(Object key)删除指定键的属性并返回属性值。
public Object get(Object key)从 HttpSession 对象中返回对应于该键的值。
public Set entrySet()返回一个包含 HttpSession 对象中设置的所有键和值对象的集合对象。
public void invalidate()使当前的 HttpSession 对象无效。
public void clear()删除 HttpSession 对象中设置的所有属性。

SessionAware 接口的示例

此示例包含三个链接 loginlogoutprofile。在登录之前,您无法单击个人资料页面。登录后,您可以转到个人资料页面。如果最终用户单击注销链接,他将无法访问个人资料页面。

步骤如下

  1. 添加 struts 和 servlet 库
  2. index.jsp 用于提供登录、注销和个人资料的链接。
  3. struts.xml用于定义结果和操作。
  4. Login.java 用于定义登录和注销逻辑。
  5. Profile.java 用于检查用户是否已登录。
  6. 视图组件用于显示结果。

1) 添加 struts 和 servlet 库

您需要添加 struts 2 和 servlet 库。


2) 创建 index.jsp 用于输入

此 jsp 页面创建三个登录、注销和个人资料链接。

index.jsp

3) 在 struts.xml 中定义操作和结果

此 xml 文件定义一个包和 4 个操作。每个操作定义至少一个结果页面。

对于 loginprocess 和 logout 操作,我们使用相同的操作类,但它们调用的方法不同。

struts.xml

4) 创建登录和注销的操作类

此操作类实现 SessionAware 接口并覆盖 setSession 方法,以便将信息存储在会话范围内。

对于注销,我们只需调用 SessionMapinvalidate() 方法。

Login.java

5) 创建 Profile 类

此类从会话范围获取信息,如果在会话范围中找到带有登录名的任何信息,则返回成功,否则返回 false。

Profile.java

6) 创建视图组件

有很多视图组件

  • login.jsp
  • login-success.jsp
  • login-error.jsp
  • logout-success.jsp
  • profile-success.jsp
  • profile-error.jsp

登录的视图组件

login.jsp

此页面创建登录表单。

login-success.jsp

此页面使用用户名打印欢迎消息。

login-error.jsp

此页面显示错误消息。


注销的视图组件

logout-success.jsp

此页面仅显示成功注销的消息。


个人资料的视图组件

profile-success.jsp

此页面打印欢迎来到个人资料消息。

profile-error.jsp

此页面打印首先登录的消息,并包含 login.jsp 页面。



输出

struts 2 sessionaware example output 1

如果单击个人资料链接,您将被转发到 profile-error.jsp

struts 2 sessionaware example output 2

现在,为名称输入您的姓名,并输入 admin 作为密码。

struts 2 sessionaware example output 3

现在,您已成功登录

struts 2 sessionaware example output 4

现在,单击个人资料。

struts 2 sessionaware example output 5

推荐主题

使用 Oracle 数据库的登录和注销示例