???Struts2框架03 session的使用登录逻辑session工作原理
Posted 寻渝记
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了???Struts2框架03 session的使用登录逻辑session工作原理相关的知识,希望对你有一定的参考价值。
1 登录逻辑
1.1 获取登录数据(例如:用户民、密码)
1.2 在控制层调用业务层来验证数据信息
1.3 登录成功:保存用户信息(服务器用session、浏览器用cookie),跳转到主页满
1.4 登录失败:留在登录页面,并给出错误提示信息
2 什么是session
就是一个会话对象,有服务器创建,目的是为了共享数据(注意:每一个浏览器对应一个session对象)
3 session的工作原理
待更新...
2017年7月3日21:53:09
4 在struts2中获取session对象的方式
通过工厂类获取对象:待更新... 2017年7月3日21:54:35
通过注入方式获取对象:就是利用一个属性俩代替SessionAware接口中的 setSession 方法
5 如何使用session对象(以登录逻辑为例)
5.1 控制器实现SessionAware接口,但是不用实现该接口的方法;通过创建一个session属性来代替
利用
private Map<String, Object> session;
代替
public void setSession(Map<String, Object> arg0) {
// TODO Auto-generated method stub
}
5.2 注入session对象(就是定义一个属性名为session的属性,并且实现set/get方法)
5.3 调用sessionAP来保存数据
session.put("loginPassword", user.getPassword());
1 <%@ page language="java" contentType="text/html; charset=utf-8" 2 pageEncoding="utf-8"%> 3 4 <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 5 6 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 7 <html> 8 <head> 9 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 10 <title>Insert title here</title> 11 </head> 12 <body> 13 <c:url var="url" value="/login3/toMain"></c:url> <!-- 会自动添加前面的部分 --> 14 <div> 15 <h1>${message }</h1> <!-- 登录失败后的提示信息 --> 16 <%-- 17 <form action="http://localhost:8080/ssh01/login3/toMain" method="post"> 18 --%> 19 <form action=${url } method="post"> <!-- 对上面一行代码的优化 --> 20 <div> 21 用 户:<input type="text" name="user.username"/> <!-- 这里的user是控制器类中的一个属性 --> 22 </div> 23 <div> 24 密 码:<input type="password" name="user.password" /> <!-- 这里的user是控制器类中的一个属性 --> 25 </div> 26 <div> 27 <input type="submit" value="登录" /> 28 </div> 29 </form> 30 </div> 31 </body> 32 </html>
1 <%@ page language="java" contentType="text/html; charset=utf-8" 2 pageEncoding="utf-8"%> 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 4 <html> 5 <head> 6 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 7 <title>Insert title here</title> 8 </head> 9 <body> 10 <h1>用户登录成功</h1> 11 <h2>欢迎${user.username },你已经进入到主页面啦!</h2> <!-- 获取服务器发送过来的用户名 --> 12 <h2>欢迎${loginName }</h2> <!-- 通过session中的数据来获取登录用户名 --> 13 </body> 14 </html>
1 <?xml version="1.0" encoding="UTF-8"?> 2 3 <!DOCTYPE struts PUBLIC 4 "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" 5 "http://struts.apache.org/dtds/struts-2.3.dtd"> 6 7 <struts> 8 9 10 <package name="login3" namespace="/login3" extends="struts-default"> <!-- 请求路径:login --> 11 <action name="toLogin"> <!-- 请求名:toLogin --> 12 <result name="success"> 13 /WEB-INF/login3.jsp 14 </result> 15 </action> 16 <action name="toMain" class="cn.xiangxu.action.LoginAction3"> <!-- 请求名:toMain --> 17 <result name="success"> 18 /WEB-INF/main3.jsp 19 </result> 20 <result name="error"> 21 /WEB-INF/login3.jsp 22 </result> 23 </action> 24 </package> 25 26 </struts>
1 package cn.xiangxu.action; 2 3 import java.util.Map; 4 5 import org.apache.struts2.interceptor.SessionAware; 6 7 import cn.xiangxu.entity.User; 8 9 /** 10 * 浏览器项服务器发送数据的控制器类(利用域模型传递实现) 11 * 该类进行了登录逻辑判断,登录成功后会将登录数据保存到session对象中,登录失败会返回登录页面并且给出错误提示 12 * @author 三少 13 * 14 */ 15 public class LoginAction3 implements SessionAware { 16 17 private String message; 18 19 /** 20 * 该属性来代替 SessionAware接口 中的那个方法 21 */ 22 private Map<String, Object> session; 23 24 /** 25 * 该属性的属性值就是浏览器发送过来的数据 26 */ 27 private User user; 28 29 public String execute() { 30 // 判断用户名和密码,如果都正确就将用户名和密码存到session中 31 if(user.getUsername().trim().equals("fury") && user.getPassword().trim().equals("333")) { 32 session.put("loginName", user.getUsername()); // 将数据存入到session对象中,在浏览器端可以根据键来获取数据;例如:${loginName}就可以获取到session对象中的登录用户名数据 33 session.put("loginPassword", user.getPassword()); 34 return "success"; 35 } 36 message = "用户名或者密码错误"; 37 return "error"; 38 } 39 40 public String getMessage() { 41 return message; 42 } 43 44 public void setMessage(String message) { 45 this.message = message; 46 } 47 48 public Map<String, Object> getSession() { 49 return session; 50 } 51 52 public void setSession(Map<String, Object> session) { 53 this.session = session; 54 } 55 56 public User getUser() { 57 return user; 58 } 59 60 public void setUser(User user) { 61 this.user = user; 62 } 63 64 }
package cn.xiangxu.entity; /** * 登录信息实体类 * @author 三少 * */ public class User { private String username; private String password; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } @Override public String toString() { return "User [username=" + username + ", password=" + password + "]"; } }
以上是关于???Struts2框架03 session的使用登录逻辑session工作原理的主要内容,如果未能解决你的问题,请参考以下文章
struts2中我想把结果放入到session中ActionContext.getContext().getSession()