亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

超級簡單的mvc框架ajf1.2發布

2019-11-18 16:17:24
字體:
來源:轉載
供稿:網友

    沒有在網上公開發部,與大家一同學習,分享,交流經驗,舊版本的代碼可以參考我以前的文章,設計思路上差不多。新版本中加入了PReHandler,postHandler,exceptionHandler等方法,可自定義實現,這個來自于spring mvc,其實以前有,只不過不是叫這些名字,改了之后顯得更專業些

加入了 自動事務處理功能
       調用start()即可,其后的數據庫操作加入事務容器,自動提交,回滾
       當然 "事務容器"只是個概念,用把template和proxy即可輕松實現的,當然也不支持分布式事務拉,不過應付一般項目足以與webwork類似,action來一個new一個,沒有線程安全問題action里可放心大膽使用成員變量

配置文件在見jf.xml

關于跳轉路徑

有!前綴的使用redirect,沒有的則forward

ajf (agile java framework)

// power magic action ,from struts,webwork and spring mvc

//組合使用 command,template,proxy,decorator,filter,chain等設計模式
//實現了類似aop功能,輕松實現日志,權限,連接,事務等問題
//擁有一個超強魔力的action基類

//還可以覆蓋實現preHandler,postHandler,exceptionHandler

//做各種各樣的前置后置異常處理等動作

//在這里你可以看到struts,webwork,spring mvc等框架的影子

//BaseAction extends Action
//XXXAction extends BaseAction 

//一個action多個操作

//根據method參數 ,利用反射調用相應的execute方法,如execute_query

//可采用傳統mvc框架配置也可零配置,在jsp頁面里直接調用action

 一個用戶增刪改查的例子,所有操作都寫在一個action里

下面是BaseAction和UserAction的代碼及注釋

//------------------
//---------------------------

BaseAction.java

package com.zjuee.action;
import java.util.*;
import com.zjuee.mvc.*;
import com.zjuee.*;


public class BaseAction extends Action{

String action = null;
String actionClassName = null;
long start = 0;
long end = 0;
Map ajf_system_request_map = null;
long diff=0;

 //看到這些方法的名字就曉得是怎么回事了,
 //分別是前置,后置,異常處理器

 //與webwork類似,action來一個new一個,沒有線程安全問題
 //放心大膽使用成員變量

   public String preHandler()throws Exception{
           /*
              LogUtil.info("tiger",StringUtil.getNowTime());
              action = AjfUtil.getAction(request);
              actionClassName = this.getClass().getName();
              LogUtil.info("action="+action+",method="+method);
              LogUtil.info(actionClassName+",pre handler,"+StringUtil.getNowTime());
               */
       ajf_system_request_map = JspUtil.getRequestModel(request);
       start=StringUtil.getNowMs();
       
              return null;
       }

        public String postHandler()throws Exception{
            
            /*

            LogUtil.info(actionClassName+",post handler,"+StringUtil.getNowTime());
            LogUtil.debug(actionClassName+",post handler,"+StringUtil.getNowTime());
            LogUtil.warn(actionClassName+",post handler,"+StringUtil.getNowTime());
                    */   
            end=StringUtil.getNowMs();
            diff=end-start;
            LogUtil.info(diff+","+JspUtil.getUrl(request)+","+ajf_system_request_map);
                        
                        return null;
       }

      public void exceptionHandler(Exception e)throws Exception{

          LogUtil.error(actionClassName+",exception handler,"+e+","+StringUtil.getNowTime());
                            return;
       }

}

//------------------------
//----------------------------UserAction.java

package com.zjuee.action;

import com.zjuee.mvc.*;
import com.zjuee.*;
import java.util.*;

// power magic action ,from struts,webwork and spring mvc



//組合使用 command,template,proxy,decorator,filter,chain等設計模式
//實現了類似aop功能,輕松實現日志,權限,連接,事務等問題
//擁有一個超強魔力的action基類

//還可以覆蓋實現preHandler,postHandler,exceptionHandler

//做各種各樣的前置后置異常處理等動作

//在這里你可以看到struts,webwork,spring mvc等框架的影子

//BaseAction extends Action
//XXXAction extends BaseAction 

//一個action多個操作

//根據method參數 ,利用反射調用相應的execute方法,如execute_query

//可采用傳統mvc框架配置也可零配置,在jsp頁面里直接調用action

public class UserAction extends BaseAction{

      
      public String execute()throws Exception{
          
        
            return execute_query();
           
        
   }

      public String execute_query()throws Exception{

              createTable();

             String sql = "select * from t_user"; 
             
             conn=DBUtil.getConn();
             
             //just get connection
             //close,commit,rollback,
             //exception handle in parent class 
             //all is auto 
             
             //連接的釋放,事務處理,異常處理,日志,權限 在父類進行
             
             //手動開啟事務,調用start()方法即可,
             //其后的所有數據庫操作將納入事務管理容器,
             //自動提交,回滾,關閉Connection
             
             //當然不支持分布式事務,不過應付一般的項目足以
             
             
             //簡單的crud操作,在action里直接調用jdbc封裝類
             //如果業務復雜,則可用service包裹,注入connection即可
             //關于分層設計,該分的時候分,該合的時候合
   
             Map map = PagedUtil.queryString(conn,sql,1,1,request);
             //分頁查詢,兩個標志位分別表示主鍵列數,是否顯示chechbox,供選擇記錄進行查看,編輯,刪除操作
             //返回數據表格和工具條,key值分別為data 和 page_bar
             //如果是大數據量查詢,可設置db_query_max_row 參數
             add(map);
             
             return "q";
             //如果在jsp頁面里直接調用則返回null即可,
             //Action action = new UserAction();
             //action.run(request,response,"query");
             
             //run(request,respnse,"method_name");
             
             //  user$query.do
             
             //  user$method.do
             
             //   根據method參數 ,利用反射調用相應的execute方法,如execute_query
             //execute 命名方法
             
   }

    public String execute_input()throws Exception{

           return "input";      
        
   }

   public String execute_insert()throws Exception{

           String table = "t_user";    
           String cols = "id,name,hh,ww,birth_day";
           int autoPK = 1;
           conn=DBUtil.getConn();
           DBUtil.insert(conn,table,cols,autoPK,model); 
           return "!query";
        
   }

   public String execute_edit()throws Exception{

           Map user = null;
           String objectid = (String)model.get("objectid"); 
           
           String sql = "select * from t_user where id='"+objectid+"'";
           conn = DBUtil.getConn();
           user = DBUtil.queryOne(conn,sql,null);
           //sql = "select * from t_user where id=?"
           //user = DBUtil.queryOne(conn,sql,new Object[]{objectid});
           if(user==null){
               return "no_object";
           }
           model.put("user",user);
           return "edit";
   }

QQread.com 推出各大專業服務器評測 linux服務器的安全性能 SUN服務器 HP服務器 DELL服務器 IBM服務器 聯想服務器 浪潮服務器 曙光服務器 同方服務器 華碩服務器 寶德服務器


   public String execute_view()throws Exception{

           Map user = null;
           String objectid = (String)model.get("objectid"); 
           String sql = "select * from t_user where id='"+objectid+"'";
           conn = DBUtil.getConn();
           user = DBUtil.queryOne(conn,sql,null);
           //sql = "select * from t_user where id=?"
           //user = DBUtil.queryOne(conn,sql,new Object[]{objectid});
           if(user==null){
               return "no_object";
           }
           model.put("user",user);
           return "view";
        
   }

   public String execute_update()throws Exception{

           String table = "t_user";    
           String cols = "id,name,hh,ww,birth_day";
           int autoPK = 1;//主鍵是否自增 ,max(id)+1
          
           conn = DBUtil.getConn();
           DBUtil.updateRow(conn,table,cols,1,model);
           return "!query";
        
   }

   public String execute_delete()throws Exception{

           String sql = "delete from t_user where id "; 
           DBUtil.batchDelById(sql,request);
           return "!query";
           
        
   }

   private void createTable(){
             String sql = null;
             sql = "create table t_user(id int primary key,name varchar(50),hh numeric(8,3),ww numeric(8,3),birth_day datetime)";
                 try{
                DBUtil.update(sql,null,request);
}catch(Exception e){}
   }
 

}

//--------------------配置文件ajf.xml

<ajf>

<view name="error">/pages/commons/error.jsp</view>
<view name="home">/pages/commons/ajf_home.jsp</view>
<view name="no_object">/pages/commons/no_object.jsp</view>

<action name="/pages/user/user" class="com.zjuee.action.UserAction">
            <view name="query">user.do</view>      
             <view name="q">user_query.jsp</view>   
              <view name="input">user_input.jsp</view>
            <view name="edit">user_edit.jsp</view>
             <view name="view">user_view.jsp</view>                    
     </action>   
 
<action name="/pages/user/x" forward="/pages/user/user.do"/>
<action name="/xx" forward="!/pages/user/user.do"/>
</ajf>

        enjoy!
                                       giscat 20061121


(出處:http://www.49028c.com)



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩精品免费在线观看| 成人性教育视频在线观看| 亚洲天堂2020| 久久天堂电影网| 国产精品久久久久久久久久东京| 久久久女人电视剧免费播放下载| 欧美日韩国产精品一区二区三区四区| 曰本色欧美视频在线| 亚洲精品99久久久久| 欧美黑人一级爽快片淫片高清| 国色天香2019中文字幕在线观看| 国产成人自拍视频在线观看| 国产精品爽爽爽爽爽爽在线观看| 精品欧美激情精品一区| 欧美精品免费在线| 免费91麻豆精品国产自产在线观看| 亚洲精品v天堂中文字幕| 另类天堂视频在线观看| 精品视频一区在线视频| 一区二区三区视频免费| 国产精品高潮呻吟久久av无限| 日本久久久久久久久| 日韩av最新在线观看| 日韩美女福利视频| 孩xxxx性bbbb欧美| 国产日韩换脸av一区在线观看| 一区二区三区回区在观看免费视频| 欧美亚洲在线播放| 最近2019中文字幕第三页视频| 久久久久久久久久国产精品| 亚洲男人天堂九九视频| 69av成年福利视频| 国产成人啪精品视频免费网| 亚洲最大成人网色| 在线看日韩av| 久久综合九色九九| 国产精品爽爽爽爽爽爽在线观看| 亚洲视频在线观看视频| 久久91亚洲精品中文字幕奶水| 亚洲色图校园春色| 亚洲成人免费在线视频| 亚洲午夜女主播在线直播| 国产亚洲免费的视频看| 成人国产精品色哟哟| 国产+成+人+亚洲欧洲| 91精品免费视频| 欧美高清第一页| 亚洲欧美日韩第一区| 亚洲国产高潮在线观看| 国产69精品久久久久9999| 亚洲欧美中文日韩在线v日本| 最近2019年手机中文字幕| 国产成人精品在线视频| 亚洲成av人片在线观看香蕉| 午夜精品久久久久久99热软件| 亚洲黄色免费三级| 久久av资源网站| 欧美日韩在线影院| 欧美最猛黑人xxxx黑人猛叫黄| 91在线无精精品一区二区| 91香蕉电影院| 亚洲va码欧洲m码| 精品中文字幕视频| 亚洲女同性videos| 97国产精品视频人人做人人爱| 欧美激情精品久久久久久黑人| 日韩精品一区二区视频| 久久伊人精品一区二区三区| 欧美日韩国产专区| 午夜精品久久久久久久男人的天堂| 欧美电影免费观看| 亚洲欧美精品中文字幕在线| 最近2019好看的中文字幕免费| 国产精品一区二区三区久久久| 97视频免费在线看| 亚洲欧美国产制服动漫| 欧美午夜xxx| 亚洲a∨日韩av高清在线观看| 国产盗摄xxxx视频xxx69| 午夜精品蜜臀一区二区三区免费| 国产主播在线一区| 久久成人精品一区二区三区| 久久夜色精品国产亚洲aⅴ| 欧美综合在线第二页| 久久精品视频在线播放| 亚洲精品久久视频| 久久国产精品免费视频| 日韩高清欧美高清| 日韩欧美国产成人| 日韩亚洲在线观看| 久久久久一本一区二区青青蜜月| 国产午夜精品一区二区三区| 欧美精品激情在线| 精品在线欧美视频| 欧美夫妻性视频| 亚洲欧美激情视频| 黑人巨大精品欧美一区免费视频| 最近2019年日本中文免费字幕| 亚洲成人亚洲激情| 国产精品久久久久久搜索| 中文字幕久久久av一区| 欧美精品久久久久久久久久| 色综合伊人色综合网| 日韩久久午夜影院| 国产不卡av在线| 亚洲精品第一页| 国产精品黄色影片导航在线观看| 亚洲国产小视频在线观看| 青青久久av北条麻妃海外网| 亚洲视频第一页| 欧美日韩精品在线观看| 国产精品激情av在线播放| 91亚洲国产成人精品性色| 日韩欧美极品在线观看| 久久免费精品日本久久中文字幕| 欧美日韩免费观看中文| 欧美性做爰毛片| 成人字幕网zmw| 日av在线播放中文不卡| 亚洲欧洲日产国码av系列天堂| 国产美女直播视频一区| 国产精品日韩专区| 久久av中文字幕| 国产精品久久久久久久9999| 久久久亚洲精选| 精品中文字幕视频| 一区二区三区国产在线观看| 精品国产一区二区三区久久狼黑人| 亚洲欧美日韩中文在线| 国产aⅴ夜夜欢一区二区三区| 亚洲成**性毛茸茸| 亚洲日本欧美日韩高观看| 久久久久久久久久国产| 亚洲精品一区久久久久久| 青草热久免费精品视频| 久久久久成人网| 日韩av最新在线观看| 久热国产精品视频| 在线观看亚洲视频| 日韩av在线网址| 黄色精品在线看| 色狠狠av一区二区三区香蕉蜜桃| 欧美在线欧美在线| 国产成人一区二区三区电影| 国产盗摄xxxx视频xxx69| 美女撒尿一区二区三区| 亚洲色图激情小说| 久久手机免费视频| 亚洲精品美女在线观看播放| 亚洲精品suv精品一区二区| 亚洲第一福利网| 777777777亚洲妇女| 欧美黑人性生活视频| 亚洲一区亚洲二区| 欧美与欧洲交xxxx免费观看| 亚洲人成网站在线播| 亚洲成人久久一区| 亚洲精品不卡在线| 色香阁99久久精品久久久| 九九九热精品免费视频观看网站| 欧美激情手机在线视频| 成人精品aaaa网站| 久久久人成影片一区二区三区| 久久久精品一区二区三区|