`
davexin
  • 浏览: 39090 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

struts2+ejb3+ibatis2+weblogic10 项目代码例子

 
阅读更多

struts2    action类

public class T_dealer_accountAction extends ActionSupport{

 private static Logger log = Logger.getLogger(T_dealer_accountAction.class.getName());
 
 private T_dealer_accountService service;
 private List<T_dealer_account> t_dealer_accounts;
 private T_dealer_account t_dealer_account;
 private int id;
 private int[] ids;
 PaginationSupport paginationSupport;

 //no inject
 public T_dealer_accountAction(){
  this.service = (T_dealer_accountService)EjbProxy.getInstance().lookup("T_dealer_accountBean#com.xuka.ejb3.T_dealer_account");
  }

 //inject
 public T_dealer_accountAction(T_dealer_accountService service){
  this.service = service;
 }

 public String execute() {
  HttpServletRequest request = ServletActionContext.getRequest();
  //HttpServletResponse response = ServletActionContext.getResponse();
  //HttpSession session = request.getSession();
  //ActionContext.getContext().getSession().put("msg", "Hello World from Session!");

  String message ="查找所有记录操作成功!";
  int pageSize = 10;
  int startIndex = 0;
  try{
   if(request.getParameter("pageSize")!=null){
    pageSize = BeanUtils.stringToInt("pageSizeFlag", request.getParameter("pageSize"));       
   }
   if(request.getParameter("startIndex")!=null){
    startIndex = BeanUtils.stringToInt("startIndexFlag", request.getParameter("startIndex"));
   }
   this.paginationSupport = service.listAll(pageSize, startIndex );
   message ="查找所有记录操作成功!";
   System.out.println("-------------T_dealer_accountAction  list  method---------"+message);
  }catch(Exception e){
   message ="查找所有记录操作失败!";
   log.debug("-------------T_dealer_accountAction  list  method ---------"+message+"   "+e);          
  }        
  return SUCCESS;
 }

 public String save() {
  String message ="添加操作失败!";
  try{
   service.add(t_dealer_account);
   this.t_dealer_account = new T_dealer_account();         
   message ="添加操作成功!";   
   System.out.println("-------------T_dealer_accountAction  add  method   ---------"+message);
  }catch(Exception e){
   message ="添加操作失败!";
   log.error("-------------T_dealer_accountAction  add  method ---------"+message+"   "+e);
   return ERROR;
  }      
  return SUCCESS;
 }

 public String update(){
  String message ="修改操作失败!";
  int rows = 0;
  try{
   rows = service.edit(t_dealer_account);
   message ="修改操作成功!";
   System.out.println("-------------T_dealer_accountAction  edit  method ---------"+message);
  }catch(Exception e){
   message ="修改操作失败!";
   System.out.println("-------------T_dealer_accountAction  edit  method ---------"+message+"   "+e);          
   return ERROR;       
  }
  if(rows ==0){
   return ERROR;   

  }else{
   return SUCCESS;        
  }  
 }
 
 public String trade(){
   
  HttpServletRequest request = ServletActionContext.getRequest();
  String referer = request.getHeader("referer");
  if (referer == null||!referer.startsWith("http://"+request.getServerName())){
   System.out.println("---------非法请求 trade() 方法---------");
      return ERROR;
  }
  //根据当前登陆的用户session中的信息,进行设置setDealerno,setFromuser
  T_user_detail sessionUser = (T_user_detail)request.getSession().getAttribute("user");
  if(sessionUser==null){
     System.out.println("---------未登录,非法请求 trade() ,不能请求 trade() 方法---------");
     return ERROR;
  }
  t_dealer_account.setDealerno(sessionUser.getDealerno());
  t_dealer_account.setFromuser(String.valueOf(sessionUser.getDealerid()));
  
  String message ="操作失败!";
  int rows = 0;
  try{
   t_dealer_account.setAcctip(request.getRemoteAddr());
   t_dealer_account.setAmount((int)(t_dealer_account.getAmount()*100)); //元
   rows = service.edit(t_dealer_account);
   message ="操作成功!";
  }catch(Exception e){
   message ="操作失败!";
   System.out.println("-------------T_dealer_accountAction  edit  method ---------"+message+"   "+e);          
   return ERROR;       
  }
  if(rows == 1 ){
   //修改当前用户的货币数量
   sessionUser.setAmount(sessionUser.getAmount()-(int)(t_dealer_account.getAmount())); //点
   request.getSession().setAttribute("user", sessionUser);
   System.out.println("-------------T_dealer_accountAction  edit  method ---------"+message+"--------rows="+rows);
   return SUCCESS;           
  }else{
   System.out.println("-------------T_dealer_accountAction  edit  method ---------"+message+"--------rows="+rows);
   return ERROR;       
  }  

 }


 public String bill(){
  System.out.println("-------------T_dealer_accountAction  bill  method ---------");
  HttpServletRequest request = ServletActionContext.getRequest();
  String referer = request.getHeader("referer");
  if (referer == null || !referer.startsWith("http://"+request.getServerName())){
   System.out.println("---------非法请求 bill() 方法---------");
      return ERROR;
  }
  //根据当前登陆的用户session中的信息,进行设置setDealerno,setFromuser
  T_user_detail sessionUser = (T_user_detail)request.getSession().getAttribute("user");
  if(sessionUser==null){
     System.out.println("---------未登录,非法请求 bill() ,不能请求 bill() 方法---------");
     return ERROR;
  }
  t_dealer_account.setDealerno(sessionUser.getDealerno());
  t_dealer_account.setFromuser(String.valueOf(sessionUser.getDealerid()));
  
  String message ="操作失败!";
  int rows = 0;
  try{
   
   t_dealer_account.setAcctip(request.getRemoteAddr());
   t_dealer_account.setAmount((int)(t_dealer_account.getAmount()*100));  //把人民币转化成点,1元=100点
   t_dealer_account.setAr((int)t_dealer_account.getAmount());
   t_dealer_account.setDaylimit(365);
   t_dealer_account.setTcode("FV0001");
   t_dealer_account.setBillno(System.currentTimeMillis());  //纪录关联
   t_dealer_account.setCardkind(18);
   t_dealer_account.setMno(0); 
   t_dealer_account.setUserid(t_dealer_account.getTouser());
   
   System.out.println("-------------T_dealer_accountAction   bill t_dealer_account.getCztype="+t_dealer_account.getCztype());
   System.out.println("--------- InvokeBill selectMethod temp.getGzno()="+t_dealer_account.getGzno());
   System.out.println("--------- InvokeBill selectMethod temp.getSysno()="+t_dealer_account.getSysno());
   
   if(t_dealer_account.getCztype()!=null&&t_dealer_account.getCztype().equals("1")){
    System.out.println("-------------T_dealer_accountAction   bill getCztype=1  method ---------");

    t_dealer_account.setSysmno(0);
    t_dealer_account.setSysmnoamount(0);

   }else if(t_dealer_account.getCztype()!=null&&t_dealer_account.getCztype().equals("2")){          
    System.out.println("-------------T_dealer_accountAction   bill getCztype=2  method ---------");

    //获取汇率
    T_puser t_puser = new T_puser();
    t_puser.setSysno(t_dealer_account.getSysno());
    T_puserService t_puserService = new T_puserServiceImpl();
    t_puser = (T_puser) t_puserService.findRationBySysno(t_puser);  
    
    t_dealer_account.setSysmnoamount(t_dealer_account.getAr()/((int) t_puser.getRatio()));
    t_dealer_account.setSysmno(t_puser.getOutmno());
    t_dealer_account.setTcode2("FV0002");
    
    System.out.println("--------- t_dealer_account.getAr()="+t_dealer_account.getAr());
    System.out.println("---------  (int) t_puser.getRatio()="+(int) t_puser.getRatio());
    System.out.println("--------- t_dealer_account.getSysmnoamount()="+t_dealer_account.getSysmnoamount());


   }else{       
    System.out.println("-------------T_dealer_accountAction   bill getCztype= null method ---------");
    return ERROR;
   }

   rows = service.bill(t_dealer_account);
   message ="操作成功!";
  }catch(Exception e){
   message ="操作失败!";
   System.out.println("-------------T_dealer_accountAction  bill  method ---------"+message+"   "+e);  
   e.printStackTrace();
   return ERROR;       
  }
  if(rows == 1 ){
   //修改当前用户的货币数量
   sessionUser.setAmount(sessionUser.getAmount()-(int)(t_dealer_account.getAmount())); //点
   //request.getSession().setAttribute("user", sessionUser);

   System.out.println("-------------T_dealer_accountAction  bill  method ---------"+message+"--------rows="+rows);
   return SUCCESS;           
  }else{
   message ="操作失败!";
   System.out.println("-------------T_dealer_accountAction  bill  method ---------"+message+"--------rows="+rows);
   return ERROR;       
  }  

 }

 public String view(){
  setT_dealer_account(find());
  return SUCCESS;
 }

 public String edit(){
  setT_dealer_account(find());
  return SUCCESS;
 }

 public List<T_dealer_account> getT_dealer_accounts() {
  return t_dealer_accounts;
 }

 public int getId() {
  return id;
 }

 public void setId(int id) {
  this.id = id;
 }

 public int[] getIds() {
  return ids;
 }

 public void setIds(int[] ids) {
  this.ids = ids;
 }

 //public void prepare() throws Exception {
  //    if (id != null)
   //        T_dealer_account = service.find(id);
 //}

 public PaginationSupport getPaginationSupport() {
  return paginationSupport;
 }

 public void setPaginationSupport(PaginationSupport paginationSupport) {
  this.paginationSupport = paginationSupport;
 }
 public T_dealer_account getT_dealer_account() {
  return t_dealer_account;
 }

 public void setT_dealer_account(T_dealer_account t_dealer_account) {
  this.t_dealer_account = t_dealer_account;
 }  


 EJB3 接口、类

import com.common.utils.PaginationSupport;

public interface T_dealer_accountService {

 public Object add(Object obj);
 
 public int edit(Object obj);
 
 public int bill(Object obj);
 
 public int deleteByPrimaryKey(Object obj);
 
 public Object findByPrimaryKey(Object obj);

import javax.ejb.Remote;
import javax.ejb.Stateless;

@Remote(T_dealer_accountService.class)
@Stateless(mappedName = "T_dealer_accountServiceBean")

public class T_dealer_accountServiceBean implements
  T_dealer_accountService {

 private T_dealer_accountServiceImpl service;
 
 public T_dealer_accountServiceBean(){
  System.out.println("---------------------start Construct Method --------------------------");
  this.service = new T_dealer_accountServiceImpl();
  System.out.println("---------------------end Construct Method -----------------------");
 }
 
 public Object add(Object obj){
   return service.add(obj);
 }

 public int edit(Object obj){
  return service.edit(obj);
 }

 public int bill(Object obj){
  return service.bill(obj);
 }

 public int deleteByPrimaryKey(Object obj){
  return service.deleteByPrimaryKey(obj);
 }
 
 public Object findByPrimaryKey(Object obj){
  return service.findByPrimaryKey(obj);
 }  
  
 public PaginationSupport listAll(int pageSize, int startIndex){

   return service.listAll(pageSize,startIndex);
 }

 public T_dealer_accountService getService() {
  return service;
 }
 public void setService(T_dealer_accountServiceImpl service) {
  this.service = service;
 }

}


 
 public PaginationSupport listAll(int pageSize, int startIndex); 
 
}

持久层 ibaits2.3

public class T_dealer_accountDAOImpl implements T_dealer_accountDAO{

 public Object add(Object obj){
  Object retObj = null;;
  try{
   retObj = DaoConfig.getInstance().insert("T_dealer_account.insertT_dealer_account", (T_dealer_account)obj);
  }catch(Exception e){
   System.out.println("------error="+e);
  }
  return retObj;
 }

 //xxxxxxxx操作
 public int edit(Object obj) {
  //更新结果标量
  int rows =0, rows1 = 0, rows2 = 0;
  SqlMapClient conn = null;

  //账户状态
  T_dealer_account temp = (T_dealer_account)obj;
  String fromUserLock = null, toUserLock = null;
  boolean fromUserLockFlag = false, toUserLockFlag = false;
  try {
   conn = DaoConfig.getInstance();
   fromUserLock = Cache.getLock(temp.getFromuser());
   toUserLock = Cache.getLock(temp.getTouser());
  } catch (Exception e1) {
   System.out.println("------xxxxxxx获取连接失败="+e1);
  }
  try{    
   conn.startTransaction();

   //如果两个对象有一个或者全部为锁定状态,则要等待,不能对这2个账户进行更新操作
   if(fromUserLock.equals("LOCK")||toUserLock.equals("LOCK")){
    System.out.println("------账户被锁定,xxxxx失败,清等一会再试-----");
    return 0;
   }

   //同时锁定2账户,如果失败,则返回失败,如果成功,执行下面转卡操作   
   fromUserLockFlag = Cache.setLock(temp.getFromuser());
   toUserLockFlag = Cache.setLock(temp.getTouser());
   //如果锁定2账户成功,则执行更新账户操作,否则不执行。
   if( fromUserLockFlag && toUserLockFlag){
    //更新账户tosuer
    rows1 = conn.update("T_dealer_account.updateT_dealer_accountByPrimaryKey", (T_dealer_account)obj);
    //更新账户fromuser
    rows2 = conn.update("T_dealer_account.updateT_dealer_accountByPrimaryKey2", (T_dealer_account)obj);
    System.out.println("------事务rows1="+rows1+"-----事务rows2="+rows2);
    //如果2个账户都更新成功,则提交事务,否则,回滚事务
    if(rows1==1&&rows2==1){
     conn.commitTransaction();
     rows =1;
     System.out.println("------事务一致-----  ");
    }           
   }else{
    System.out.println("------锁定账户失败,不能xxxxxx,请等一会再试-----");
    return 0;
   }

  }catch(Exception e){
   rows = 0;
   System.out.println("------转卡失败="+e);
  }finally{
   try {
    //关闭事务
    conn.endTransaction();
   } catch (Exception e) {
    e.printStackTrace();
    System.out.println("------关闭事务失败-----"+e);
   }
   try {
    //插入日志,可以在拦截器做,但考虑程序的清晰,决定放在此处作
    T_dealer_log t_dealer_log = new T_dealer_log();
    t_dealer_log.setDealerno(temp.getDealerno());
    t_dealer_log.setAcctip(temp.getAcctip());
    System.out.println("------temp.getAcctip()="+temp.getAcctip());
    t_dealer_log.setFromuser(temp.getFromuser());
    t_dealer_log.setTouser(temp.getTouser());
    t_dealer_log.setAmount((int)temp.getAmount());
    t_dealer_log.setType(1);
    t_dealer_log.setStatus(rows);
    t_dealer_log.setMemo("xxxxxx");    
    conn.insert("T_dealer_account.insertT_dealer_log",t_dealer_log);  
   } catch (Exception e) {
    System.out.println("------插入日志失败-----"+e);
   }
   //释放锁定账户,否则造成死锁,如果是前面代码锁定,则释放,如果是别人锁定的,需要别人去释放
   //不能释放别人的锁定,否则会造成线程不安全
   if(fromUserLockFlag){
    Cache.setUnLock(temp.getFromuser());
   }
   if(toUserLockFlag){
    Cache.setUnLock(temp.getTouser());
   }  

  }
  return rows;
 }

 public int deleteByPrimaryKey(Object pk){
  int rows = 0;
  try{
   T_dealer_account key = new T_dealer_account();
   key.setId((Integer)pk);
   rows = DaoConfig.getInstance().delete("T_dealer_account.deleteT_dealer_accountByPrimaryKey", key);
  }catch(Exception e){
   System.out.println("------error="+e);
  }
  return rows;
 }

 public Object findByPrimaryKey(Object pk){ 
  Object retobj = null;
  try{
   T_dealer_account key = new T_dealer_account();
   key.setId((Integer)pk);
   retobj = (T_dealer_account) DaoConfig.getInstance().queryForObject("T_dealer_account.selectT_dealer_accountByPrimaryKey", key);
  }catch(Exception e){
   System.out.println("------error="+e);
  }finally{
   return retobj;
  }

 }

 public PaginationSupport listAll(int pageSize, int startIndex){
  PaginationSupport ps = null;
  try{
   T_dealer_account  t_dealer_account = new T_dealer_account();
   t_dealer_account.setStartNo( startIndex );
   t_dealer_account.setEndNo( startIndex + pageSize );

   int totalCount = (Integer)DaoConfig.getInstance().queryForObject("T_dealer_account.selectT_dealer_accountCountAll", t_dealer_account);
   List items =  DaoConfig.getInstance().queryForList("T_dealer_account.selectT_dealer_accountAll", t_dealer_account );
   //List items = DaoConfig.getInstance().queryForList("T_dealer_account.selectT_dealer_accountAll",null, startIndex, pageSize);
   ps = new PaginationSupport(items, totalCount, pageSize, startIndex);  
  }catch(Exception e){
   System.out.println("------error="+e);
  }finally{
   return ps;
  }

 }

 }

 

分享到:
评论

相关推荐

    OracleWebLogic开发实战(4天).doc

    同时,课程还将讨论如何将基于SSH(Struts2+Spring+Hibernate/iBATIS)的应用迁移到WebLogic,以及在WebLogic上的性能优化策略,确保应用在生产环境中运行高效。 讲师具有丰富的Java开发和架构经验,不仅是WebLogic...

    Java个人简历模板12.doc

    5. **框架应用**:开发者熟练使用Struts1、Hibernate、Spring框架,对Struts2、iBatis、Tapestry、JSF等也有一定了解和应用。这显示了其在开发企业级应用时,能够灵活选择和使用合适的框架。 6. **数据库技术**:...

    非常苛刻的java工作要求

    掌握主流的Java开源框架Struts2、Spring、SpringMVC、Hibernate/Mybatis、iBatis等,最好熟悉Freemaker或volecity。 2. 熟悉中间件Tomcat、jboss、Apache、Weblogic、WAS; 3. 熟悉各种Web前端技术,包括JavaScript...

    最新Java面试宝典pdf版

    2、你在项目中用到了xml技术的哪些方面?如何实现的? 114 3、用jdom解析xml文件时如何解决中文问题?如何解析? 114 4、编程用JAVA解析XML的方式. 115 5、XML文档定义有几种形式?它们之间有何本质区别?解析XML文档有...

    java面试宝典2012

    2、你在项目中用到了xml技术的哪些方面?如何实现的? 124 3、用jdom解析xml文件时如何解决中文问题?如何解析? 124 4、编程用JAVA解析XML的方式. 125 5、XML文档定义有几种形式?它们之间有何本质区别?解析XML文档有...

    Java面试宝典-经典

    2、你在项目中用到了xml技术的哪些方面?如何实现的? 114 3、用jdom解析xml文件时如何解决中文问题?如何解析? 114 4、编程用JAVA解析XML的方式. 115 5、XML文档定义有几种形式?它们之间有何本质区别?解析XML文档有...

    Java面试宝典2012版

    2、你在项目中用到了xml技术的哪些方面?如何实现的? 114 3、用jdom解析xml文件时如何解决中文问题?如何解析? 114 4、编程用JAVA解析XML的方式. 115 5、XML文档定义有几种形式?它们之间有何本质区别?解析XML文档...

    个人简历样板

    二是企业员工绩效考核系统,该项目采用了Struts2框架和EJB3.0组件技术,实现了多层架构,他参与了从设计到编码的各个环节,使用了JavaScript、jQuery、JSON和DWR3进行异步处理。 综上所述,查敏先生是一位拥有扎实...

    java的各种技术.pdf

    1. **WebLogic**:BEA WebLogic是成熟的Java应用服务器,包含Web容器和EJB容器。 2. **WebSphere**:IBM的集成软件平台,提供完整的中间件基础设施,支持JavaEE应用。 3. **JBoss**:开源的J2EE应用服务器,支持EJB...

    spring chm文档

    12.5.1. iBATIS 1.x和2.x的概览与区别 12.5.2. iBATIS SQL Maps 1.x 12.5.3. iBATIS SQL Maps 2.x 12.6. JPA 12.6.1. 在Spring环境中建立JPA 12.6.2. JpaTemplate 和 JpaDaoSupport 12.6.3. 基于原生的JPA实现...

    Spring-Reference_zh_CN(Spring中文参考手册)

    12.5.1. iBATIS 1.x和2.x的概览与区别 12.5.2. iBATIS SQL Maps 1.x 12.5.2.1. 创建SqlMap 12.5.2.2. 使用 SqlMapTemplate 和 SqlMapDaoSupport 12.5.3. iBATIS SQL Maps 2.x 12.5.3.1. 创建SqlMapClient 12.5.3.2....

    J2EE程序员需掌握的技术

    在IT行业中,J2EE(Java 2 Platform, Enterprise Edition)是企业级应用开发的重要标准,涵盖了一系列技术和框架。作为一名J2EE程序员,你需要掌握以下关键领域的知识: 1. **Web开发框架**: - JSF(Facelets,...

    (完整版)Java系统架构师面试题 (2).docx

    2. 谈谈主流的J2EE框架(Spring、Struts、Ibatis、Hibernate等) J2EE框架是Java企业版的核心框架,包括Spring、Struts、Ibatis、Hibernate等,各有其优缺点和应用场景。Spring是一个轻量级的框架,适用于大型企业...

    Java开发就业培训.pdf

    学员将学习如何利用类、对象、继承、封装和多态等概念进行代码设计。同时,还将涉及Java高级特性,如多线程编程和Socket编程,以及如何在Eclipse和NetBeans等集成开发环境中进行有效工作。此外,学员还将学习Linux的...

Global site tag (gtag.js) - Google Analytics