Struts2中使用Session
2024-08-27 20:12:39
嗯,没错,过了这么长时间我还在做我的注册和登录。
登陆的部分自然是从数据库中查找响应的用户信息,然后把一个user放到session里,
Action中代码如下:
public String Login(){
User user = new User(username,password);
user = userbiz.Login(user);
if(user != null){
session.put("user", user);
return this.SUCCESS;
}
return this.ERROR;
}
biz中:
public User Login(User user) {
List<User> list = userdao.Search(user);
if(list==null) return null;
user = (User)list.get();
return user;
}
dao中:
public List<User> Search(User user) { List<User> list=null;
//通过sessionFactory获得Session
Session session=sessionFactory.openSession();
//创建Criteria对象
Criteria c=session.createCriteria(User.class);
//使用Example工具类创建示例对象
Example example=Example.create(user);
//为Criteria对象指定示例对象example作为查询条件
c.add(example);
list = c.list(); //执行查询,获得结果
if(list.size()!=){
return (List<User>)list;
}
return null;
}
其中涉及到session的使用,于是查了下struts2中如何获取session。
有两个方法:
1.通过ActionContext class中的方法getSession得到
2.Action实现org.apache.struts2.interceptor.SessionAware接口的方式来对session进行操作
方法一:
public class SessionTestAction extends ActionSupport {
public String execute() {
ActionContext actionContext = ActionContext.getContext();
Map session = actionContext.getSession();
session.put("user", user);
return SUCCESS;
}
}
方法二:
public class SessionTest1Action extends ActionSupport implements SessionAware {
private Map session;
public void setSession(Map session) {
this.session = session;
}
public String execute() {
this.session.put("user", user);
return SUCCESS;
}
}
一个项目中有可能有多个Action需要用到session,那么可以写一个抽象类BaseAction,之后的Action只要继承这个类就可以了:
package action; import java.util.Map; import org.apache.struts2.interceptor.SessionAware; import com.opensymphony.xwork2.ActionSupport; abstract class BaseAction extends ActionSupport implements SessionAware {
Map session;
@Override
public void setSession(Map session) {
this.session=session;
}
}
其中session不能是private的,不然子类继承不了,这一点感觉不太好。。
最新文章
- Android开发学习之路-DiffUtil使用教程
- jQuery获取margin-top和padding-top的值
- 解决stackoverflow打开慢不能注册登录
- 最小圆覆盖(Smallest Enclosing Discs)
- 第七章:Python基础のXML操作和面向对象(一)
- JS验证两次输入密码是否相同
- 云计算之路-阿里云上:3个manager节点异常造成 docker swarm 集群宕机
- Python 魔术方法笔记
- Javascript高级编程学习笔记(28)—— BOM(2)window对象2
- SQL Server - 哈希索引
- Vue + Element UI 实现权限管理系统 前端篇(十):动态加载菜单
- 001.Linux网路配置
- 雷林鹏分享:jQuery EasyUI 窗口 - 自定义带有工具条和按钮的对话框
- samba共享文件夹设置
- get 和post 请求的写法
- 微信小程序 微信支付
- 详解MySQL第二篇—DML语句
- CentOS下Docker与.netcore(三)之 三剑客之一Docker-Compose
- python基础===继承和多继承
- Kmeans原理与实现