???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对象的方式
4.1 通过工厂类获取对象

注意:这种方法无需获得session对象,直接利用上下文对象就能够将数据存放到session中去
4.2 通过注入方式获取对象:就是利用一个属性俩代替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());
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%> <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>
<c:url var="url" value="/login3/toMain"></c:url> <!-- 会自动添加前面的部分 -->
<div>
<h1>${message }</h1> <!-- 登录失败后的提示信息 -->
<%--
<form action="http://localhost:8080/ssh01/login3/toMain" method="post">
--%>
<form action=${url } method="post"> <!-- 对上面一行代码的优化 -->
<div>
用 户:<input type="text" name="user.username"/> <!-- 这里的user是控制器类中的一个属性 -->
</div>
<div>
密 码:<input type="password" name="user.password" /> <!-- 这里的user是控制器类中的一个属性 -->
</div>
<div>
<input type="submit" value="登录" />
</div>
</form>
</div>
</body>
</html>
login3.jsp (登录页面)
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>
<h1>用户登录成功</h1>
<h2>欢迎${user.username },你已经进入到主页面啦!</h2> <!-- 获取服务器发送过来的用户名 -->
<h2>欢迎${loginName }</h2> <!-- 通过session中的数据来获取登录用户名 -->
</body>
</html>
main3.jsp (主页面)
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <package name="login3" namespace="/login3" extends="struts-default"> <!-- 请求路径:login -->
<action name="toLogin"> <!-- 请求名:toLogin -->
<result name="success">
/WEB-INF/login3.jsp
</result>
</action>
<action name="toMain" class="cn.xiangxu.action.LoginAction3"> <!-- 请求名:toMain -->
<result name="success">
/WEB-INF/main3.jsp
</result>
<result name="error">
/WEB-INF/login3.jsp
</result>
</action>
</package> </struts>
struts.xml (struts框架的配置文件)
package cn.xiangxu.action; import java.util.Map; import org.apache.struts2.interceptor.SessionAware; import cn.xiangxu.entity.User; /**
* 浏览器项服务器发送数据的控制器类(利用域模型传递实现)
* 该类进行了登录逻辑判断,登录成功后会将登录数据保存到session对象中,登录失败会返回登录页面并且给出错误提示
* @author 三少
*
*/
public class LoginAction3 implements SessionAware { private String message; /**
* 该属性来代替 SessionAware接口 中的那个方法
*/
private Map<String, Object> session; /**
* 该属性的属性值就是浏览器发送过来的数据
*/
private User user; public String execute() {
// 判断用户名和密码,如果都正确就将用户名和密码存到session中
if(user.getUsername().trim().equals("fury") && user.getPassword().trim().equals("333")) {
session.put("loginName", user.getUsername()); // 将数据存入到session对象中,在浏览器端可以根据键来获取数据;例如:${loginName}就可以获取到session对象中的登录用户名数据
session.put("loginPassword", user.getPassword());
return "success";
}
message = "用户名或者密码错误";
return "error";
} public String getMessage() {
return message;
} public void setMessage(String message) {
this.message = message;
} public Map<String, Object> getSession() {
return session;
} public void setSession(Map<String, Object> session) {
this.session = session;
} public User getUser() {
return user;
} public void setUser(User user) {
this.user = user;
} }
LoginAction3.java (控制器类)
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 + "]";
} }
User.java (实体类)
???Struts2框架03 session的使用、登录逻辑【session工作原理】的更多相关文章
- PHP中的Session工作原理
一直在使用session存储数据,一直没有好好总结一下session的使用方式以及其工作原理,今天在这里做一下梳理. 这里的介绍主要是基于php语言,其他的语言操作可能会有差别,但基本的原理不变. 1 ...
- session 的工作原理
session.cookie_domain session.cookie_path session.name session.save_path session.use_cokies session_ ...
- session的工作原理与session用法
一直在使用session存储数据,一直没有好好总结一下session的使用方式以及其工作原理,今天在这里做一下梳理. 这里的介绍主要是基于php语言,其他的语言操作可能会有差别,但基本的原理不变. 1 ...
- 基于Struts2框架实现登录案例 之 使用Struts2标签库简化表单+继承ActionSupport完成输入交验
一,使用Struts2标签库简化表单 在文章[基于Struts2框架实现登录案例]的基础上,通过使用Struts标签库可以简化登录页面login2.jsp <%@ page language=& ...
- Django框架之cookie和session及开发登录功能
1.cookie是什么? Web应用程序是使用HTTP协议传输数据的.HTTP协议是无状态的协议.一旦数据交换完毕,客户端与服务器端的连接就会关闭,再次交换数据需要建立新的连接.这就意味着服务器无法从 ...
- struts2拦截器实现session超时返回登录页面(iframe下跳转到其父页面)
需求:session超时时,返回登录页面,由于页面嵌套在iframe下,因此要跳转到登录页面的父页面,但是首页,登录页面等不需要进行跳转 实现: java文件:SessionIterceptor.ja ...
- [ SSH框架 ] Struts2框架学习之二
一.Struts2访问Servlet的API 前面已经对 Struts2的流程已经执行完成了,但是如果表单中有参数如何进行接收又或者我们需要向页面保存一些数据,又要如何完成呢?我们可以通过学习 Str ...
- [ SSH框架 ] Struts2框架学习之四(自定义拦截器)
一.Struts2的拦截器 1.1 拦截器概述 拦截器,在AOP( Aspect-Oriented Programming)中用于在某个方法或字段被访问之前,进行拦截然后在之前或之后加入某些操作.拦截 ...
- struts2框架学习之第一天
day01 Struts2概述 1 什么是框架 试想一下,人与人之间不同之处多,还是相同之处多呢?当然是相同之处多,不同之处少!人都有头,而且头都在脖子上面! 软件之间也是相同之处多,不同之处少,框架 ...
随机推荐
- nginx Win下实现简单的负载均衡(1)nginx搭建部署
快速目录: 一.nginx Win下实现简单的负载均衡(1)nginx搭建部署 二.nginx Win下实现简单的负载均衡(2)站点共享Session 三.nginx Win下实现简单的负载均衡(3) ...
- 制作导航菜单分隔线的总结:用css3
经过百度统计中国中使用谷歌浏览器比较多,我很奇怪,我身边的同事很少用谷歌,唯一我用谷歌的原因就是看上它调试能力和模拟手机. 下面是我个人制作的 预览用谷歌浏览器. <!doctype html& ...
- HTML中可以连接资源的标签集合
1.<a>标签,href属性指示链接的目标,可以是HTML也可以是内部css样式.<a href="http://www.w3school.com.cn"> ...
- Django 基础 web框架本质
Web框架本质 我们可以这样理解:所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端. 这样我们就可以自己实现Web框架了. import socket sk ...
- 大鱼吃小鱼(运用stack的模拟)
个人心得:这一题在暑假集训的周测里做到过,当时就死模拟,然后卡了很久很久才做对.现在发现运用stack其实非常方便, 将向左向右游动的鱼分开,则往后走只要往右移动的就放入stack,往左的时候就与st ...
- Mesos问题汇总
1.Mesos的IP配置 我在虚拟机里面搭载了一个mesos,但是外主机无法通过http://ip:5050 我在虚拟机内部测试发现wget localhost:5050可以正常访问:但是wget i ...
- jenkins 参数化构建和增加环境变量
1.参数化构建 2.增加环境变量 prepare an environment for the run,需要安装Environment Injector插件
- ABP 学习系列 - 目录
一.ABP 学习系列 - 入门介绍之单表 http://www.cnblogs.com/yabu007/p/8067694.html 二.ABP 学习系列 - 入门介绍之多表 http://www.c ...
- 记录启用HTTPS的全过程
因为 https 采用 ssl 加密,所以部署 https 时需要申请证书,证书的作用就是对浏览器和Web服务器双方的身份验证. 步骤1:申请证书 我们采用Let's Encrypt签发的免费证书,虽 ...
- Cache缓存优化
降低数据库压力 <appSettings><add key="/></appSettings> //设置实体缓存时间 public RupengWang. ...