嗯,没错,过了这么长时间我还在做我的注册和登录。

登陆的部分自然是从数据库中查找响应的用户信息,然后把一个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的,不然子类继承不了,这一点感觉不太好。。

最新文章

  1. Android开发学习之路-DiffUtil使用教程
  2. jQuery获取margin-top和padding-top的值
  3. 解决stackoverflow打开慢不能注册登录
  4. 最小圆覆盖(Smallest Enclosing Discs)
  5. 第七章:Python基础のXML操作和面向对象(一)
  6. JS验证两次输入密码是否相同
  7. 云计算之路-阿里云上:3个manager节点异常造成 docker swarm 集群宕机
  8. Python 魔术方法笔记
  9. Javascript高级编程学习笔记(28)—— BOM(2)window对象2
  10. SQL Server - 哈希索引
  11. Vue + Element UI 实现权限管理系统 前端篇(十):动态加载菜单
  12. 001.Linux网路配置
  13. 雷林鹏分享:jQuery EasyUI 窗口 - 自定义带有工具条和按钮的对话框
  14. samba共享文件夹设置
  15. get 和post 请求的写法
  16. 微信小程序 微信支付
  17. 详解MySQL第二篇—DML语句
  18. CentOS下Docker与.netcore(三)之 三剑客之一Docker-Compose
  19. python基础===继承和多继承
  20. Kmeans原理与实现

热门文章

  1. vs 统计有效代码行数
  2. Linux内核堆栈使用方法 进程0和进程1【转】
  3. 己动手创建最精简的Linux
  4. Win7蓝屏代码0X0000007B可能是SATA mode问题
  5. abp 调试
  6. 访问dubbo没有权限,通过ip进行跳转服务器,并通过有权限服务器代理访问
  7. 一个朋友 js图表开发问题 用 c和 js 解决
  8. vue 的过滤器
  9. mui 怎样监听scroll事件的滚动距离
  10. Leetcode 之Binary Tree Postorder Traversal(46)