﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-我就是Aisce</title><link>http://www.blogjava.net/Aisce/</link><description /><language>zh-cn</language><lastBuildDate>Sat, 20 Jun 2026 09:14:32 GMT</lastBuildDate><pubDate>Sat, 20 Jun 2026 09:14:32 GMT</pubDate><ttl>60</ttl><item><title>linux（FC4）下SVN完全配置升级手册（经典）</title><link>http://www.blogjava.net/Aisce/articles/173254.html</link><dc:creator>Aisce</dc:creator><author>Aisce</author><pubDate>Mon, 07 Jan 2008 02:19:00 GMT</pubDate><guid>http://www.blogjava.net/Aisce/articles/173254.html</guid><wfw:comment>http://www.blogjava.net/Aisce/comments/173254.html</wfw:comment><comments>http://www.blogjava.net/Aisce/articles/173254.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Aisce/comments/commentRss/173254.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Aisce/services/trackbacks/173254.html</trackback:ping><description><![CDATA[
		<h2>linux（FC4）下SVN完全配置升级手册（经典）</h2>
		<div class="t_msgfont" id="postmessage_2927">这是我这几天升级SVN以到呕吐地部的经验之作。希望能为大家作点贡献。费话不多说开始，<br /><br />工具包<br />httpd-2.2.3<br />下载地址<br /><a href="http://apache.justdn.org/httpd/" target="_blank">http://<span class="t_tag" onclick="tagshow(event)" href="tag.php?name=apache">apache</span>.justdn.org/httpd/</a><br />apr-1.2.7<br />apr-util-1.2.7<br />下载地址<br /><a href="http://apache.justdn.org/apr/" target="_blank">http://apache.justdn.org/apr/</a><br />Oracle Berkeley DB 4.3.29 （一定要这个版本。高版本apr不支持）<br />下载地址<br /><a href="http://www.oracle.com/technology/software/products/berkeley-db/db/index.html" target="_blank">http://www.oracle.com/technology ... ey-db/db/index.html</a><br />SVN<br />下载地址<br /><a href="http://www.iusesvn.com/bbs/download/subversion-1.4.0.tar.gz" target="_blank">http://www.iuse<span class="t_tag" onclick="tagshow(event)" href="tag.php?name=svn">svn</span>.com/bbs/download/<span class="t_tag" onclick="tagshow(event)" href="tag.php?name=subversion">subversion</span>-1.4.0.tar.gz</a><br />开始安装<br /><br />＊＊＊＊＊＊＊＊＊这里的部骤和以前的有所改变请注意一下＊＊＊＊＊＊＊＊＊＊<br /><br /><br />首先安装Berkeley DB 4.3.29<br />tar zxvf db-4.3.29.tar.gz<br />cd db-4.3.29/build_unix<br />../dist/configure --prefix=/usr/local/db-4.3.29 --enable-compat185 <br />make<br />make install<br /><br />安装apr,apr-util<br />tar zxvf apr-1.2.7.tar.gz<br />cd apr-1.2.7<br />./configure --prefix=/usr/local/apr<br />make<br />make install<br /><br /><br />tar zxvf apr-util-1.2.7.tar.gz<br />cd apr-1.2.7<br />./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr --with-berkeley-db=/usr/local/db-4.3.29/        //＊＊＊＊这里是以前没有注意到的地方<br />make<br />make install<br /><br />安装apache<br />tar zxvf httpd-2.2.3.tar.gz<br />cd httpd-2.2.3<br />./configure --prefix=/opt/apache-2.2.3 --enable-so --enable-rewrite=share --enable-proxy=share --enable-proxy-ajp=share --enable-dav=share --enable-dav-fs --with-apr=/usr/local/apr/ --with-apr-util=/usr/local/apr-util/<br />make<br />make install<br />#apache2.2以后不用再jk2 ,用mod_proxy_ajp模块即可<br /><br /><br /><br />安装SVN<br />tar zxvf subversion-1.4.0.tar.gz<br />cd subversion-1.4.0<br />./configure --prefix=/opt/subverion --with-apxs=/opt/apache-2.2.3/bin/apxs --with-berkeley-db=/usr/local/db-4.3.29/ --with-<span class="t_tag" onclick="tagshow(event)" href="tag.php?name=ssl">ssl</span><br />make<br />make install<br /><br />×××××××××××××安装完成×××××××××××××<br />如果在安装过程当中出现问题可以参考后面网址中的内容。<br />其中有一些包之间的兼容性问题，在这里就不多说，后面有一些网址上面有些说明自己可以看看。<br /><br />配置<br /><br />/创建库文件所在的目录 <br /># mkdir /home/svnroot/repository<br />//进入subversion的bin目录<br /># cd /usr/local/subversion/bin<br />//创建仓库"test"<br /># ./svnadmin create /home/svnroot/repository/test<br /># cd /home/svnroot/repository/test<br />//看看是不是多了些文件，如果是则说明Subversion安装成功了<br /># ls –l<br /># cd /opt/subverion/bin<br />//这条语句将把路径/home/user/<span class="t_tag" onclick="tagshow(event)" href="tag.php?name=import">import</span>下找到的文件导入到你创建的Subversion 仓库中去，<br />//提交后的修订版为1。<br /># ./svn import /home/user/import file:///home/svnroot/repository/test –m "注释"<br />//不让其他人有该目录的<span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%E6%9D%83%E9%99%90">权限</span>    这里的用户名可以自己定<br /><br /># chown -R username:usergroup /home/svnroot/repository  //****这里也有所改变  <br /><br />#后面有如何添加用户的命令<br /><br />#  修改版本库配置文件:<br />版本库1：<br />vi /opt/svndata/repos1/conf/svnserve.conf<br /><br />内容修改为:<br />[general]<br />anon-access = none<br />auth-access = write<br />password-db = /home/svnroot/repository/authfile<br />authz-db = /home/svnroot/repository/authz.conf<br />realm = test<br /><br />修改Apache配置文件<br /># cd /opt/apache-2.2.3/bin<br />//启动Apache<br /># ./apachect1 start<br /># vi /opt/apache-2.2.3/conf/httpd.conf<br />   //在最下面添加<br />   LoadModule dav_svn_module modules/mod_dav_svn.so<br />   LoadModule authz_svn_module modules/mod_authz_svn.so<br />   &lt;Location /svn&gt;<br />   DAV svn<br />   SVNParentPath /home/svnroot/repository/ //svn父目录<br />   AuthzSVNAccessFile /home/svnroot/repository/authz.conf //权限配置文件<br />   AuthType Basic //连接类型设置<br />   AuthName "Subversion.zoneyump" //连接框提示<br />   AuthUserFile /home/svnroot/repository/authfile //用户配置文件<br />   Require valid-user //采用何种认证<br />   &lt;/Location&gt;<br />   //其中authfile是通过<br />  htpasswd -b -c /home/svnroot/repository/authfile username password<br />   //来创建的<br />   //"Require valid-user"告诉apache在authfile中所有的用户都可以访问。如果没有它，<br />   //则只能第一个用户可以访问新建库<br /><br />重启apache<br />cd /opt/apache-2.2.3/bin/<br />./apachectl restart<br />//打开浏览器访问<a href="http://localhost/svn/test/" target="_blank">http://localhost/svn/test/</a>，如果有东西显示就说明成功。<br /><br />这里的权限和用户可以自己去定义<br /><br />7.权限管理<br />1)增加用户<br /><br /># htpasswd /home/svnroot/repository/authfile wooin<br />//第一次设置用户时使用-c表示新建一个用户文件。回车后输入用户密码，完成对用户的增加<br /># htpasswd authfile 用户名(加入新的用户)<br /><br />2)权限分配<br /><br />配置用户访问权限:<br />vi /home/svnroot/repository/authz.conf<br /><br />　　为了简化配置，3个版本库共用1个权限配置文件/home/svnroot/repository/pwd.conf。如有必要，也可以分开。文件中定义用户组和版本库目录权限。<br /><br />注意：<br />* 权限配置文件中出现的用户名必须已在用户配置文件中定义。<br />* 对权限配置文件的修改立即生效，不必重启svn。<br /><br />用户组格式：<br />[groups]<br />&lt;用户组名&gt; = &lt;用户1&gt;,&lt;用户2&gt;<br />其中，1个用户组可以包含1个或多个用户，用户间以逗号分隔。<br /><br />版本库目录格式：<br />[&lt;版本库&gt;:/项目/目录]<br />@&lt;用户组名&gt; = &lt;权限&gt;<br />&lt;用户名&gt; = &lt;权限&gt;<br /><br />　　其中，方框号内部分可以有多种写法:<br />/,表示根目录及以下。根目录是svnserve启动时指定的，我们指定为/home/svnroot/repository。这样，/就是表示对全部版本库设置权限。<br />test:/,表示对版本库test设置权限<br /><br />权限主体可以是用户组、用户或*，用户组在前面加@，*表示全部用户。权限可以是w、r、wr和空，空表示没有任何权限。<br /><br />示例：<br />[groups]<br />admin = mangosoft<br /><br />[/]<br />@admin = rw<br /><br />[test:/]<br />@admin = rw<br />lsw = rw<br /><br />删除无用文件:<br />rm /home/svnroot/repository/test/conf/authz<br />rm /home/svnroot/repository/test/conf/passwd<br /><br />3. 启动svn<br />建立启动svn的用户:<br />useradd svnroot<br />passwd svnroot<br />根据提示为用户svnroot设置密码<br /><br />允许用户svn访问版本库:<br />chown –R svnroot:daemon /home/svnroot/repository<br /><br /><br />启动svn：<br />su -c "svnserve -d --listen-port 9999 -r /opt/svndata" svnroot<br /><br />其中：<br />su – svn表示以用户svn的身份启动svn<br />-d表示以daemon方式（后台运行）运行<br />--listen-port 9999表示使用9999端口，可以换成你需要的端口。但注意，使用1024以下的端口需要root权限<br />-r /opt/svndata指定根目录是/opt/svndata<br /><br />检查:<br />ps -ef|grep svnserve<br /><br />如果显示如下，即为启动成功：<br />svn　　　 6941　　 1　0 15:07 ?　　　　00:00:00 svnserve -d --listen-port 9999 -r /opt/svndata<br /><br /><br />将这个设置完成后。重启Apache，就可以通过<br /><a href="http://localhost/svn/test" target="_blank">http://localhost/svn/test</a><br />这个URL来访问仓库了，当然，受权限的限制，必须是合法用户才能访问且具有相应的权限<br /><br /><br /><br /><br />备注：<br /><br />1。 apache进程的权限：因为所有跟仓库传输的操作都是通过apache进程进行的，所以即使你给svn用户设置了很大的权限，但是apache进程没有访问仓库或者相关文件的权限也没有用，apache进程的权限设置在 /opt/apache-2.2.3/conf/httpd.conf 文件中配置，找到文件中的这两行：<br />User daemon # 将daemon改为svnroot，<br />Group daemon<br /><br />2。<br /><br />在/etc/profile的结尾设置一些svn启动时要做的工作<br /># start apache server for svn<br />/opt/apache-2.2.3/bin/apachectl start<br />export SVN_EDITOR=vi<br /><br />3。/home/svnroot/respository下的文件操作权限有给svnroot.<br /><br /><br /><br />相关网址<br /><br /><a href="http://www.newbooks.com.cn/info/52691.html" target="_blank">http://www.newbooks.com.cn/info/52691.html</a><br /><a href="http://www.neo.com.tw/archives/000614.html" target="_blank">http://www.neo.com.tw/archives/000614.html</a><br /><a href="http://www.goodspeed.com.cn/apache.html" target="_blank">http://www.goodspeed.com.cn/apache.html</a><br /><a href="http://blog.java-cn.com/user1/5463/archives/2005/15238.html" target="_blank">http://blog.java-cn.com/user1/5463/archives/2005/15238.html</a><br /><a href="http://www.zhangjianfeng.com/?p=481" target="_blank">http://www.zhangjianfeng.com/?p=481</a><br /><a href="http://blog.yening.cn/2006/08/07/165.html" target="_blank">http://blog.yening.cn/2006/08/07/165.html</a><br /><a href="http://www.zeali.net/entry/359" target="_blank">http://www.zeali.net/entry/359</a><br /><a href="http://www.iusesvn.com/bbs/thread-489-1-1.html" target="_blank">http://www.iusesvn.com/bbs/thread-489-1-1.html</a></div>
<img src ="http://www.blogjava.net/Aisce/aggbug/173254.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Aisce/" target="_blank">Aisce</a> 2008-01-07 10:19 <a href="http://www.blogjava.net/Aisce/articles/173254.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java Web项目开发需掌握技术</title><link>http://www.blogjava.net/Aisce/articles/161923.html</link><dc:creator>Aisce</dc:creator><author>Aisce</author><pubDate>Tue, 20 Nov 2007 11:26:00 GMT</pubDate><guid>http://www.blogjava.net/Aisce/articles/161923.html</guid><wfw:comment>http://www.blogjava.net/Aisce/comments/161923.html</wfw:comment><comments>http://www.blogjava.net/Aisce/articles/161923.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Aisce/comments/commentRss/161923.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Aisce/services/trackbacks/161923.html</trackback:ping><description><![CDATA[目前， 国内外信息化建设已经进入基于Web应用为核心的阶段， Java作为应用于网络的最好语言，前景无限看好。然而，就算用Java建造一个不是很烦琐的web应用，也不是件轻松的事情。概括一下，实施Java的WEB项目需要掌握的技术如下： <br /><br /><div><span></span> </div><div style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt"><span style="COLOR: black">l</span><span style="COLOR: black">Java</span><span style="COLOR: black">语言</span></div><div style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt"><span style="COLOR: black">l</span><span style="COLOR: black">面向对象分析设计思想</span></div><div style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt"><span style="COLOR: black">l</span><span style="COLOR: black">设计模式和框架结构</span></div><div style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt"><span style="COLOR: black">l</span><span style="COLOR: black">XML</span><span style="COLOR: black">语言</span></div><div style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt"><span style="COLOR: black">l</span><span style="COLOR: black">网页脚本语言</span></div><div style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt"><span style="COLOR: black">l</span><span style="COLOR: black">数据库</span></div><div style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt"><span style="COLOR: black">l</span><span style="COLOR: black">应用服务器</span></div><div style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt"><span style="COLOR: black">l</span><span style="COLOR: black">集成开发环境</span></div><div> </div><div><span style="COLOR: black">下面我们具体地看每个技术.<br /></span></div><div><font size="2"><strong>1、Java</strong><strong>语言</strong></font></div><div><span style="COLOR: black"><br />Java</span><span style="COLOR: black">语言体系比较庞大，包括多个模块。从WEB项目应用角度讲有JSP、Servlet、JDBC、JavaBean(Application)四部分技术。</span></div><div> </div><div style="MARGIN-LEFT: 36pt; TEXT-INDENT: -36pt"><strong><span style="COLOR: black">（1）、</span>Java Database Connectivity</strong><strong><span style="COLOR: black"> (JDBC)</span></strong><strong><span style="COLOR: black">技术</span></strong></div><div>在<span>Java Web应用开发中，数据库管理系统（RDBMS）的使用是不可缺少的。</span>JDBC(Java Database Connectivity) 是一种用于执行<span> SQL 语句的 Java API。它由一组用 Java 编程语言编写的类和接口组成。JDBC 为工具/数据库开发人员提供了一个标准的API，使他们能够用纯Java API 来编写数据库应用程序。</span></div><div>简单地说，<span>JDBC 可做三件事：</span></div><div style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt"><span>l</span>与数据库建立连接，</div><div style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt"><span>l</span>发送<span> SQL 语句，</span></div><div style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt"><span>l</span>处理结果。</div><div> </div><div><strong><span style="COLOR: black"> <span style="COLOR: black">（2）、</span>Servlet</span></strong><strong><span style="COLOR: black">技术</span></strong></div><div><span style="COLOR: black">Servlet</span><span style="COLOR: black">是运行在服务器端的程序，</span>可以被认为是服务器端的<span>applet。servlet被Web服务器（例如Tomcat）加载和执行，就如同applet被浏览器加载和执行一样。servlet从客户端(通过Web服务器)接收请求，执行某种操作，然后返回结果。</span></div><div> </div><div>Servlet的主要优点包括</div><div style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt"><span>l</span>Servlet是持久的。<span>servlet只需Web服务器加载一次，而且可以在不同请求之间保持服务(例如一次数据库连接)。</span></div><div style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt"><span style="COLOR: black">l</span>Servlet是与平台无关的。如前所述，<span>servlet是用Java编写的，它自然也继承了Java的平台无关性。</span></div><div style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt"><span style="COLOR: black">l</span>Servlet是可扩展的。由于<span>servlet是用Java编写的，它就具备了Java所能带来的所有优点。Java是健壮的、面向对象的编程语言，它很容易扩展以适应你的需求。servlet自然也具备了这些特征。</span></div><div style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt"><span style="COLOR: black">l</span>Servlet是安全的。从外界调用一个<span>servlet的惟一方法就是通过Web服务器。这提供了高水平的安全性保障，尤其是在你的Web服务器有防火墙保护的时候。</span></div><div style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt"><span style="COLOR: black">l</span>Servlet可以在多种多样的客户机上使用。由于<span>servlet是用Java编写的，所以你可以很方便地在HTML中使用它们。</span></div><div> </div><div><strong><span style="COLOR: black"><span style="COLOR: black">（3）、</span>JavaServer Pages(JSP) </span></strong><strong><span style="COLOR: black">技术</span></strong></div><div><span style="COLOR: black">JSP</span><span style="COLOR: black">是从Servlet上分离出来的一小部分，简化了开发，加强了界面设计。JSP定位在交互网页的开发。运用Java语法，但功能较Servlet弱了很多，并且高级开发中只充当用户界面部分。</span>JSP容器收到客户端发出的请求时，首先执行其中的程序片段，然后将执行结果以<span>HTML格式响应给客户端。其中程序片段可以是：操作数据库、重新定向网页以及发送 E-Mail 等等，这些都是建立动态网站所需要的功能。所有程序操作都在服务器端执行，网络上传送给客户端的仅是得到的结果，与客户端的浏览器无关，因此，JSP 称为Server-Side Language。</span></div><div> </div><div>JavaServer Pages的主要优点包括</div><div>●一次编写，各处执行<span>(Write o­nce, Run Anywhere)特性</span></div><div>作为<span>Java 平台的一部分，JavaServer Pages 技术拥有Java语言“一次编写，各处执行”的特点。随着越来越多的供货商将JavaServer Pages 技术添加到他们的产品中，您可以针对自己公司的需求，做出审慎评估后，选择符合公司成本及规模的服务器，假若未来的需求有所变更时，更换服务器平台并不影响之前所投下的成本、人力所开发的应用程序。</span></div><div>● 搭配可重复使用的组件</div><div>JavaServer Pages技术可依赖于重复使用跨平台的组件（如：<span>JavaBean或Enterprise JavaBean组件）来执行更复杂的运算、数据处理。开发人员能够共享开发完成的组件，或者能够加强这些组件的功能，让更多用户或是客户团体使用。基于善加利用组件的方法，可以加快整体开发过程，也大大降低公司的开发成本和人力。</span></div><div>● 采用标签化页面开发</div><div>Web 网页开发人员不一定都是熟悉<span>Java 语言的程序员。因此，JSP 技术能够将许多功能封装起来，成为一个自定义的标签，这些功能是完全根据XML 的标准来制订的，即JSP 技术中的标签库(Tag Library)。因此，Web 页面开发人员可以运用自定义好的标签来达成工作需求，而无须再写复杂的Java 语法，让Web 页面开发人员亦能快速开发出一动态内容网页。</span></div><div>今后，第三方开发人员和其他人员可以为常用功能建立自己的标签库，让<span>Web 网页开发人员能够使用熟悉的开发工具，如同HTML 一样的标签语法来执行特定功能的工作。</span></div><div>●<span> N-tier 企业应用架构的支持</span></div><div>有鉴于网际网络的发展，为因应未来服务越来越繁杂的要求，且不再受地域的限制，因此，</div><div>必须放弃以往<span>Client-Server的Two-tier 架构，进而转向更具威力、弹性的分散性对象系统。由于JavaServer Page 技术是Java 2 Platform Enterprise Edition (J2EE)集成中的一部分，它主要是负责前端显示经过复杂运算后之结果内容，而分散性的对象系统则是主要依赖EJB ( Enterprise JavaBean )和JNDI ( Java Naming and Directory Interface )构建而成。</span></div><div><span style="COLOR: black"><br /><strong><span style="COLOR: black">（4）、</span>JavaBean(Application)</strong></span><strong><span style="COLOR: black">应用组件技术</span></strong><span style="COLOR: black"><br />Application</span><span style="COLOR: black">是Java应用程序，在WEB项目和一些开发中主要应用JavaBean。它就是Application的一部分，逻辑运算能力很强，能极大的发挥Java语言的优点。</span>JavaBean 被称为是<span>Java 组件技术的核心。JavaBean 的结构必须满足一定的命名约定。JavaBean能提供常用功能并且可以重复使用，这使得开发人员可以把某些关键功能和核心算法提取出来封装成为一个组件对象，这样就增加了代码的重用率和系统的安全性。</span><span style="COLOR: black"><br /><br /></span><span style="COLOR: black">高级的WEB项目会应用到以上所有技术，它们之间联合使用和协作开发会提高开发的效率和系统的性能。 <br /><br /></span><font size="2"><strong>2、</strong><strong>面向对象分析设计思想</strong></font><span style="COLOR: black"><br /><br />Java</span><span style="COLOR: black">语言是完全面向对象的语言，所以在项目设计时会有很大的帮助，在设计时应尽量舍弃以往的面向过程的设计方式。 <br /><br />在分析项目业务关系的时候，应用一些UML(Unified Modeling Language)图,例如常用的用例图(use case diagram)，类图(class diagram)，时序图(sequence diagram)等等,会有很大的帮助，这样能尽快找出业务逻辑主要面对的对象，然后对每个对象进行行为划分，最后再实现对象之间的集成和通信。</span></div><div><span style="COLOR: black"><br /></span><font size="2"><strong>3、设计模式和框架</strong><strong><span style="COLOR: black">结构<br /></span></strong></font></div><div><span style="COLOR: black">Java</span><span style="COLOR: black">从语言角度来讲不是很难，但是从整体设计角度来讲我们还需要了解一些高级应用框架。如果要设计一个良好的框架结构，单单只掌握Java语言远远不够。这就涉及到一个设计模式，还有和设计模式相关的一些知识。 <br /><br />设计模式在Java项目实施过程更是重中之重。主要在与两层的设计模式、三层的设计模式和Ｎ层的设计模式。它直接决定着项目的应用、部署和实际开发设计。 <br /><br />在普通的WEB项目中很多采用两层的开发结构。JSP+Servlet或JSP+JavaBean。当对开发要求高的项目中使用很多的还是MVC的三层开发结构，也就是JSP+Servlet+JavaBean。它能分有效的分离逻辑开发，使开发人员能专注于各自的开发。同时也能时整个开发结构流程更清晰，但是需要比较高的开发配合度。 <br />在项目中，我们经常使用著名的Model-View-Controller(MVC)架构。</span>MVC架构是随着<span>smalltalk language语言的发展提出的，它是一个著名的用户界面设计架构。经典的MVC架构把一个组件（可认为是整个应用程序的一个模块）划分成三部分组 Model管理这个模块中所用到的数据和业务逻辑。而View 管理模块如何显示给用户，Controller 决定如何处理用户和该模块交互式时候产生的事件 如用户点击一个按钮等。 <br /></span><strong><br /><font size="2">4、XML</font></strong><strong><font size="2">语言</font></strong><span style="COLOR: black"><br /><br /></span><span style="COLOR: black">在服务器和设计模式结构中会应用到自定义文件，而且在应用高级设计时也会定义自用的标签，现在流行的是用XML去定义配置，所以XML语言应该有一定掌握。</span></div><div><span style="LETTER-SPACING: 0pt">当前，<span>Java 2平台企业版（J2EE）架构在厂商市场和开发者社区中倍受推崇。作为一种工具，可扩展标记语言（XML）简化了数据交换、进程间消息交换这一类的事情，因而对开发者逐渐变得有吸引力，并开始流行起来。自然，在J2EE架构中访问或集成XML解决方案的想法也很诱人。因为这将是强大系统架构同高度灵活的数据管理方案的结合。</span></span><br /><br /><span><span style="LETTER-SPACING: 0pt">XML</span></span><span style="LETTER-SPACING: 0pt">的应用似乎是无穷无尽的，但它们大致上可以分为三大类：</span><br /><span><span style="LETTER-SPACING: 0pt">1</span></span><span style="LETTER-SPACING: 0pt">、简单数据的表示和交换（针对<span>XML的简单API（SAX）和文档对象模型（DOM）语法解析，不同的文档类型定义（DTDs）和概要（schemas））</span></span><br /><span><span style="LETTER-SPACING: 0pt">2</span></span><span style="LETTER-SPACING: 0pt">、用户界面相关、表示相关的上下文（可扩展样式表语言（<span>XSL），可扩展样式表语言转换（XSLT））</span></span><br /><span><span style="LETTER-SPACING: 0pt">3</span></span><span style="LETTER-SPACING: 0pt">、面向消息的计算（<span>XML-RPC（远程过程调用），基于SOAP协议的Web 服务（Web Services），电子化业务XML（ebXML））</span></span><br /><span style="COLOR: black"><br /></span><strong><font size="2">5、网页脚本语言</font></strong><span style="COLOR: black"><br /> <br /></span><span style="COLOR: black">为了提高WEB项目的整体性能，提高人机交互的友好界面，网页的脚本语言是很有用处的，有的时候可以解决很大的难题或提高程序的性能和应用性。 <br /><br />网页脚本语言的执行都是在客户端执行的，速度很很快，并且大多的操作与服务器没有交互运算，所以在一些应用中非常理想。在设计WEB项目的应用中，网页的脚本语言起着不能忽视的作用，所以如果设计WEB项目的应用中，对JavaScript应有一定的了解。</span></div><div> </div><div>JavaScript是一种基于对象<span>(Object Based)和事件驱动(Event Driven)并具有安全性能（Secure）的脚本语言。使用它的目的是与HTML超文本标记语言、Java 脚本语言（Java小程序）一起实现在一个Web页面中链接多个对象，与Web客户交互作用。从而可以开发客户端的应用程序等。它是通过嵌入或调入在标准的HTML语言中实现的。它具有以下几个基本特点：</span></div><div style="MARGIN-LEFT: 23.25pt; TEXT-INDENT: -18pt"><span>1.</span>它是一种脚本编写语言<span><br />JavaScript是一种脚本语言，它采用小程序段的方式实现编程。像其它脚本语言一样,JavaScript同样已是一种解释性语言,它提供了一个易的开发过程。 <br />它的基本结构形式与C、C++、VB十分类似。但它不像这些语言一样，需要先编译，而是在程序运行过程中被逐行地解释。它与HTML标识结合在一起，从而方便用户的使用操作。 </span></div><div style="MARGIN-LEFT: 23.25pt; TEXT-INDENT: -18pt"><span>2.</span> 基于对象的语言。<span><br /> JavaScript是一种基于对象的语言，同时以可以看作一种面向对象的。这意味着它能运用自己已经创建的对象。因此，许多功能可以来自于脚本环境中对象的方法与脚本的相互作用。 </span></div><div style="MARGIN-LEFT: 23.25pt; TEXT-INDENT: -18pt"><span>3.</span>简单性<span><br /> JavaScript的简单性主要体现在：首先它是一种基于Java基本语句和控制流之上的简单而紧凑的设计, 从而对于学习Java是一种非常好的过渡。其次它的变量类型是采用弱类型，并未使用严格的数据类型。 </span></div><div style="MARGIN-LEFT: 23.25pt; TEXT-INDENT: -18pt"><span>4.</span>安全性<span><br /> JavaScript是一种安全性语言，它不允许访问本地的硬盘，并不能将数据存入到服务器上，不允许对网络文档进行修改和删除，只能通过浏览器实现信息浏览或动态交互。从而有效地防止数据的丢失。 </span></div><div style="MARGIN-LEFT: 5.25pt">5. 动态性<span><br /> JavaScript是动态的，它可以直接对用户或客户输入做出响应，无须经过Web服务程序。它对用户的响应，是采用以事件驱动的方式进行的。所谓事件驱动，就是指在主页(Home Page)中执行了某种操作所产生的动作，就称为“事件”(Event)。比如按下鼠标、移动窗口、选择菜单等都可以视为事件。当事件发生后，可能会引起相应的事件响应。 <br /><br /></span></div><div style="TEXT-JUSTIFY: inter-ideograph; MARGIN-LEFT: 0cm; TEXT-ALIGN: justify"><strong><span style="FONT-SIZE: 10.5pt"><font size="2">6、开发工具</font></span></strong></div><div style="TEXT-JUSTIFY: inter-ideograph; MARGIN-LEFT: 0cm; TEXT-ALIGN: justify"><strong><span style="FONT-SIZE: 10.5pt"><font size="2"></font></span></strong></div><div><strong><span style="COLOR: black">（1）、数据库 </span></strong></div><div><span style="COLOR: black">在主要的应用中，数据库相关的环节应用很多，所以对数据库应该有一定了解。不能单单只了解一种数据库，因为在很多实际开发中会提出很多数据库解决方案，所以只有在了解多种数据库的情况下才能有一个比较方案。</span></div><div><span style="COLOR: black">对于数据库应该了解他的性能和一些基本的操作常识，还有该数据库的特点。而针对与Java语言WEB项目的数据库开发则主要是对JDBC的应用，还有数据库事务处理和连接池等高级概念的应用。<br /><br /></span></div><div><strong><span style="COLOR: black"><span style="COLOR: black">（2）、</span>Web</span></strong><strong><span style="COLOR: black">服务器</span></strong></div><div> </div><div><span style="COLOR: black">同数据库一样，应该了解该服务器的性能，特点和一些常识。</span></div><div><span style="COLOR: black">在应用方面，Web服务器主要是针对于配置和部署，对目录的配置，调试；对配置文件属性的修改；对访问权限和并发性的控制；Java类的部署等。</span></div><div><strong><span style="COLOR: black"><br /><span style="COLOR: black">（3）、</span>集成开发环境（IDE）：</span></strong></div><div><span style="COLOR: black">“</span><span style="COLOR: black">公欲善其事， 必先利其器”. 对于Web应用开发人员来讲，好的集成开发环境（IDE：Integrated Development Enviroment）是非常重要的。目前在市场上占主导位置的一个集成开发工具就是Eclipse. </span></div><img src ="http://www.blogjava.net/Aisce/aggbug/161923.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Aisce/" target="_blank">Aisce</a> 2007-11-20 19:26 <a href="http://www.blogjava.net/Aisce/articles/161923.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>spring配置文件详解</title><link>http://www.blogjava.net/Aisce/articles/160650.html</link><dc:creator>Aisce</dc:creator><author>Aisce</author><pubDate>Wed, 14 Nov 2007 15:47:00 GMT</pubDate><guid>http://www.blogjava.net/Aisce/articles/160650.html</guid><wfw:comment>http://www.blogjava.net/Aisce/comments/160650.html</wfw:comment><comments>http://www.blogjava.net/Aisce/articles/160650.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Aisce/comments/commentRss/160650.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Aisce/services/trackbacks/160650.html</trackback:ping><description><![CDATA[
		<div class="ad">
				<script type="text/javascript">
						<!--
google_ad_client = "pub-3178351830176495";
google_ad_width = 336;
google_ad_height = 280;
google_ad_format = "336x280_as";
google_ad_type = "text_image";
//2007-11-10: kudee
google_ad_channel = "7733316921";
google_color_border = "F9FCFE";
google_color_bg = "F9FCFE";
google_color_link = "1F3A87";
google_color_text = "525253";
google_color_url = "525253";
//-->
				</script>
				<script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript">
				</script>
				<iframe name="google_ads_frame" marginwidth="0" marginheight="0" src="http://pagead2.googlesyndication.com/pagead/ads?client=ca-pub-3178351830176495&amp;dt=1195055192296&amp;lmt=1194703233&amp;format=336x280_as&amp;output=html&amp;correlator=1195055192296&amp;channel=7733316921&amp;url=http%3A%2F%2Fwww.kudee.cn%2Fhtml%2FDevelop%2FSpring%2F20070916%2F2237.html&amp;color_bg=F9FCFE&amp;color_text=525253&amp;color_link=1F3A87&amp;color_url=525253&amp;color_border=F9FCFE&amp;ad_type=text_image&amp;ref=http%3A%2F%2Fwww.kudee.cn%2Fhtml%2FDevelop%2FSpring%2F20070916%2F2238.html&amp;cc=100&amp;ga_vid=1740814352.1195055192&amp;ga_sid=1195055192&amp;ga_hid=864633806&amp;flash=9&amp;u_h=768&amp;u_w=1024&amp;u_ah=738&amp;u_aw=1024&amp;u_cd=32&amp;u_tz=480&amp;u_his=6&amp;u_java=true" frameborder="0" width="336" scrolling="no" height="280" allowtransparency="">
				</iframe>
		</div>
		<style><![CDATA[.Kgd244 { display:none; } ]]&gt;</style>
Spring有四种Bean封装机制：Bean Wrapper机制、Bean Factory机制、ApplicationContext机制、Web Context机制等，它们所对应配置文件的内容也是不同的。下面，我们就以基于Bean Factory机制实现的Spring的三种依赖注入模式为例，介绍一下Spring配置文件的基本内容。<br />     1、接口注入，示例代码如下：<br />public interface InterfaceB{<br />public Object doIt();<br />} 
<div>public class ClassC implements InterfaceB{<br />String str1;<br />public ClassC(String str1){<br />This. str1= str1;<br />}<br />public Object doIt(){<br />return "Hello,"+ strl+"!";<br />}<br />}</div><div>public class ClassA {<br />private InterfaceB clzB;<br />public Object doSomething(InterfaceB b) {<br />clzB = b;<br />return clzB.doIt();<br />}<br />………<br />}<br />该情况下的Spring配置文件：bean.xml的内容大致如下：<br />&lt;beans&gt;<br />&lt;description&gt;Interface Injection Sample&lt;/description&gt;<br />&lt;bean id="ClassC" <strong>&lt;!--ClassC类的别名 --&gt;</strong><br />class="net.liyb.spring.qs.ClassC"&gt; <strong>&lt;!--ClassC类的别名所对应的类 --&gt;</strong><font color="#ffffff">字串3</font><br />&lt;property name="str1"&gt; <strong>&lt;!-- 该属性名对应ClassC类的属性（名称一致） --&gt;</strong><br />&lt;value&gt;liyb&lt;/value&gt; <strong>&lt;!-- 该属性值将被绑定到ClassC类的对应属性（str1）上 --&gt;</strong><br />&lt;/property&gt;<br />&lt;/bean&gt;</div><div>&lt;bean id="ClassA" <strong>&lt;!-- ClassA类的别名 --&gt;</strong><br />class="net.liyb.spring.qs.ClassA"&gt; <strong>&lt;!--ClassA类的别名所对应的类 --&gt;</strong><br />&lt;property name="clzB"&gt; <strong>&lt;!-- 该属性名对应ClassA类的属性（名称一致） --&gt;</strong><br />&lt;ref local="ClassC"/&gt; <strong>&lt;!-- 该属性值将被绑定到ClassA类的对应属性（clzB）上，此处的属性值即"别名"为ClassC所对应的类的实例 --&gt;</strong><br />&lt;/property&gt;<br />&lt;/bean&gt;<br />&lt;/beans&gt;<br />     2、设值注入，示例代码如下：<br />public class DIByConstructor {<br />private final DataSource dataSource;<br />private final String message;<br />……… 
<div class="Kgd244">字串8</div><br />public setDataSource(DataSource ds) {<br />this.dataSource = ds;<br />}<br />public setmessage(String msg) {<br />this.message = msg;<br />}<br />public getDataSource() {<br />return this.dataSource;<br />}<br />public getmessage() {<br />return this.message;<br />}<br />………<br />}<br />该情况下的Spring配置文件：bean.xml的内容大致如下：<br />&lt;beans&gt;<br />&lt;description&gt;Values Injection Sample&lt;/description&gt;<br />&lt;bean id="dataSource" <strong>&lt;!-- JndiObjectFactoryBean类的别名 --&gt;</strong><br />class="org.springframework.jndi.JndiObjectFactoryBean"&gt; <strong>&lt;!-- JndiObjectFactoryBean类的别名所对应的类 --&gt;</strong><br />&lt;property name="jndiName"&gt; <strong>&lt;!-- 该属性名对应JndiObjectFactoryBean类的属性（名称一致） --&gt;</strong><br />&lt;value&gt;java:comp/env/jdbc/sample&lt;/value&gt; <strong>&lt;!-- 该属性值将被绑定到JndiObjectFactoryBean类的对应属性（jndiName）上 --&gt;</strong><br />&lt;/property&gt;<br />&lt;/bean&gt;</div><div>&lt;bean id="DIByConstructor" <strong>&lt;!--DIByConstructor类的别名 --&gt;</strong><p class="Kgd244">字串8</p><br />class="net.liyb.spring.qs.DIByConstructor"&gt; <strong>&lt;!--DIByConstructor类的别名所对应的类 --&gt;</strong><br />&lt;property name="message"&gt; <strong>&lt;!-- 该属性名对应DIByConstructor类的属性（名称一致） --&gt;</strong><br />&lt;value&gt;HeLLo&lt;/value&gt; <strong>&lt;!-- 该属性值将被绑定到DIByConstructor类的对应属性（message）上--&gt;</strong><br />&lt;/property&gt;<br />&lt;/bean&gt;</div><div>&lt;bean id="DIByConstructor" <strong>&lt;!--DIByConstructor类的别名 --&gt;</strong><br />class="net.liyb.spring.qs.DIByConstructor"&gt; <strong>&lt;!--DIByConstructor类的别名所对应的类 --&gt;</strong><br />&lt;property name="dataSource"&gt; <strong>&lt;!-- 该属性名对应DIByConstructor类的属性（名称一致） --&gt;</strong><br />&lt;ref local="dataSource"/&gt; <strong>&lt;!-- 该属性值将被绑定到DIByConstructor类的对应属性（dataSource）上，此处的属性值即"别名"为dataSource所对应的类的实例--&gt;</strong><br />&lt;/property&gt;<br />&lt;/bean&gt;</div><div>&lt;/beans&gt; <span class="Kgd244">字串4</span><br />     3、构造子注入，示例代码见日志："Spring核心技术学习总结"中的1.2.3节。此时对应的配置文件同"2、设值注入"中的配置文件是一样的，所以具体内容在此省略。</div><img src ="http://www.blogjava.net/Aisce/aggbug/160650.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Aisce/" target="_blank">Aisce</a> 2007-11-14 23:47 <a href="http://www.blogjava.net/Aisce/articles/160650.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Hibernate基本配置文件学习笔记</title><link>http://www.blogjava.net/Aisce/articles/160649.html</link><dc:creator>Aisce</dc:creator><author>Aisce</author><pubDate>Wed, 14 Nov 2007 15:46:00 GMT</pubDate><guid>http://www.blogjava.net/Aisce/articles/160649.html</guid><wfw:comment>http://www.blogjava.net/Aisce/comments/160649.html</wfw:comment><comments>http://www.blogjava.net/Aisce/articles/160649.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Aisce/comments/commentRss/160649.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Aisce/services/trackbacks/160649.html</trackback:ping><description><![CDATA[
		<div class="ad">Hibernate的基本配置文件有两种：hibernate.cfg.xml和.hbm.xml文件。前者包含了Hibernate与数据库的基本连接信息，在Hibernate工作的初始阶段，这些信息被先后加载到Configuration和SessionFactory实例；后者包含了Hibernate的基本映射信息，即系统中每一个类与其对应的数据库表之间的关联信息，在Hibernate工作的初始阶段，这些信息通过hibernate.cfg.xml的mapping节点被加载到Configuration和SessionFactory实例。这两种文件信息包含了Hibernate的所有运行期参数。下面我们用详细的例子来说明这两种文件的基本结构和内容。 <br /><font size="3">hibernate.cfg.xml文件： <br /></font>     <strong>&lt;!--该文件的开头信息，对Hibernate而言，该类文件基本都这么开头：）--&gt; <br /></strong>     &lt;?xml version='1.0' encoding='UTF-8'?&gt; <br />     &lt;!DOCTYPE hibernate-configuration PUBLIC <br />        "-//Hibernate/Hibernate Configuration DTD 3.0//EN" <br />        "<a href="http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"><font color="#006629">http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd</font></a>"&gt; <font color="#ffffff">字串2</font><br />     <strong>&lt;!-- 正文开始 --&gt; </strong><br />     &lt;hibernate-configuration&gt; <br />     <strong>&lt;!--下面是数据库的基本连接信息，对一个应用来说，设置一个session-factory节点就够了，除非我们中间使用了多个数据库--&gt; </strong><br />     &lt;session-factory&gt; <br />     <strong>&lt;!--用户名 --&gt; </strong><br />     &lt;property name="connection.username"&gt;root&lt;/property&gt; <br />     <strong>&lt;!--url信息 --&gt; </strong><br />     &lt;property name="connection.url"&gt;jdbc:mysql://localhost:3306/webases&lt;/property&gt; <br />     <strong>&lt;!--数据库方言信息--&gt; </strong><br />     &lt;property name="dialect"&gt;org.hibernate.dialect.MySQLDialect&lt;/property&gt; <br />     <strong>&lt;!--密码 --&gt;</strong>  <font color="#ffffff">字串5</font><br />     &lt;property name="connection.password"&gt;274507&lt;/property&gt; <br />     <strong>&lt;!--数据库驱动信息 --&gt; </strong><br />     &lt;property name="connection.driver_class"&gt;com.mysql.jdbc.Driver&lt;/property&gt; <br />     <strong>&lt;!--指定Hibernate映射文件路径 --&gt; </strong><br />     &lt;mapping resource="com/Hibernate/test_products.hbm.xml" /&gt; <br />     &lt;/session-factory&gt; <br />     &lt;/hibernate-configuration&gt; <br /></div>
<img src ="http://www.blogjava.net/Aisce/aggbug/160649.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Aisce/" target="_blank">Aisce</a> 2007-11-14 23:46 <a href="http://www.blogjava.net/Aisce/articles/160649.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Hibernate 工作原理图</title><link>http://www.blogjava.net/Aisce/articles/160648.html</link><dc:creator>Aisce</dc:creator><author>Aisce</author><pubDate>Wed, 14 Nov 2007 15:45:00 GMT</pubDate><guid>http://www.blogjava.net/Aisce/articles/160648.html</guid><wfw:comment>http://www.blogjava.net/Aisce/comments/160648.html</wfw:comment><comments>http://www.blogjava.net/Aisce/articles/160648.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Aisce/comments/commentRss/160648.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Aisce/services/trackbacks/160648.html</trackback:ping><description><![CDATA[
		<div class="ad">
				<br />
				<a href="http://www.kudee.cn/kudee/upimg/userup/0709/161GS0N35.jpg" target="_blank">
						<img height="400" alt="" src="http://www.kudee.cn/kudee/upimg/userup/0709/161GS0N35.jpg" width="576" border="0" />
				</a>
		</div>
<img src ="http://www.blogjava.net/Aisce/aggbug/160648.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Aisce/" target="_blank">Aisce</a> 2007-11-14 23:45 <a href="http://www.blogjava.net/Aisce/articles/160648.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Hibernate中所有包作用详细讲解 </title><link>http://www.blogjava.net/Aisce/articles/152580.html</link><dc:creator>Aisce</dc:creator><author>Aisce</author><pubDate>Sat, 13 Oct 2007 07:36:00 GMT</pubDate><guid>http://www.blogjava.net/Aisce/articles/152580.html</guid><wfw:comment>http://www.blogjava.net/Aisce/comments/152580.html</wfw:comment><comments>http://www.blogjava.net/Aisce/articles/152580.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Aisce/comments/commentRss/152580.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Aisce/services/trackbacks/152580.html</trackback:ping><description><![CDATA[Hibernate一共包括了23个jar包，令人眼花缭乱。本文将详细讲解Hibernate每个jar包的作用，便于你在应用中根据自己的需要进行取舍。 <br /><br />下载Hibernate，例如2.0.3稳定版本，解压缩，可以看到一个hibernate2.jar和lib目录下有22个jar包： <br /><br />hibernate2.jar: <br />Hibernate的库，没有什么可说的，必须使用的jar包 <br /><br />cglib-asm.jar: <br />CGLIB库，Hibernate用它来实现PO字节码的动态生成，非常核心的库，必须使用的jar包 <br /><br /><br />dom4j.jar: <br />dom4j是一个Java的XML API，类似于jdom，用来读写XML文件的。dom4j是一个非常非常优秀的Java XML API，具有性能优异、功能强大和极端易用使用的特点，同时它也是一个开放源代码的软件，可以在SourceForge上找到它。在IBM developerWorks上面可以找到一篇文章，对主流的Java XML API进行的性能、功能和易用性的评测，dom4j无论在那个方面都是非常出色的。我早在将近两年之前就开始使用dom4j，直到现在。如今你可以看到越来越多的Java软件都在使用dom4j来读写XML，特别值得一提的是连Sun的JAXM也在用dom4j。这是必须使用的jar包，Hibernate用它来读写配置文件。 <br /><br />odmg.jar: <br />ODMG是一个ORM的规范，Hibernate实现了ODMG规范，这是一个核心的库，必须使用的jar包。 <br /><br />commons-collections.jar： <br />Apache Commons包中的一个，包含了一些Apache开发的集合类，功能比java.util.*强大。必须使用的jar包。<br /><br />commons-beanutils.jar： <br />Apache Commons包中的一个，包含了一些Bean工具类类。必须使用的jar包。 <br /><br />commons-lang.jar: <br />Apache Commons包中的一个，包含了一些数据类型工具类，是java.lang.*的扩展。必须使用的jar包。 <br /><br />commons-logging.jar: <br />Apache Commons包中的一个，包含了日志功能，必须使用的jar包。这个包本身包含了一个Simple Logger，但是功能很弱。在运行的时候它会先在CLASSPATH找log4j，如果有，就使用log4j，如果没有，就找JDK1.4带的java.util.logging，如果也找不到就用Simple Logger。commons-logging.jar的出现是一个历史的的遗留的遗憾，当初Apache极力游说Sun把log4j加入JDK1.4，然而JDK1.4项目小组已经接近发布JDK1.4产品的时间了，因此拒绝了Apache的要求，使用自己的java.util.logging，这个包的功能比log4j差的很远，性能也一般。后来Apache就开发出来了commons-logging.jar用来兼容两个logger。因此用commons-logging.jar写的log程序，底层的Logger是可以切换的，你可以选择log4j，java.util.logging或者它自带的Simple Logger。不过我仍然强烈建议使用log4j，因为log4j性能很高，log输出信息时间几乎等于System.out，而处理一条log平均只需要5us。你可以在Hibernate的src目录下找到Hibernate已经为你准备好了的log4j的配置文件，你只需要到Apache 网站去下载log4j就可以了。commons-logging.jar也是必须的jar包。 <span class="Dum328"></span><br /><br />使用Hibernate必须的jar包就是以上的这几个，剩下的都是可选的。 <br /><br /><br />ant.jar: <br />Ant编译工具的jar包，用来编译Hibernate源代码的。如果你不准备修改和编译Hibernate源代码，那么就没有什么用，可选的jar包 <br /><br />optional.jar： <br />Ant的一个辅助包。 <br /><br />c3p0.jar： <br />C3PO是一个数据库连接池，Hibernate可以配置为使用C3PO连接池。如果你准备用这个连接池，就需要这个jar包。 <br /><br /><br />proxool.jar： <br />也是一个连接池，同上。 <br /><br />commons-pool.jar, commons-dbcp.jar: <br />DBCP数据库连接池，Apache的Jakarta组织开发的，Tomcat4的连接池也是DBCP。 <br /><br /><br />实际上Hibernate自己也实现了一个非常非常简单的数据库连接池，加上上面3个，你实际上可以在Hibernate上选择4种不同的数据库连接池，选择哪一个看个人的偏好，不过DBCP可能更通用一些。另外强调一点，如果在EJB中使用Hibernate，一定要用App Server的连接池，不要用以上4种连接池，否则容器管理事务不起作用。 <br /><br />connector.jar: <br />JCA 规范，如果你在App Server上把Hibernate配置为Connector的话，就需要这个jar。不过实际上一般App Server肯定会带上这个包，所以实际上是多余的包。 <br /><br />jaas.jar: <br />JAAS是用来进行权限验证的，已经包含在JDK1.4里面了。所以实际上是多余的包。 <br /><br />jcs.jar： <br />如果你准备在Hibernate中使用JCS的话，那么必须包括它，否则就不用。 <br /><br />JDBC2_0-stdext.jar: <br />JDBC2.0的扩展包，一般来说数据库连接池会用上它。不过App Server都会带上，所以也是多余的。 <br /><br />jta.jar： <br />JTA规范，当Hibernate使用JTA的时候需要，不过App Server都会带上，所以也是多余的。 <br /><br /><br />junit.jar: <br />Junit包，当你运行Hibernate自带的测试代码的时候需要，否则就不用。 <br /><br />xalan.jar, xerces.jar, xml-apis.jar: <br /><br />Xerces是XML解析器，Xalan是格式化器，xml-apis实际上是JAXP。一般App Server都会带上，JDK1.4也包含了解析器，不过不是Xerces，是Crimson，效率比较差，不过Hibernate用XML只不过是读取配置文件，性能没什么紧要的，所以也是多余的。 <br /><img src ="http://www.blogjava.net/Aisce/aggbug/152580.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Aisce/" target="_blank">Aisce</a> 2007-10-13 15:36 <a href="http://www.blogjava.net/Aisce/articles/152580.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Hibernate入门</title><link>http://www.blogjava.net/Aisce/articles/152578.html</link><dc:creator>Aisce</dc:creator><author>Aisce</author><pubDate>Sat, 13 Oct 2007 07:26:00 GMT</pubDate><guid>http://www.blogjava.net/Aisce/articles/152578.html</guid><wfw:comment>http://www.blogjava.net/Aisce/comments/152578.html</wfw:comment><comments>http://www.blogjava.net/Aisce/articles/152578.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Aisce/comments/commentRss/152578.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Aisce/services/trackbacks/152578.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Hibernate入门												                                ++YONG原创，转载请声明																				1.    								应用程序的分层体系结构：																										1.1.       								典型的三层结构：...&nbsp;&nbsp;<a href='http://www.blogjava.net/Aisce/articles/152578.html'>阅读全文</a><img src ="http://www.blogjava.net/Aisce/aggbug/152578.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Aisce/" target="_blank">Aisce</a> 2007-10-13 15:26 <a href="http://www.blogjava.net/Aisce/articles/152578.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Hibernate技术全面学习 </title><link>http://www.blogjava.net/Aisce/articles/152247.html</link><dc:creator>Aisce</dc:creator><author>Aisce</author><pubDate>Fri, 12 Oct 2007 02:21:00 GMT</pubDate><guid>http://www.blogjava.net/Aisce/articles/152247.html</guid><wfw:comment>http://www.blogjava.net/Aisce/comments/152247.html</wfw:comment><comments>http://www.blogjava.net/Aisce/articles/152247.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Aisce/comments/commentRss/152247.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Aisce/services/trackbacks/152247.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 1. hibernate核心接口在项目种使用Hibernate框架，非常关键的一点就是要了解Hibernate的核心接口。Hibernate 接口位于业务层和持久化层。图1 Hibernate核心接口的层次架构关系　　Hibernate的核心接口一共有5个，分别为:Session、 SessionFactory、Transaction、Query和Configuration。这5个核心接口在任何开...&nbsp;&nbsp;<a href='http://www.blogjava.net/Aisce/articles/152247.html'>阅读全文</a><img src ="http://www.blogjava.net/Aisce/aggbug/152247.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Aisce/" target="_blank">Aisce</a> 2007-10-12 10:21 <a href="http://www.blogjava.net/Aisce/articles/152247.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spring下的单元测试要点</title><link>http://www.blogjava.net/Aisce/articles/151964.html</link><dc:creator>Aisce</dc:creator><author>Aisce</author><pubDate>Thu, 11 Oct 2007 02:24:00 GMT</pubDate><guid>http://www.blogjava.net/Aisce/articles/151964.html</guid><wfw:comment>http://www.blogjava.net/Aisce/comments/151964.html</wfw:comment><comments>http://www.blogjava.net/Aisce/articles/151964.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Aisce/comments/commentRss/151964.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Aisce/services/trackbacks/151964.html</trackback:ping><description><![CDATA[
		<h2>1. 需要Spring 依赖注入的测试</h2>
		<p>   为了测试Spring管理下的Bean，可以自行构造BeanFactory，也可以继承于<span class="nobr"><a title="Visit page outside Confluence" href="http://static.springframework.org/spring/docs/2.0.x/api/org/springframework/test/AbstractDependencyInjectionSpringContextTests.html" rel="nofollow">AbstractDependencyInjectionSpringContextTests</a></span>，实现public String[] getConfigLocations()函数， 返回applicationContext文件路径的数组。</p>
		<div class="code">
				<div class="codeContent">
						<pre class="code-java"> <span class="code-keyword">protected</span><span class="code-object">String</span>[] getConfigLocations() {
        <span class="code-keyword">return</span><span class="code-keyword">new</span><span class="code-object">String</span>[]{<span class="code-quote">"classpath*:spring/*.xml"</span>,  <span class="code-quote">"classpath*:spring/test/*.xml"</span>};
 } </pre>
				</div>
		</div>
		<p>  并显式写一些需要注入的变量的setter函数。</p>
		<p>    tips1：此基类有一个applicationContext的成员变量，所以除了依靠setter注入外，还可以随时用applicationContext.getBean() 取出所需的bean。 </p>
		<p>    tips2：注意此基类 默认是autowire by type的，所以如果context文件里有两个相同类型的Bean就会报错，可能需要在getConfigLocations()函数里，setAutowireMode(AUTOWIRE_BY_NAME);把它设回by name，或者取消setter函数，自行用applicationContext.getBean()来显式查找Bean。</p>
		<h2>
				<a name="SpringUnitTest-2.Dao%E6%B5%8B%E8%AF%95">
				</a>2. Dao测试</h2>
		<p>
				<span class="nobr">
						<a title="Visit page outside Confluence" href="http://static.springframework.org/spring/docs/2.0.x/api/org/springframework/test/AbstractTransactionalDataSourceSpringContextTests.html" rel="nofollow">AbstractTransactionalDataSourceSpringContextTests</a>
				</span> 继承于AbstractDependencyInjectionSpringContextTests，除了拥有上类的能力外，还管理了每个测试的事务，会在每个测试后默认回滚所有的操作。</p>
		<p>深层解释：此类的实现其实依赖于Application Context中定义的 <tt>PlatformTransactionManager</tt>。由于使用了Autowrie by type，可以任意取名。</p>
		<p>         另依赖于Application Context中定义的<tt>DataSource，同样可以任意取名。</tt> </p>
		<p>tips1：如果需要在测试后提交，需要setRollBack(false); 或者调用setComplete()</p>
		<p>tips2：此基类还通过注入的DataSource创建了一个JDBCTemplate 变量，可以跑SQL帮忙核对Hibernate的结果，Spring将确保该查询在同一个事务内执行。为正常工作你需要告诉你的ORM工具'刷新'它的已改变内容，例如使用Hibernate <tt>Session</tt> 接口的 <tt>flush()</tt> 方法。</p>
		<p>tips3：除了tips2以外，还有countRowsInTable(String tableName)，deleteFromTables(String[] names) ，executeSqlScript(String sqlResourcePath, boolean continueOnError)三个简便函数。</p>
		<h2>
				<a name="SpringUnitTest-3.Controller%E6%B5%8B%E8%AF%95">
				</a>3. Controller测试</h2>
		<p>Controller测试一般要用MockObject 分离Service层，要copy WEB-INF/下的相关文件copy 到classpath，而且Controller不含太多的逻辑，所有测试controller有点吃力不讨好，建议直接用Selenium进行集成测试，见(<a title="Selenium" href="http://wiki.springside.org.cn/display/springside/Selenium">Selenium测试概述</a>)。</p>
		<h2>
				<a name="SpringUnitTest-4.SpringSide%E9%87%8C%E7%9A%84%E6%B5%8B%E8%AF%95">
				</a>4.SpringSide里的测试</h2>
		<p>因为Spring默认的基类名字较长，<a href="http://www.springside.org.cn/">SpringSide </a>在core 的org.springside.core.test 中重新继承了它们，并提供了默认读取所有按springside 文件存放规则存放的context 文件的getConfigLocations()函数。</p>
		<p>默认读取所有context文件的getConfigLocations()函数对速度和测试的隔离化都有影响，可以在子类重新实现。不过自己重新一个个写相关context文件也好烦，而且其实在全lazy-load的情况下，速度也还可以接受。如何取舍要自己平衡了。</p>
		<p>对于CRUD的测试，在helloworld示例里的变量名都作了泛化，可以快速copy到另一个测试里。</p>
		<p>另外，留意resources/spring/test 下的文件，利用了Spring的<span class="nobr"><a title="Visit page outside Confluence" href="http://static.springframework.org/spring/docs/2.0.x/api/org/springframework/beans/factory/config/PropertyOverrideConfigurer.html" rel="nofollow">PropertyOverrideConfigurer<sup><img class="rendericon" height="7" alt="" src="http://wiki.springside.org.cn/images/icons/linkext7.gif" width="7" align="absMiddle" border="0" /></sup></a></span>，新设定测试时的ApplicatonContext 里各个Bean的属性如指定测试用的DataSource，详细用法见<a title="SpringConfig" href="http://wiki.springside.org.cn/display/springside/SpringConfig">Spring配置要点</a>。</p>
<img src ="http://www.blogjava.net/Aisce/aggbug/151964.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Aisce/" target="_blank">Aisce</a> 2007-10-11 10:24 <a href="http://www.blogjava.net/Aisce/articles/151964.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>validation 类库</title><link>http://www.blogjava.net/Aisce/articles/148216.html</link><dc:creator>Aisce</dc:creator><author>Aisce</author><pubDate>Wed, 26 Sep 2007 02:01:00 GMT</pubDate><guid>http://www.blogjava.net/Aisce/articles/148216.html</guid><wfw:comment>http://www.blogjava.net/Aisce/comments/148216.html</wfw:comment><comments>http://www.blogjava.net/Aisce/articles/148216.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Aisce/comments/commentRss/148216.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Aisce/services/trackbacks/148216.html</trackback:ping><description><![CDATA[
		<p>使用方法<br />1.引入<br />  &lt;script src="scriptaculous/lib/prototype.js" type="text/javascript"&gt;&lt;/script&gt;<br />  &lt;script src="scriptaculous/src/effects.js" type="text/javascript"&gt;&lt;/script&gt;<br />  &lt;script type="text/javascript" src="fabtabulous.js"&gt;&lt;/script&gt;<br />  &lt;script type="text/javascript" src="validation.js"&gt;&lt;/script&gt;<br />  &lt;link rel="stylesheet" type="text/css" href="style.css" /&gt;<br />2.&lt;form name="form1" id="form1"&gt;<br />         &lt;a href="#<font color="#ff0066">form1</font>"&gt;......&lt;/a&gt;             //#+form的ID<br />   &lt;/form&gt;<br />3.<br />     &lt;input name="field5" id="field5" class="<font color="#ff3300">required</font>" /&gt;  //class内输入validation.js类库的方法 required代表为空判断<br />4.在&lt;/form&gt;后加上这句<br />  &lt;script type="text/javascript"&gt;<br />      var valid = new Validation('<font color="#ff3300">from1</font>', {immediate : true});<br />  &lt;/script&gt;<br /></p>
<img src ="http://www.blogjava.net/Aisce/aggbug/148216.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Aisce/" target="_blank">Aisce</a> 2007-09-26 10:01 <a href="http://www.blogjava.net/Aisce/articles/148216.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>