Spring和JUnit的整合
相信Kent Beck测试驱动开发理念以为越来越多的人接受,最近在做struts+hibernate+spring的开发中有点心得,和大家一同分享。下面是以一个web项目为讨论的,测试主要设计到spring的实现类和strust的Action类的测试,其中主要问题就是要提供一个ApplicationContext为TestCase调用,这样我们引用了一个JUnitHelper工具类进行相关Spring的操作,如提供ApplicationContext环境,下面我们就实现类测试和Action类测试进行一下讲解,其中数据库连接由spring控制。实现类测试比较简单,我们主要是测试接口的功能实现,如我们有一接口为PersonDao,实
Spring 高级特性------数据持久层
数据持久层. 事务管理持久层封装 JDBC Hibernate in Spring ibatis in Spring [@more@]对于J2EE 应用程序而言,事务的处理一般有两种模式: 1. 依赖特定事务资源的事务处理这是应用开发中最常见的模式,即通过特定资源提供的事务机制进行事务管理。如通过JDBC、JTA 的rollback、commit方法;Hibernate Transaction 的 rollback、commit方法等。这种方法大家已经相当熟悉。 2. 依赖容器的参数化事务管理通过容器提供的集约式参数化事务机制,实现事务的外部管理,如EJB 中的事务管理模式。 配置中包含了dataSource,transactionManager 等
学习Spring 高级特性----Web应用与MVC
Web应用与MVC Spring MVC Spring MVC指南 基于模板的Web表示层技术 Web应用中模板技术与JSP技术的对比 输入验证与数据绑定 异常处理 国际化支持[@more@]对于现有较成熟的Model-View-Control(MVC)框架而言,其解决的主要问题无外乎下面几部分:1. 将Web页面中的输入元素封装为一个(请求)数据对象。2. 根据请求的不同,调度相应的逻辑处理单元,并将(请求)数据对象作为参数传入。3. 逻辑处理单元完成运算后,返回一个结果数据对象。4. 将结果数据对象中的数据与预先设计的表现层相融合并展现给用户。各个MVC 实现固然存在差异
AJAX 核心三部曲
AJAX 核心三部曲[@more@] <s cript lanuage = "javas cript">//创建对象function createXMLHttpRequest(){ if(window.ActiveXObject){ xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); } else if(window.XMLHttpRequest){ xmlHttp = new XMLHttpRequest(); }}//前台界面事件调用的函数function checkName(){ createXMLHttpRequest(); xmlHttp.onreadystatechange = handleStateChange; var sql = "UserReg.aspx?"; xmlHttp.open("GET",sql,true); xmlHttp.send(null);}//和服务
学习Spring 开发指南------基础语义
Dependency Injection依赖注入的几种实现类型Type1 接口注入Type2 构造子注入Type3 设值注入几种依赖注入模式的对比总结Spring Bean封装机制Bean WrapperBean FactoryApplicationContext Web Context[@more@]Component组件IoC,用白话来讲,就是由容器控制程序之间的关系,而非传统实现中,由程序代码直接操控。这也就是所谓“控制反转”的概念所在:控制权由应用代码中转到了外部容器,控制权的转移,是所谓反转。依赖注入机制减轻了组件之间的依赖关系,同时也大大提高了组件的可移植性,这意味着,组件得到重用的机会将会更多。依赖注入
学习Spring 开发指南------Spring初探
Ø 首先,我们的组件并不需要实现框架指定的接口,因此可以轻松的将组件从Spring中脱离,甚至不需要任何修改(这在基于EJB框架实现的应用中是难以想象的)。Ø 其次,组件间的依赖关系减少,极大改善了代码的可重用性。[@more@]applicationContext.xml :<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"><beans><description>Spring Quick Start</des
解析企业部署SOA四步骤
【导读】企业部署SOA被比喻为建设一座四层大厦,从打地基到起高楼,按照四个步骤构具体而详尽地阐明了构建企业级SOA的蓝图。[@more@]构建企业级SOA(Enterprise service-oriented architecture, enterprise SOA)已经被提出来相当长一段时间了。究竟如何构建企业级SOA,众说纷纭。九月中旬在拉斯维加斯举行的SAP 2006年技术大会上(SAP TechEd '06)上,SAP执行董事会成员夏嘉曦(Shai Agassi)的开幕演讲中,对于如何部署企业级SOA作了一个非常形象地比喻。在演讲中,企业部署SOA被比喻为建设一座四层大厦,从打地基到起高楼,按照四个步
什么是SOA
什么是SOA 最近半年以来,在企业级应用开发领域,谈论最多的一个词,恐怕非SOA(Service-Oriented Architecture,面向服务架构)莫属。那么SOA究竟拥有什么样的魔力,能够让众多的软件厂商对他趋之若骛,掀起新的一轮企业架构浪潮。让我们在本文中一探SOA的究竟。 那么什么是SOA,让我们先从基本概念开始讲起。 [@more@]什么是SOA? SOA是一种架构模型,它可以根据需求通过网络对松散耦合的粗粒度应用组件进行分布式部署、组合和使用。服务层是SOA的基础,可以直接被应用调用,从而有效控制系统中与软件代理交互的人为依赖性。 SOA的关键是“
试一下过程
不要忘记了[@more@]CREATE OR REPLACE PROCEDURE P_ordervsinv(p_year_in CHAR,p_month_in CHAR)IS------------------------------------------------------------------------功能:计算定单与库存满足关系---------$%%$%$--*(&$--------------------------------------------------------------------------p_year CHAR(4) := trim(p_year_in);p_month CHAR(2) := trim(p_month_in);ls_orderdate2 CHAR(8); --a订单日期ls_orderdate8 CHAR(8); --b订单日期li_version2 integer; --a版本号li_version8 integer; --b版本号li_coun
java语言基础学习
个[@more@]string 类的主要方法public int length()public char charat(int index)public string tolowercase()public string touppercase()public string substring(int p0,int p1)public string replace(char p0,char p1)public string concat(string str)public char tochararray()public static string valueof(type variable)stringbuffer类的主要方法public int length()public int capacity()public synchronized stringbuffer append(type variable)public synchronized stringbuffer insert(int offset,type variable)java系统包
InetAddressDemo
[@more@]import java.net.*;public class InetAddressDemo { public static void main(String []args) { try { InetAddress ip = InetAddress.getLocalHost(); System.out.println("主机地址"+ip); System.out.println(" 主机名称"+ip.getHostName()); System.out.println("主机IP"+ip.getHostAddress()); System.out.println("主机&**"+ip.getAllByName("china-e339b41a6")); } catch(UnknownHostException e) { e.printStackTrace(); } }
jdk1.4和jdk1.5的有那些区别
1. 泛型2 自动装箱/拆箱3 for-each 4 static import 5 变长参数[@more@]1. 泛型 1.4之前 java util包中容器类,装的是Object对象,你要装特定的类型可以,但要强制转换,这可能导致运行时错误. 例:原来ArrayList list=new ArrayList(); list.add(new Integer(3)); list.add(new Integer(4)); int i=((Integer)(list.get(0))).parseInt(); 很麻烦 现在ArrayList<Integer>list=new ArrayList<Integer>(); list.add(new Integer(3)); list.add(new Integer(4)); int i=list.get(0).parseInt(); 不用Cast,运行时错误变为编译时错误,这
struts学习
Struts是三个框架中最容易懂的。Struts的重要是Struts_config.xml中的八大元素,你可以把重点放在这里。 其次Struts中的标签重点掌握:html标签,bean标签,和logic标签即可,这样完全就可以用Struts开发出web应用程序了。 至于nested标签不算重要,也不常用(它和Struts的连带关系不是很强,用标准标签库远比它要好)。 Struts中的html标签,和普通的html标签类似,一般有web基础的人掌握起来都非常快。为什么用这个标签的原因是由于Struts的提交表单action方式和这个标签里的<html:action ..>是捆绑在一起的,必用。 bean标签是为
Eclipse快捷键
本文档从Eclipse软件上整理,是列出了标准的快捷键,未列出Emacs快捷键。[@more@] 编辑作用域功能快捷键全局查找并替换Ctrl+F文本编辑器查找上一个Ctrl+Shift+K文本编辑器查找下一个Ctrl+K全局撤销Ctrl+Z全局复制Ctrl+C全局恢复上一个选择Alt+Shift+↓全局剪切Ctrl+X全局快速修正Ctrl1+1全局内容辅助Alt+/全局全部选中Ctrl+A全局删除Delete全局上下文信息Alt+?Alt+Shift+?Ctrl+Shift+SpaceJava编辑器显示工具提示描述F2Java编辑器选择封装元素Alt+Shift+↑Java编辑器选择上一个元素Alt+Shift+←Java编辑器选择下一个元素Alt+Shift+→文
ResultSet的方法和结构分析
如何获得ResultSet的结构ResultSetMetaData rsmd=rs.getMetaData();cn=rsmd.getColumnCount();for(int ik=1;ik<=rsmd.getColumnCount();ik++){hu1.append(rsmd.getColumnName(ik)+" ");//+rsmd.getColumnTypeName(ik)+" "+rsmd.getColumnType(ik)+"");}[@more@]方法返回值类型 方法 boolean absolute(int row) JDBC 2.0。将游标移至结果集中的给定行号。 void afterLast() JDBC 2.0。将游标移至结果集的末尾,正好在最后一行的后面。 void beforeFirst() JDBC 2.0。将游标移至结果集的前方,正好在第一行
Tomcat简介
一、Tomcat背景Tomcat是jakarta项目中的一个重要的子项目,其被JavaWorld杂志的编辑选为2001年度最具创新的java产品,同时它又是sun公司官方推荐的servlet和jsp容器,因此其越来越多的受到软件公司和开发人员的喜爱。servlet和jsp的最新规范都可以在tomcat的新版本中得到实现。其次,Tomcat是完全免费的软件,任何人都可以从互联网上自由地下载。Tomcat与Apache的组合相当完美。[@more@]二、Tomcat目录tomcat|---bin Tomcat:存放启动和关闭tomcat脚本;|---conf Tomcat:存放不同的配置文件(server.xml和web.xml);|---doc:存放Tomcat
数据库中分组字符串相加
SQL> select * from test;ID MC---------- -------------1 111111 222222 111112 222223 111113 222223 33333已选择7行。SQL> select id,ltrim(max(sys_connect_by_path(mc,',')),',') row2colfrom (select id,mc,id+(row_number() over(order by id)) node_id,row_number() over(partition by id order by id) rnfrom test)start with rn = 1connect by node_id-1 = prior node_idgroup by idorder by id;ID ROW2COL---------- -------------------------------------------------------------1 11111,222222 11111,222223 11111,2
几个分析函数的比较
rownumrank()dense_rank()[@more@]关于partition by 这些都是分析函数,好像时8.0以后才有的 row_number()和rownum差不多,功能更强一点(可以在各个分组内从1开时排序) rank()是跳跃排序,有两个第二名时接下来就是第四名(同样是在各个分组内) dense_rank()l是连续排序,有两个第二名时仍然跟着第三名。相比之下row_number是没有重复值的 lag(arg1,arg2,arg3): arg1是从其他行返回的表达式 arg2是希望检索的当前行分区的偏移量。是一个正的偏移量,时一个往回检索以前的行的数目。 arg3是在arg2表示的数目超出了分组的范围时返回的值
分析函数学习3 ROW_NUMBER
ROW_NUMBER is an analytic function. It assigns a unique number to each row to which it is applied (either each row in the partition or each row returned by the query), in the ordered sequence of rows specified in the order_by_clause, beginning with 1.You cannot use ROW_NUMBER or any other analytic function for expr. That is, you can use other built-in function expressions for expr, but you cannot nest analytic functions.[@more@]ROW_NUMBER() OVER( order_by_clause)query_partition_clauseExampleFo
分析函数学习2 SYS_CONNECT_BY_PATH
SYS_CONNECT_BY_PATH is valid only in hierarchical queries. It returns the path of a column value from root to node, with column values separated by char for each row returned by CONNECT BY condition.Both column and char can be any of the datatypes CHAR, VARCHAR2, NCHAR, or NVARCHAR2. The string returned is of VARCHAR2 datatype and is in the same character set as column.[@more@]The following example returns the path of employee names from employee Kochhar to all employees of Kochhar (and their em