java学习

java学习

 

设计模式之门面模式

门面模式是对象的结构模式,外部与一个子系统的通信必须通过一个统一的门面对象进行。门面模式提供一个高层次的接口,使得子系统更易于使用。
使用门面模式还有一个附带的好处,就是能够有选择性地暴露方法。一个模块中定义的方法可以分成两部分,一部分是给子系统外部使用的,一部分是子系统内部模块之间相互调用时使用的。有了Facade类,那么用于子系统内部模块之间相互调用的方法就不用暴露给子系统外部了。
public interface ServiceA {
 void methodA() ;
}

public class ServiceAImpl implements ServiceA{

 @Override
 public void methodA() {
  System.out.println("这是服务A");  
 }
}


public interface ServiceB {
 void methodB() ;
}

public class ServiceBImpl implements ServiceB{

 @Override
 public void methodB() {
   System.out.println("这是服务B");  
 }
}



public interface ServiceC {
 void methodC() ;
}


public class ServiceCImpl implements ServiceC{

 @Override
 public void methodC() {
   System.out.println("这是服务C");  
 }
}


public class Facade {
  ServiceA sa;
    
     ServiceB sb;
    
     ServiceC sc;
    
     public Facade() {
         sa = new ServiceAImpl();
         sb = new ServiceBImpl();
         sc = new ServiceCImpl();
     }
    
     public void methodA() {
         sa.methodA();
         sb.methodB();
     }
    
     public void methodB() {
         sb.methodB();
         sc.methodC();
     }
    
     public void methodC() {
         sc.methodC();
         sa.methodA();
     }

}


测试类:

public class Test {
 public static void main(String[] args) {
     ServiceA sa = new ServiceAImpl();
     ServiceB sb = new ServiceBImpl();      
        sa.methodA();
        sb.methodB();      
        System.out.println("========");
        //facade
        Facade facade = new Facade();
        facade.methodA();
        facade.methodB();
        facade.methodC();
    }

}

posted @ 2013-06-06 17:26 杨军威 阅读(402) | 评论 (0)编辑 收藏

分享

 

推荐免费下载430套大型商业源码

下载地址:http://www.hur.cn/tg/linkin.asp?linkid=200978

PB-商业源码
  金科信进销存软件源码(81M)
  制造业管理系统源码(257M)
  PB连锁药店GSP源码(136M)
  创某医院系统源码(813M)
  人力资源管理系统源码(182M)
  浪某财务系统源码(131M)
  医院系统源码(58M)
  医院管理软件门诊挂号收费系统源码(83M)
  医疗保险管理系统源码(191M)
  拓某连锁专卖宝典源码(90M)
  普某ERP系统源码(300M)
  科某企业ERP源码(154M)
  重庆运通商业连锁系统源码(293M)
  供电局MIS管理信息系统源码(196M)
  社区信息管理系统源码(122M)
  暂住人口管理系统4.0(网络版)源码(25M)
  高某医院系统源码(200M)
  思某商业管理系统源码(40M)
  电子厂用小型ERP系统源码(51M)
  点某财务软件源码(121M)
  和某ERP系统源码(73M)
  医院管理系统源码(956M)
  河南医院信息系统源码(400M)
  瑞某酒店管理系统源码(48M)
  飞某商业管理系统源码(87M)
  PowerBuilder 8.0 自定义报表系统(5M)
  动态报表系统(10M)
  致某动态报表模块源码(5M)
  小型商业进销存系统(带POS)(34M)
  大型酒店管理最新版本PB8(60M)
  中小超市POS综合管理系统(142M)
  检查科室报告单管理软件(17M)
  商某5.0 POS系统(20M)
  威某酒店管理系统(365M)
  鞋业ERP系统(繁体)(160M)
  新某大财务系统(301M)
  医生工作站源码(30M)
  宏声人力资源管理系统(41M)
  医疗保险系统(37M)
  医药卫生综合管理系统(54M)
  MIS系统源代码pb9(40M)
  PB影碟出租管理系统8.03(14M)
  pb-oracle通用开发框架(27M)
  PB编写的电子地图源码(5M)
  大众医院门诊收费系统(28M)
  pb洗浴管理系统(9M)
  餐饮管理程序源代码(14M)
  仓库管理系统源码(6M)
  查询打印数据窗口共享排序定制基类(5M)
  长江科学院合同成果管理(27M)
  工程造价系统源码(17M)
  国泰商业管理系统MIS(135M)
  华泰印刷源码(122M)
  检查科室报告单管理软件(17M)
  金华医院门诊挂号收费系统PB(80M)
  酒店管理系统(网络版)(73M)
  某配件公司生产管理系统(154M)
  某企业财务管理系统(125M)
  瑞通hms(245M)
  瑞通酒店管理系统V8.0网络版(102M)
  商场管理系统源代码pb(15M)
  商品进销存管理系统(pb)(9M)
  天河进销存POS系统(211M)
  物流程序源码(53M)
  小型商业进销存系统(带POS)(32M)
  鞋业ERP源码(153M)
  旭日2000企业管理系统(65M)
  血库的软件用pb做(6M)
  药品管理(27M)
  医疗保险系统pb(258M)
  普阳Erp源码(61M)
  科研管理系统源码(15M)
  酒店管理系统(59M)

Delphi-商业源码
  美容院管理系统源码(70M)
  MRPII制造资源计划系统源码(147M)
  ERP企业管理系统源码(74M)
  福某制衣MRP管理系统源码(43M)
  胜某进销存系统源码(88M)
  立某酒店、餐饮、洗浴、休闲管理系统源码(55M)
  实某聊天系统 v3.0源码(71M)
  社保管理系统源码(22M)
  商业通医药连锁经营管理系统源码(40M)
  商业管理系统源码(135M)
  日某餐饮系统源码(173M)
  企业进销存系统源码(41M)
  贸易网站登陆器源码(60M)
  遵某的视频会议系统代码源码(26M)
  贸易管理系统源码(65M)
  酒店管理系统源码(106M)
  汽车租赁信息咨询系统源码(62M)
  牙科诊所管理系统源码(31M)
  制衣MRPII系统源码(65M)
  中国眼科病历系统源码(103M)
  远程控制源码(20M)
  医药连锁源码源码(55M)
  语音故障报修系统(需要TW8VID语音卡)源码(18M)
  行业应急系统源码(23M)
  销售管理系统源码(24M)
  洗浴中心管理系统源码(20M)
  五金管理信息系统源码(18M)
  网络教室系统源码(网络版)源码(58M)
  天某ERP系统源码(281M)
  医院病案管理系统源码(26M)
  VOD点歌系统源码(59M)
  国外的财务软件源码(126M)
  旅游公司信息系统源码(43M)
  人力资源管理系统源码(24M)
  POS超市管理系统源码(60M)
  POS系统源码(43M)
  医院收费与信息管理系统源码(122M)
  安某销售系统源码(10M)
  GIS系统—有线电视网络设备管理系统源码(30M)
  ICQ(客服服务器)源码(55M)
  办公自动化系统源代码源码(27M)
  仓储物流信息管理系统源码(137M)
  传奇游戏源码(178M)
  电能表载波抄表软源码(44M)
  电子试卷生成系统源码(30M)
  美容院管理系统源码(16M)
  泰某工程管理软件源码(40M)
  环某美容美发管理系统源码(23M)
  机房收费管理源码(78M)
  计划生育管理系统源码(21M)
  驾驶员考试源码(40M)
  金某验布系统源码(82M)
  进销存系统源码(43M)
  超市库存管理系统源码(23M)
  中移动大客户管理系统(7M)
  思微pos系统(48M)
  泰达图书馆工程管理软件源码(24M)
  Delphi编写的企业进销存系统源代码(11M)
  ENO企业人事信息管理系统(6M)
  NiceERP企业系统(42M)
  ST进销存源码(12M)
  宾馆软件源码(12M)
  采购应用系统源码(11M)
  超市管理系统源代码(7M)
  非常方便的物业管理系统(7M)
  钢铁进销存源码(12M)
  港汇客户管理系统源码(13M)
  海信商业管理系统完整源码版(99M)
  进销存ForD7(8M)
  牧羊人服饰系统 (ADO+SQL)(6M)
  实达企业在线EOL三层系统Delphi源码(11M)
  手机营销系统源码(10M)
  通用的进销存系统源码(10M)
  通用人力资源系统源码(7M)
  完整的市一级工资管理程序源码(142M)
  西恩软件机房管理源码(26M)
  信息管理程序源码(14M)
  制衣MRP管理系统源码(45M)
  胜天财务进销存2003源码(82M)
  AL源码(10M)
  DAGL 档案管理程序 v1.0 (SQL Server)(22M)
  delphi BookMIS 教材管理系统(7M)
  delphi_宏远VOD原代码(45M)
  大型企业ERP管理系统(84M)
  大型企业邮件管理系统(7M)
  delphi_柯龙中草药进销存 v3.0(22M)
  delphi_企业管理Erp(64M)
  delphi_思微POS连锁超市管理系统(60M)
  delphi个人理财软件源码(7M)
  delphi名佳商务系统源码(74M)
  delphi万家福超市管理系统(17M)
  delphi物流供应链管理系统(5M)
  delphi医院管理系统(18M)
  delphi咏南进销存 两层(C_S)(8M)
  NDOA南都办公自动化系统(delphi)(8M)
  POS连锁超市管理系统 (商业代码)(60M)
  delphi灰鸽子vip1.2 版本(43M)
  地磅称量系统(7M)
  典当综合业务管理系统(10M)
  电子寻更源程序(20M)
  东莞和富有限公司进销存管理系统(33M)
  动感立体KTV VOD(18M)
  工资管理系统(53M)
  广电行业GIS系统(10M)
  华丝贸易国内销售管理系统(30M)
  火锅城管理系统1.0版(10M)
  机动车驾驶员无纸化理论考试系统(38M)
  局域网即时通信系统(52M)
  客房管理系统(网络版)(100M)
  客户关系管理系统(CRM)(11M)
  力信消费管理系统2000(12M)
  龙邦进销存源码(16M)
  美容院管理系统修改版(ADO)(21M)
  某公司工资管理系统(17M)
  某企业ERP企业管理系统(32M)
  某通用进销存系统(20M)
  配件仓库管理(24M)
  企业管理Erp(商业源码)(64M)
  全球数码仓库仓储管理信息系统(110M)
  思雷特(sunnet)物业管理信息系统(232M)
  台湾公司做的一个ERP管理系统(235M)
  万佳圆宾馆桑拿洗浴管理系统(20M)
  网络营销专家(25M)
  维修管理工具(15M)
  五金材料商业进销存(23M)
  物业管理(22M)
  校园网多媒体自动播放系统(10M)
  新艺VOD系统(59M)
  眼镜行业财务进销存后台管理代码 V1.0v(72M)
  异洲酒店(餐饮)管理系统delphi源码(delphi+sql)(20M)
  P2P即时通讯源码Delphi(46M)
  POS消费管理系统2000delhi源码(12M)
  大型超市销售连锁管理系统(16M)
  电子寻更源程序delphi(20M)
  远程控制DELPHI源代码(17M)
  高考网上招生省招办投档系统(11M)
  湖南佳某软件公司商业POS通系统delphi源码(98M)
  化工颜料生产管理源码(30M)
  科技计划信息管理系统delphi源码(22M)
  视频会议系统delphi源码(45M)
  某医院HIS管理系统delphi源码(86M)
  顺某指纹考勤管理系统delphi源码(64M)
  delphi超市管理系统源码(16M)

VB-商业源码
  新世某ERP5.0升级版源码(796M)
  MIS管理信息系統源码(583M)
  医药卫生管理系统源码(60M)
  制造业ERP系统源码(125M)
  专卖店POS系统源码(36M)
  售房管理系统源码(89M)
  用某u850源码(9M)
  易某点歌系统源码(18M)
  医院系统源码(202M)
  医药管理GSP源码(36M)
  新开某酒店系统源码(29M)
  网吧管理系统源码(15M)
  太平某信息管理系统源码(33M)
  金算某财务及企业管理软件源码(134M)
  教师住房管理系统源码(12M)
  惠某ERP系统源码(442M)
  报业广告发行管理系统源码(42M)
  宝某售饭系统源码(15M)
  新世某ERP5.0完全版源码(399M)
  宛某书社图书管理系统源码(9M)
  VB+SQL开发银行模拟系统(167M)
  VB超巿管理系统(11M)
  材料目录软件(10M)
  进销存软件(13M)
  全球通商务管理系统——POS管理系统(另一版本)(75M)
  四季青污水处理厂系统(62M)
  网吧管理系统服务器客户端源程序(另一版本)(15M)
  住房公积金监管系统(46M)
  邮件管理与群发系统(30M)
  学生信息管理系统(5M)
  通用文档一体化档案管理系统(127M)
  升瑞售楼管理系统(60M)
  设计系统2000(报表设计与管理系统)(12M)
  人力资源管理系统(28M)
  网络营销软件(25M)
  某企业物资管理信息系统(14M)
  某计算机网络管理系统VB(74M)
  财务系统源码(70M)
  路桥收费系统VB(702M)
  大型企业内部管理系统(228M)
  伯乐人力资源管理系统2000(161M)
  北京市区绿化隔离地区信息系统2000(34M)
  学生信息管理系统v1.0(附源码)(5M)
  馨香物业管理糸统(13M)
  新版图书综合管理系统(6M)
  审核管理系统-完整版(35M)
  华成酒店管理系统(10M)
  大型商业ERP系统2-财务系统部分(65M)
  超市销售管理系统(5M)
  宾馆桑拿休闲中心管理系统(30M)
  宾馆客房管理系统(6M)
  vb酒店管理系统(10M)
  VB物流管理系统源码(11M)
  计划生育管理系统(56M)
  vb和Mapx开发的房屋测绘系统GIS商业源码(10M)
  乡镇供电所电费处理系统(14M)
  VB人事工资管理系统(27M)
  VB财务软件源码(19M)
 
VC-商业源码
  网络听诊管理监控系统源码(1540M)
  速某(c++)MRPII系统源码(320M)
  贸易网站登陆器源码(60M)
  工厂自动化生产整合管理系统源码(233M)
  高速公路收费系统源码(44M)
  北京某大卖场公司自主开发首套linux平台Pos源码(245M)
  酒店餐饮管理系统(21M)
  伯克公司生产销售系统源码(14M)
  企业短信助理源代码(20M)
  一个超完整的医药管理系统源码(59M)
  综合人事管理系统源码(vc+sql2000)(18M)
  综合人事管理系统源码(vc+sql2000)(5M)
  Hotel酒店管理系统源码(4M)
  POS前台C++程序源码(7M)
  quakeIII 源码(26M)
  视频会议系统源码(50M)
  VC客房管理系统源码(10M)
  VC数字图像模式技术及工程应用源码(106M)
  串口编程调试及双机互联源码(44M)
  代码名称:Microsoft MS-DOS6.0 完整源代码(63M)
  家族信息管理系统源码(7M)
  酒店管理系统2003(8M)
  考勤管理系统源代码下载(9M)
  利用MFC开发的OpenGL开发包(27M)
  屏幕转换成AVI文件的程序源码(25M)
  赛克思书店销售管理系统源码(7M)
  数字图像处理源码(30M)
  数字图像获取、处理与分析源盘(42M)
  图形图象类代码(8M)
  用Visual C++开发GIS系统(16M)
  游戏编程精粹源码(36M)
  云台镜头控制系统源码(20M)
  智能安防报警系统源码(37M)
  Vc视频会议源代码压缩文件(314M)
  VC数字图像模式技术及工程应用(103M)
  vc医院门诊收费系统(5M)
  互联天下im(95M)
  某公司VC视频核心代码(35M)
  视频会议开发代码(259M)
  视频监控(55M)
  视音频代码(35M)
  用Visual C++开发GIS系统(15M)
  真正的速达源码(CB5可编译)(54M)
  IM企业即时通讯软件源代码(18M)
  宾馆酒店管理系统源码(25M)
  可视电话软件源码(16M)
  商品采购管理系统vc源码(25M)
  网络视频会议系统vc源码(41M)

.NET-商业源码
  和某大型ERP系统源码(510M)
  商务管理教学源码(28M)
  C#写的网上汽修汽配管理系统(52M)
  企业公文管理信息系统(87M)
  教材管理中心(3M)
  商务之星(ASP.NET)(618M)
  物流系统Logistics(v1.0)(217M)
  若冰.net远程教育系统(18M)
  asp.net+c#的人事系统(2M)
  Coffice协同办公管理系统(C#)(176M)
  NET的bbs论坛源码(6M)
  OA办公自动化系统源码(21M)
  嘉惠药品进销存管理系统(vb.net)(55M)
  企业内部信息交流系统源码(9M)
  若冰企业商务平台.net(31M)
  数据结构动画演示系统(c#)DataStructure(8M)
  医院管理系统ASP.NET+MSSQL(9M)
  中铁五局Mis系统原型设计(9M)
  住房公积金管理中ASP.NET+MSSQL(5M)
  房地产信息网(c#.net+sql)(6M)
  net网上购书系统(11M)
  NET药品进销存系统(5M)
  net采购仓库核销管理系统(6M)
  net计算机基础考试系统(10M)
  net精品OA(91M)
  net客户关系管理系统(6M)
  net企业客户服务系统(5M)
  net企业销售管理信息系统(8M)
  net汽车销售公司ERP进销存系统(38M)
  net图书馆管理系统(11M)
  net学生寝室管理系统(12M)
  net真正的全动态报表(5M)
  net自定义报表(16M)
  vb.net 销售管理系统(5M)
  vbnet进销存系统源码(6M)
  多层架构的大型.NET OA 系统(16M)
  客户关系管理系统(8M)
  某公司CRM管理系统 net(29M)
  三甲医院管理系统HIS(C#版)(27M)
  局域网考试系统C#(9M)
  进出仓管理系统(17M)
  Asp.Net用友华表(V5.1)制作自定义报表(16M)
  Asp.net通用OA系统源代码(12M)
  C#酒店管理系统(20M)
  PowerOA办公自动化系统商业源码(15M)
  餐饮管理系统(C#源码)(32M)
  公司客户关系管理系统CRM ASP.NET源码(27M)
  机械制造业信息管理系统源码(21M)
  C#某橱柜销售企业ERP管理系统(16M)
  公司的业务管理系统(15M)
  商业进销管理系统(47M)
  公路运输管理系统asp.net(30M)
  汽车销售公司ERP进销存系统(39M)
  现代教务管理系统源码(25M)
  药店管理系统(33M)
  餐饮管理系统源码(10M)
  智能办公系统(14M)

JAVA-商业源码
  大型企业JAVA的ERP源码(193M)
  可乐吧在线游戏最新服务器端及部分源代码源码(18M)
  华某物业管理系统源码-JSP源码(97M)
  华某物业管理系统安装程序源码(43M)
  乐趣大型购物系统源码(7M)
  Java做的WebMail源码(9M)
  JAVA进销存源码(60M)
  哈工大CERP系统源码(17M)
  JSP开发的项目跟踪系统源码(11M)
  季风进销存管理系统1.1(JSP版)源码(4M)
  java框架开源订销管理系统MYSQL(6M)
  条形码商品管理信息系统源码(12M)
  信用卡管理系统源码(4M)
  学生课绩管理系统(5M)
  工作流管理系统openwfe源码(38M)
  开源网上会议系统iula-0.1.0 java(5M)
  java 学生管理系统(全部代码+数据库)(5M)
  java超市购物系统(9M)
  java网上oa办公系统原码(5M)
  JAVA写的个人博客源码(8M)
  java阳光酒店管理系统(14M)
  投票管理系统java(16M)
  宠物销售管理系统 java(11M)
  网站在线客服系统(Jsp+MySql)(19M)
  企富商贸网 java(12M)
  商城之家JSP商城企业版v6.8(15M)
  石大在线财务管理系统(含源码)java(5M)
  AWT图形设计源代码(9M)
  iText可以制作中文PDF文件的JAVA源程序(5M)
  Java+sqlserver2000做的员工管理系统(5M)
  6JAVA的ICQ系统源码(7M)
  Java开发的网络办公系统(33M)
  Java设计源码(25M)
  Java做的WebMail(9M)
  雇员管理系统源码(5M)
  酒店管理系统(16M)
  员工管理系统(8M)
  CRM客户管理系统源代码(12M)
  J2EE项目源码DigitalCampus数字校园(17M)
  JAVA网上商城项目完整源码(10M)
  Java实现图书馆管理系统源码(13M)
  Java写的ERP系统(30M)
  java大型企业DRP分销系统源码(11M)
  CRM项目java源码(10M)
  JBuilder固定资产管理系统java项目源码(12M)
  基于J2EE三层结构设计ERP源码(12M)

..............

 

posted @ 2013-06-06 15:59 杨军威 阅读(317) | 评论 (0)编辑 收藏

Struts2之annotation注解验证

 <!-- 配置方法级别的校验 -->
                <interceptor-ref name="validation">
                    <param name="excludeMethods">input,back,cancel,browse</param>
                    <param name="validateAnnotatedMethodOnly">true</param>
                </interceptor-ref>
所以action中的这四个方法不需要验证

// 保存
    @Validations(
        requiredStrings = {
            @RequiredStringValidator(fieldName = "admin.username", message = "用户名不允许为空!"),
            @RequiredStringValidator(fieldName = "admin.password", message = "密码不允许为空!"),
            @RequiredStringValidator(fieldName = "admin.email", message = "E-mail不允许为空!")
        },
        requiredFields = {
            @RequiredFieldValidator(fieldName = "admin.isAccountEnabled", message = "是否启用不允许为空!")
        },
        stringLengthFields = {
            @StringLengthFieldValidator(fieldName = "admin.username", minLength = "2", maxLength = "20", message = "用户名长度必须在${minLength}到${maxLength}之间!"),
            @StringLengthFieldValidator(fieldName = "admin.password", minLength = "4", maxLength = "20", message = "密码长度必须在${minLength}到${maxLength}之间!")
        },
        emails = {
            @EmailValidator(fieldName = "admin.email", message = "E-mail格式错误!")
        },
        regexFields = {
            @RegexFieldValidator(fieldName = "admin.username", expression = "^[0-9a-z_A-Z\u4e00-\u9fa5]+$", message = "用户名只允许包含中文、英文、数字和下划线!")
        }
    )

posted @ 2013-05-31 09:49 杨军威 阅读(750) | 评论 (0)编辑 收藏

$.cookie的用法

一个轻量级的cookie 插件,可以读取、写入、删除 cookie。

jquery.cookie.js 的配置

首先包含jQuery的库文件,在后面包含 jquery.cookie.js 的库文件。

<script type="text/javascript" src="js/jquery-1.6.2.min.js"></script>

<script type="text/javascript" src="js/jquery.cookie.js"></script>

使用方法

1.新添加一个会话 cookie:

$.cookie('the_cookie', 'the_value');

注:当没有指明 cookie有效时间时,所创建的cookie有效期默认到用户关闭浏览器为止,所以被称为

“会话cookie(session cookie)”。

2.创建一个cookie并设置有效时间为 7天:

$.cookie('the_cookie', 'the_value', { expires: 7 });

注:当指明了cookie有效时间时,所创建的cookie被称为“持久 cookie (persistent  cookie)”。

3.创建一个cookie并设置 cookie的有效路径:

$.cookie('the_cookie', 'the_value', { expires: 7, path: '/' });

注:在默认情况下,只有设置 cookie的网页才能读取该 cookie。如果想让一个页面读取另一个页面设

置的cookie,必须设置cookie的路径。cookie的路径用于设置能够读取 cookie的顶级目录。将这

个路径设置为网站的根目录,可以让所有网页都能互相读取 cookie (一般不要这样设置,防止出现冲突) 。

4.读取cookie:

$.cookie('the_cookie'); // cookie存在 => 'the_value'

$.cookie('not_existing'); // cookie不存在 => null

5.删除cookie,通过传递null作为cookie的值即可:

$.cookie('the_cookie', null);

----------相关参数的解释---------------

1).expires: 365

定义cookie的有效时间,值可以是一个数字(从创建cookie时算起,以天为单位)或一个Date 对

象。如果省略,那么创建的cookie是会话cookie,将在用户退出浏览器时被删除。

2).path: '/'

默认情况:只有设置cookie的网页才能读取该cookie。

定义cookie的有效路径。默认情况下, 该参数的值为创建 cookie 的网页所在路径(标准浏览器的行为) 。

如果你想在整个网站中访问这个cookie需要这样设置有效路径:path: '/'。如果你想删除一个定义

了有效路径的 cookie,你需要在调用函数时包含这个路径:$.cookie('the_cookie', null,

{ path: '/' });。 domain: 'example.com'

默认值:创建 cookie的网页所拥有的域名。

3).secure: true

默认值:false。如果为true,cookie的传输需要使用安全协议(HTTPS)。

4).raw: true

默认值:false。

默认情况下,读取和写入 cookie 的时候自动进行编码和解码(使用encodeURIComponent 编码,

decodeURIComponent 解码)。要关闭这个功能设置 raw: true 即可。

posted @ 2013-05-30 13:15 杨军威 阅读(8159) | 评论 (1)编辑 收藏

jdbc

public class DBHelp<T> {
 
 private static String driver;
 private static String url;
 private static String username;
 private static String password;
 private static BasicDataSource dataSource;
 
 static{
  Properties properties = new Properties();
  
  try {
   //读取到src目录中存放的db.properties配置文件
   properties.load(DBHelp.class.getClassLoader().getResourceAsStream("db.properties"));
   driver = properties.getProperty("driver");
   url = properties.getProperty("url");
   username = properties.getProperty("username");
   password = properties.getProperty("password");
  } catch (IOException e) {
   e.printStackTrace();
  }
  
  
  dataSource = new BasicDataSource();
  
  dataSource.setDriverClassName(driver);
  dataSource.setUrl(url);
  dataSource.setUsername(username);
  dataSource.setPassword(password);
  dataSource.setInitialSize(5);
  dataSource.setMaxWait(5000);
  dataSource.setMaxActive(20);
  dataSource.setMinIdle(10);
  
 }
 public Connection getConnection(){
  try {
   Connection conn = dataSource.getConnection();
   
   return conn;
  } catch (SQLException e) {
   e.printStackTrace();
  }
  return null;
 }
 public List<T> executeForList(RowMapper<T> rowMapper,String sql) {
  Connection conn = null;
  PreparedStatement stat = null;
  ResultSet rs = null;
  List<T> list = new ArrayList<T>();
  
  try {
   conn = getConnection();
   stat = conn.prepareStatement(sql);
   rs = stat.executeQuery();
   while(rs.next()) {
    list.add(rowMapper.mapperRow(rs));
   }
   System.out.println("SQL"+sql);
  } catch (SQLException e) {
   e.printStackTrace();
  }finally{
   close(rs, stat, conn);
  }
  return list;
 }
 
 public List<T> executeForList(String sql,RowMapper<T> rowMapper,Object... args) {
  Connection conn = null;
  PreparedStatement stat = null;
  ResultSet rs = null;
  List<T> list = new ArrayList<T>();
  
  try {
   conn = getConnection();
   stat = conn.prepareStatement(sql);
   for (int i = 0; i < args.length; i++) {
    stat.setObject(i+1,args[i]);
   }
   rs = stat.executeQuery();
   while(rs.next()) {
    list.add(rowMapper.mapperRow(rs));
   }
   System.out.println("SQL"+sql);
  } catch (SQLException e) {
   e.printStackTrace();
  }finally{
   close(rs, stat, conn);
  }
  return list;
 }
 
 public T executeForObject(String sql,RowMapper<T> rowMapper,Object... args) {
  Connection conn = null;
  PreparedStatement stat = null;
  ResultSet rs = null;
  T obj = null;
  
  try {
   conn = getConnection();
   stat = conn.prepareStatement(sql);
   for (int i = 0; i < args.length; i++) {
    stat.setObject(i+1, args[i]);
   }
   rs = stat.executeQuery();
   if(rs.next()) {
    obj = rowMapper.mapperRow(rs);
   }
   System.out.println("SQL"+sql);
  } catch (SQLException e) {
   e.printStackTrace();
  }finally{
   close(rs, stat, conn);
  }
  return obj;
  
 }
 public int executeForCount(String sql,Object... args){
  Connection conn = null;
  PreparedStatement stat = null;
  ResultSet rs = null;
  int count = 0;
  
  try {
   conn = getConnection();
   stat = conn.prepareStatement(sql);
   rs = stat.executeQuery();
   
   for(int i = 0;i < args.length;i++){
    stat.setObject(i+1, args[i]);
   }
   if(rs.next()) {
    count = rs.getInt(1);
   }
   System.out.println("SQL"+sql);
  } catch (SQLException e) {
   e.printStackTrace();
  }finally{
   close(rs, stat, conn);
  }
  return count;
 }
 
 public void executeUpdate(String sql,Object... args) {
  Connection conn = null;
  PreparedStatement stat = null;
  
  
  try {
   conn = getConnection();
   stat = conn.prepareStatement(sql);
   
   for(int i = 0;i < args.length;i++){
    stat.setObject(i+1, args[i]);
   }
   
   stat.executeUpdate();
   System.out.println("SQL"+sql);
  } catch (SQLException e) {
   e.printStackTrace();
  }finally{
   close(stat,conn);
  }
  
 }
 
 public void close(PreparedStatement stat,Connection conn) {
  close(null,stat,conn);
 }
 public void close(ResultSet rs,PreparedStatement stat,Connection conn) {
  try {
   if(rs != null){
    rs.close();
   }
  } catch (SQLException e) {
   e.printStackTrace();
  }finally{
   try {
    if(stat != null) {
     stat.close();
    }
   } catch (SQLException e) {
    e.printStackTrace();
   }finally{
    try {
     if(conn != null) {
      conn.close();
     }
    } catch (SQLException e) {
     e.printStackTrace();
    }
   }
  }
 }
 
 
}

public interface RowMapper<T> {
 public T mapperRow(ResultSet rs) throws SQLException;
}

public class TourDao {
 private DBHelp<Tour> db = new DBHelp<Tour>();
 public Tour findByName(String name){
  String sql = "SELECT id,tourname FROM t_tour WHERE tourname=?";
  Tour t = db.executeForObject(sql, new TourRowMapper(), name);
  return t;
 }
 public void insertSale(String name){
  String sql = "INSERT INTO t_tour (tourname) VALUE(?)";
  db.executeUpdate(sql, name);
 }
 public class TourRowMapper implements RowMapper<Tour>{

  public Tour mapperRow(ResultSet rs) throws SQLException {
   Tour t = new Tour();
   t.setId(rs.getInt("id"));
   t.setTourname(rs.getString("tourname"));
   
   return t;
  }
  
 }
}

posted @ 2013-05-28 19:53 杨军威 阅读(183) | 评论 (0)编辑 收藏

设计模式之备忘录模式

备忘录(Memento)模式又称标记(Token)模式。GOF给备忘录模式的定义为:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。
其实单就实现保存一个对象在某一时刻的状态的功能,还是很简单的——将对象中要保存的属性放到一个专门管理备份的对象中,需要的时候则调用约定好的方法将备份的属性放回到原来的对象中去。
备忘录模式的组成部分:

  1) 备忘录(Memento)角色:备忘录角色存储“备忘发起角色”的内部状态。“备忘发起角色”根据需要决定备忘录角色存储“备忘发起角色”的哪些内部状 态。为了防止“备忘发起角色”以外的其他对象访问备忘录。备忘录实际上有两个接口,“备忘录管理者角色”只能看到备忘录提供的窄接口——对于备忘录角色中 存放的属性是不可见的。“备忘发起角色”则能够看到一个宽接口——能够得到自己放入备忘录角色中属性。

  2) 备忘发起(Originator)角色:“备忘发起角色”创建一个备忘录,用以记录当前时刻它的内部状态。在需要时使用备忘录恢复内部状态。

  3) 备忘录管理者(Caretaker)角色:负责保存好备忘录。不能对备忘录的内容进行操作或检查。
使用备忘录模式的前提:

  1) 必须保存一个对象在某一个时刻的(部分)状态, 这样以后需要时它才能恢复到先前的状态。

  2) 如果一个用接口来让其它对象直接得到这些状态,将会暴露对象的实现细节并破坏对象的封装性。
例子如下:
//存储信息类
public class Caretaker {
private Memento memento;
    
    public Memento getMemento(){
        return this.memento;
    }
    
    public void setMemento(Memento memento){
        this.memento = memento;
    }

}

//备忘录模式
public class Memento {
    private String state;

    public Memento(String state) {
        this.state = state;
    }

    public String getState() {
        return state;
    }

    public void setState(String state) {
        this.state = state;
    }

}

public class Originator {
    private String state;

    public String getState() {
        return state;
    }

    public void setState(String state) {
        this.state = state;
    }
    
    public Memento createMemento() {
        return new Memento(state);
    }
    
    public void setMemento(Memento memento) {
        state = memento.getState();
    }
    
    public void showState(){
        System.out.println(state);
    }

}

测试类:
public class Test {
    public static void main(String[] args) {
        Originator org = new Originator();
        org.setState("开会中");
        org.showState();//显示
        System.out.println("---------------");
        Caretaker ctk = new Caretaker();
        
        ctk.setMemento(org.createMemento());//将数据封装在Caretaker
        System.out.println("---------------");
        org.setState("睡觉中");
        org.showState();//显示
        System.out.println("---------------");
        org.setMemento(ctk.getMemento());//将Caretaker中的数据重新导入
        org.showState();
        System.out.println("---------------");
    }

}

posted @ 2013-05-27 17:24 杨军威 阅读(207) | 评论 (0)编辑 收藏

设计模式之中介者模式

Java深入到一定程度,就不可避免的碰到设计模式这一概念,了解设计模式,将使自己对java中的接口或抽象类应用有更深的理解.设计模式在java的 中型系统中应用广泛,遵循一定的编程模式,才能使自己的代码便于理解,易于交流,Mediator(中介者模式)模式是比较常用的一个模式.
 

  Mediator中介者模式,当多个对象彼此间都有联系的时候,我们就可以应用Mediator将对象间的多对多关系转换为一对多的关系,这样做,可以使各个对象间的耦合松散。统一管理对象间的交互。但也可能使得Mediator对象成为一个系统中的庞然大物,难以维护
   使用场景:集中负责维护对象模型的关系完整性 以及需要 封装对象间交互方式的时候.
   其实MVC中的controller就是一种Mediator,是UI层 和后端应用sevice层间的中介者。中介者将交互的复杂性变为中介者的复杂性

例子如下:
业务类的接口:
public interface Colleague {
void action();
}
业务类的2个实现类:
public class ColleagueA implements Colleague{

    @Override
    public void action() {
         System.out.println("普通员工努力工作aaaaaaa");        
    }
}
public class ColleagueB implements Colleague{

    @Override
    public void action() {
         System.out.println("前台注意了bbbb");        
    }
}
中介者接口:
public interface Mediator {
void notice(String content);
}

public class ConcreteMediator implements Mediator{
     private ColleagueA ca;
        
        private ColleagueB cb;
        
        public ConcreteMediator() {
            ca = new ColleagueA();
            cb = new ColleagueB();
        }
        
        public void notice(String content) {
            if (content.equals("boss")) {
                //老板来了, 通知员工A
                ca.action();
            }
            if (content.equals("client")) {
                //客户来了, 通知前台B
                cb.action();
            }
        }

}

测试类:
public class Test {
     public static void main(String[] args) {
            Mediator med = new ConcreteMediator();
            //老板来了
            med.notice("boss");
            
            //客户来了
            med.notice("client");
        }

}
当客户端传过来的字符串不一样时,中介者类根据字符串实现不同的业务类的对象,处理数据。

posted @ 2013-05-27 17:02 杨军威 阅读(358) | 评论 (0)编辑 收藏

extjs 中判断坐标是否在选择区域中

function isInRect(x, y, x0, y0, x1, y1) {
 if (x0 < x && x < x1 && y0 < y && y < y1)
  return true;
 else
  return false;
}

posted @ 2013-05-16 21:38 杨军威 阅读(160) | 评论 (0)编辑 收藏

extjs中触发隐藏和出现的方法

function ElIn(elId) {
 var el = Ext.get(elId);
 el.fadeIn( {
  endOpacity : 1,
  easing : 'easeOut',
  duration : 2
 });
}

function ElOut(elId) {
 var el = Ext.get(elId);
 el.fadeOut( {
  endOpacity : 0,
  easing : 'easeOut',
  duration : .5,
  useDisplay : true
 });
 // el.dom.style.display = 'none';
}

posted @ 2013-05-16 21:34 杨军威 阅读(191) | 评论 (0)编辑 收藏

extjs得到图片的坐标和让图片某一区域可以点击

function getClickScale(event, target, isShowInfo) {
 var imageWidth = target.width;
 var imageHeight = target.height;
 var eventX = event.xy[0];
 var eventY = event.xy[1];

 var scalex = eventX / imageWidth;
 var scaley = eventY / imageHeight;

 var info = '';
 info += 'image (' + imageWidth + ', ' + imageHeight + '), ';
 info += 'click (' + eventX + ', ' + eventY + '), ';
 info += 'scale (' + scalex + ', ' + scaley + ')';
 if (typeof (isShowInfo) != 'undefined' && isShowInfo) {
  alert(info);
 }

 return {
  scalex : scalex,
  scaley : scaley
 };
}

Ext.get('main-navigator-image').on(
     'mousemove',
     function(event, target, obj) {
      var scale = getClickScale(event, target);
      target.style.cursor = '';
      for ( var i = 0; i < areas.length; i++) {
       var area = areas[i];
       if (isInRect(scale.scalex, scale.scaley,
         area.p1.scalex, area.p1.scaley,
         area.p2.scalex, area.p2.scaley)) {
        target.style.cursor = 'pointer';
        break;
       }
      }
     });
  });

posted @ 2013-05-16 21:33 杨军威 阅读(205) | 评论 (0)编辑 收藏

仅列出标题
共43页: First 上一页 17 18 19 20 21 22 23 24 25 下一页 Last 

导航

统计

常用链接

留言簿

随笔档案

搜索

最新评论

阅读排行榜

评论排行榜