动态网站制作指南 [  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > J2EE/J2ME教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ J2EE/J2ME教程 ]的信息

本月文章推荐
.J2ME中暂时无法完成的功能.
.M3GConverter使用手册.
.解决J2EE系统应用性能问题常用优.
.关于XPATH的文章.
.JDBC常见问题.
.J2EE 探险者:用于无状态网络的 .
.JSP中Cookie的处理.
.Servlet简介(一).
.WPA与WML常见问题(FAQ).
.保护MIDP应用里的数据文件--远离.
.如何在jb中配置jboss开发ejb.
.Mascot Capsule v3和命令列表功能.
.用JNI调用C或C++动态联接库入门.
.Tomcat服务器下JSP页面中文问题及.
.利用JSR 184创建3D菜单.
.有效的EJB:让EJB为您工作.
.通过SCMAD认证考试的经验.
.Servlet2.3过滤器编程.
.使用J2ME程序测试MIDlet的生命周.
.J2EE、Linux稳固e-business架构.

超级简单的mvc框架ajf1.2发布

发表日期:2007-12-23 |


    没有在网上公开发部,与大家一同学习,分享,交流经验,旧版本的代码可以参考我以前的文章,设计思路上差不多。新版本中加入了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.knowsky.com)


上一篇:Datagram数据报的接收和发送 人气:566
下一篇:使用FileConnection访问文件系统 人气:915
浏览全部J2EE/J2ME的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-8-29 oblog v4.6 build 20080827
2008-8-29 ASBLOG v2.5 bulid 080828
2008-8-29 时尚DJ舞曲小偷 v3.1
2008-8-29 仿代码信息分类系统 v1.0 Beta3
2008-8-29 浮梦呓语-个人网站 完整版
2008-8-29 多用户QQ空间Flash播放器
2008-8-29 美思卡企业网站管理系统高级版
2008-8-28 LDV个人相册系统 v1.6.1
2008-8-28 讯时网站管理系统CMS v3.5
2008-8-23 Mini WinMount V0.4
2008-8-23 Vista优化大师3.11正式版
2008-8-23 Wine 1.13
2008-8-23 KlipFolio 5.0 Build 5899-80
2008-8-23 Windows Sysinternals Desktops
2008-8-23 OneTap Movies1.2破解版
2008-8-23 AnnotaterPDF阅读1.1.503 破解版
2008-8-23 SoundMeter分贝测量仪 v1.0汉化破
2008-8-23 iDrum音乐节拍1.0破解版
  发表评论
姓 名: 验证码:
内 容:
站长工具:网站收录查询 | Google PR查询 | ALEXA排名查询 | CSS在线编辑器 | 广告代码 | Html转换js | js/vbs加密 | md5加密 | 进制转换
实用工具:汉字翻译拼音 | 符号对照表 | 个税计算 | 经典小工具 | 汉字简繁转换 | 普通单位换算 | 公制单位换算 | 生辰老黄历 | 国内电话区号 国家代码与域名缩写 | 文字加密解密 | 健康查询 | 万年历 | 汉字横竖排版 | 手机号码查询 | 计算器 | ip搜索
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報
防水工事·改修工事 フットサル大会 探偵