- SessionAware接口示例
- SessionMap类
- SessionAware接口示例
SessionAware接口的方法
它仅包含一个方法setSession。
公共和抽象方法 | Description |
---|---|
setSession(Map < String, Object> 映射) | struts框架通过传递SessionMap类的实例来调用此方法。 |
Struts 2框架传递org.apache.struts2.dispatcher.SessionMap的实例。它扩展了实现java.util.Map.SessionMap的java.util.AbstractMap类。 SessionMap类有许多有用的方法。
SessionMap类的方法
SessionMap类的常用方法如下:
Methods | Description |
---|---|
公共对象放置(对象键, 对象值) | 将属性存储在HttpSession对象中。 |
公共对象删除(对象键) | 删除指定键的属性并返回属性值。 |
公共对象的get(对象键) | 从HttpSession对象返回相应键的值。 |
公共Set entrySet() | 返回一个包含所有在HttpSession对象中设置的键和值对象的set对象。 |
公共无效invalidate() | 使当前的HttpSession对象无效。 |
公共无效clear() | 删除HttpSession对象中设置的所有属性。 |
此示例包含三个链接登录, 注销和配置文件。你必须先登录, 然后才能单击个人资料页面。登录后, 你可以进入个人资料页面。如果最终用户单击注销链接, 则将无法访问个人资料页面。
步骤如下:
- 添加struts和servlet库
- index.jsp, 用于提供登录, 注销和配置文件的链接。
- 用于定义结果和操作的struts.xml。
- Login.java, 用于定义登录和注销逻辑。
- Profile.java, 用于检查用户是否登录。
- 查看显示结果的组件。
你需要添加struts 2和servlet库。
下载struts2 jar文件
下载servlet-api.jar文件
2)创建index.jsp作为输入
该jsp页面创建三个用于登录, 注销和配置文件的链接。
index.jsp
<
a href="http://www.srcmini.com/loginform">
Login<
/a>
|
<
a href="http://www.srcmini.com/logout">
Logout<
/a>
|
<
a href="http://www.srcmini.com/profile">
Profile<
/a>
3)在struts.xml中定义动作并生成结果
该xml文件定义了一个包和4个动作。每个动作至少定义一个结果页面。
对于loginprocess和logout操作, 我们使用相同的操作类, 但是调用方法不同。
struts.xml
<
?xml version="1.0" encoding="UTF-8" ?>
<
!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<
struts>
<
constant name="struts.devMode" value="http://www.srcmini.com/true">
<
/constant>
<
package name="abc" extends="struts-default" >
<
action name="loginform">
<
result>
login.jsp<
/result>
<
/action>
<
action name="login" class="com.srcmini.Login" method="execute">
<
result name="success">
/login-success.jsp<
/result>
<
result name="login">
/login-error.jsp<
/result>
<
/action>
<
action name="logout" class="com.srcmini.Login" method="logout">
<
result name="success">
/logout-success.jsp<
/result>
<
/action>
<
action name="profile" class="com.srcmini.Profile" method="execute">
<
result name="success">
/profile-success.jsp<
/result>
<
result name="login">
/profile-error.jsp<
/result>
<
/action>
<
/package>
<
/struts>
4)创建用于登录和注销的操作类
该操作类实现SessionAware接口, 并重写setSession方法以将信息存储在会话范围中。
对于注销, 我们仅调用SessionMap的invalidate()方法。
Login.java
package com.srcmini;
import java.util.Map;
import org.apache.struts2.dispatcher.SessionMap;
import org.apache.struts2.interceptor.SessionAware;
public class Login implements SessionAware{
private String name, password;
private SessionMap<
String, Object>
sessionMap;
//getters and setters@Override
public void setSession(Map<
String, Object>
map) {
sessionMap=(SessionMap)map;
}public String execute(){
if(password.equals("admin")){
sessionMap.put("login", "true");
sessionMap.put("name", name);
return "success";
}
else{
return "login";
}
}public String logout(){
if(sessionMap!=null){
sessionMap.invalidate();
}
return "success";
}}
5)创建Profile类
此类从会话范围获取信息, 如果在会话范围中使用登录名找到任何信息, 则返回成功, 否则返回false。
Profile.java
package com.srcmini;
import javax.servlet.http.HttpSession;
import org.apache.struts2.ServletActionContext;
public class Profile{ public String execute(){
HttpSession session=ServletActionContext.getRequest().getSession(false);
if(session==null || session.getAttribute("login")==null){
return "login";
}
else{
return "success";
}
}
}
6)创建视图组件
有很多视图组件:
- login.jsp
- login-success.jsp
- 登录错误.jsp
- 注销成功.jsp
- profile-success.jsp
- profile-error.jsp
login.jsp
该页面创建登录表单。
<
%@ taglib uri="/struts-tags" prefix="s" %>
<
s:form action="login">
<
s:textfield name="name" label="Name">
<
/s:textfield>
<
s:password name="password" label="Password">
<
/s:password>
<
s:submit value="http://www.srcmini.com/login">
<
/s:submit>
<
/s:form>
login-success.jsp
【Struts 2 SessionAware接口用法示例图解】此页面显示带有用户名的欢迎消息。
<
jsp:include page="index.jsp">
<
/jsp:include>
<
hr>
<
%@ taglib uri="/struts-tags" prefix="s" %>
Welcome, <
s:property value="http://www.srcmini.com/#session.name"/>
登录错误.jsp
此页面显示错误消息。
<
jsp:include page="index.jsp">
<
/jsp:include>
<
hr>
Sorry, username or password error!
<
jsp:include page="login.jsp">
<
/jsp:include>
查看要注销的组件
注销成功.jsp
该页面仅显示成功注销的消息。
<
jsp:include page="index.jsp">
<
/jsp:include>
<
hr>
<
p>
You are successfully logged out!<
/p>
查看配置文件的组件
profile-success.jsp
此页面打印欢迎使用配置文件消息。
<
jsp:include page="index.jsp">
<
/jsp:include>
<
hr>
<
%@ taglib uri="/struts-tags" prefix="s" %>
Welcome to Profile, <
s:property value="http://www.srcmini.com/#session.name"/>
profile-error.jsp
此页面将打印要首先登录的消息, 并包括login.jsp页面。
<
jsp:include page="index.jsp">
<
/jsp:include>
<
hr>
Sorry, username or password error!
<
jsp:include page="login.jsp">
<
/jsp:include>
下载此示例(在不带jar的Eclipse IDE中开发)
下载此示例(在Myeclipse IDE中开发)
输出
文章图片
如果单击概要文件链接, 那么你将被转发到profile-error.jsp
文章图片
现在, 输入你的姓名作为名称, 并输入admin作为密码。
文章图片
现在, 你已成功登录
文章图片
现在, 单击配置文件。
文章图片
推荐主题
Oracle数据库的登录和注销示例
推荐阅读
- Struts 2注解用法示例图解
- Struts ServletContextAware接口用法示例
- Struts 2零配置约定介绍和用法
- Struts 2 ServletActionContext类介绍和用法
- Struts 2 Aware接口教程介绍
- Struts 2 Ajax验证-jsonValidation拦截器
- Struts 2双重验证示例
- Struts 2 URL验证示例
- Mybatis学习---MyBatis知识原始Dao开发和mapper代理开发