简述ssh流程--结合activiti流程实例 -----请假流程

以登录为例。

1.若jsp是由form表单提交,

可以这样触发 ,不推荐:

表示form[0],第一个,,即上面的action,触发submit登录。

2.触发form的action,跳至struts.xml

找到对应的action类,,

 

3.进入对应的action类找到方法。此处为login

return什么就返回什么跳至那个struts.xml里面对应action中的 jsp

此处是封装了一个sessionContext,代码如下:

package cn.itcast.ssh.utils;

import org.apache.struts2.ServletActionContext;

import cn.itcast.ssh.domain.Employee;

public class SessionContext {

	public static final String GLOBLE_USER_SESSION = "globle_user";
	
	public static void setUser(Employee user){
		if(user!=null){//设置session
			ServletActionContext.getRequest().getSession().setAttribute(GLOBLE_USER_SESSION, user);
		}else{ //重新登录时清空session
			ServletActionContext.getRequest().getSession().removeAttribute(GLOBLE_USER_SESSION);
		}
	}
	
	/**获取session*/
	public static Employee get(){
		return (Employee) ServletActionContext.getRequest().getSession().getAttribute(GLOBLE_USER_SESSION);
	}
}

4.在action中会调用service至dao,

操作:

登录——* 从页面上获取用户名

              * 使用用户名作为查询条件,查询数据库中对应的这个用户的用户对象

              * 查询的对象(唯一)放置到Seesion中-----可以便于后面获取当前登录用户的信息

    在ssm框架中,servlet一般写法是 request.getSession.setAttribute("CURRENT_USER",user)

在后台处理中,service以及dao层获取当前用户,从session中获取当前用户对象:SessionContext.get()

新增/修改——*获取请假单ID

                      *使用请假单ID,查询请假单信息

                      *将请假单信息放置栈顶,页面使用struts2的标签,支持表单回显

/**
	 * 请假管理首页显示
	 * @return
	 */
	public String home(){
		//1:查询所有的请假信息(对应a_leavebill),返回List<LeaveBill>
		List<LeaveBill> list = leaveBillService.findLeaveBillList(); 
		//放置到上下文对象中
		ValueContext.putValueContext("list", list);
		return "home";
	}
	
	/**
	 * 添加请假申请
	 * @return
	 */
	public String input(){
		//1:获取请假单ID
		Long id = leaveBill.getId();
		//修改
		if(id!=null){
			//2:使用请假单ID,查询请假单信息,
			LeaveBill bill = leaveBillService.findLeaveBillById(id);
			//3:将请假单信息放置到栈顶,页面使用struts2的标签,支持表单回显
			ValueContext.putValueStack(bill);
		}
		//新增
		return "input";
	}
	
	/**
	 * 保存/更新,请假申请
	 * 
	 * */
	public String save() {
		//执行保存
		leaveBillService.saveLeaveBill(leaveBill);
		return "save";
	}
	
	/**
	 * 删除,请假申请
	 * 
	 * */
	public String delete(){
		//1:获取请假单ID
		Long id = leaveBill.getId();
		//执行删除
		leaveBillService.deleteLeaveBillById(id);
		return "save";
	}

 

放置栈顶是一个工具类ValueContext 

public class ValueContext {

	/**放置在Root栈中*/
	public static void putValueContext(String key,Object value){
		ActionContext.getContext().put(key, value);
	}
	
	/**压入栈顶*/
	public static void putValueStack(Object o){
		ServletActionContext.getContext().getValueStack().push(o);
	}
}

 

新增/修改—提交,更新——*服务器端执行update操作,完后更新(重定向,,表单提交的时候加上隐藏域 hidden: id完成回显)

在hibernate中的更新与保存:

/**保存请假单*/
	@Override
	public void saveLeaveBill(LeaveBill leaveBill) {
		this.getHibernateTemplate().save(leaveBill);
	}



/**更新请假单*/
	@Override
	public void updateLeaveBill(LeaveBill leaveBill) {
		this.getHibernateTemplate().update(leaveBill);
	}

删除——hibernate中的删除是按对象删

              *获取请假单ID

              *使用请假单ID,查询请假单信息,获取对象LeaveBill

              *执行删除

/**
	 * 删除,请假申请
	 * 
	 * */
	public String delete(){
		//1:获取请假单ID
		Long id = leaveBill.getId();
		//执行删除
		leaveBillService.deleteLeaveBillById(id);
		return "save";
	}



	/**使用请假单ID,删除请假单*/
	@Override
	public void deleteLeaveBillById(Long id) {
		leaveBillDao.deleteLeaveBillById(id);
	}



	/**使用请假单ID,删除请假单*/
	@Override
	public void deleteLeaveBillById(Long id) {
		//2:使用请假单ID,查询请假单信息,获取对象LeaveBill
		LeaveBill bill = this.findLeaveBillById(id);
		//3:执行删除
		this.getHibernateTemplate().delete(bill);
	}

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值