﻿<?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-笨笨熊.java</title><link>http://www.blogjava.net/szbear/</link><description>笨笨熊的JAVA学习笔记</description><language>zh-cn</language><lastBuildDate>Thu, 09 Apr 2026 11:04:18 GMT</lastBuildDate><pubDate>Thu, 09 Apr 2026 11:04:18 GMT</pubDate><ttl>60</ttl><item><title>Apache2.0.55+Tomcat5.5.16+jk1.2.24整合</title><link>http://www.blogjava.net/szbear/archive/2007/04/08/109212.html</link><dc:creator>笨笨熊</dc:creator><author>笨笨熊</author><pubDate>Sun, 08 Apr 2007 03:22:00 GMT</pubDate><guid>http://www.blogjava.net/szbear/archive/2007/04/08/109212.html</guid><wfw:comment>http://www.blogjava.net/szbear/comments/109212.html</wfw:comment><comments>http://www.blogjava.net/szbear/archive/2007/04/08/109212.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/szbear/comments/commentRss/109212.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/szbear/services/trackbacks/109212.html</trackback:ping><description><![CDATA[<p><br>这两天在windows2000 professional 下进行了Apache2与Tomcat5的整合。这理总结下：<br>一)安装配置tomcat apache mod_jk j2sdk<br>1)下载并安装Sun j2sdk1.5.这是必需的基本环境。<br>&nbsp;&nbsp; 下载地址:http://java.sun.com<br>2)下载Tomcat5.5.16 解压使用就行啦,然后试下Tomcat能不能正常运行。<br>&nbsp;&nbsp;&nbsp; 下载地址:http://tomcat.apache.org/<br>3）下载Apache2.0.55 windows安装版本,并安装<br>&nbsp;&nbsp;&nbsp;&nbsp; 下载地址:http://httpd.apache.org/<br>4)下载mod_jk<br>&nbsp;&nbsp; 下载地址:http://archive.apache.org/dist/jakarta/tomcat-connectors/jk/<br>准备完成后就可以进行配啦：<br>二）配置<br>1)把mod_jk-1.2.14-apache-2.0.54.so 改名为mod_jk.so放到apache2/modules/下<br>2)修改httpd.conf加入:<br># load the jk_modules<br>#include E:/Apache Group/Apache2/conf/mod_jk.conf<br>LoadModule jk_module modules/mod_jk.so<br># Where to find workers.properties<br>JkWorkersFile conf/workers.properties<br># Where to put jk logs<br>JkLogFile logs/mod_jk.log&nbsp; #可不要<br># Set the jk log level [debug/error/info]<br>JkLogLevel info #可不要<br># Send servlet for context /examples to worker named ajp13 <br>#JkMount /servlet/* ajp13<br># Send JSPs for context /examples to worker named ajp13<br>JkMount /*.jsp ajp13<br>&nbsp;<br>&nbsp;<br>3加入虚拟主机:<br>NameVirtualHost *:80<br>&lt;VirtualHost *:80&gt;<br>ServerAdmin <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#121;&#111;&#117;&#114;&#109;&#97;&#105;&#108;&#64;&#46;&#109;&#97;&#105;&#108;&#108;&#46;&#99;&#111;&#109;">yourmail@.maill.com</a><br>DocumentRoot E:/develop/apache-tomcat-5.5.16/webapps/jsp-examples<br>ServerName localhost<br>ErrorLog logs/localhost-error_log<br>CustomLog logs/localhost-access_log common<br>&lt;/VirtualHost&gt;<br>&nbsp;<br>2)编写workers.properties 并放配到 apache2 的conf目录下<br>workers.properties&nbsp; 内容如下:<br>worker.list=ajp13 <br>worker.ajp13.port=8009 <br>worker.ajp13.host=localhost&nbsp; #本机,若上面Tomcat主机不为localhost,作相应修改 <br>worker.ajp13.type=ajp13&nbsp; #类型 <br>worker.ajp13.lbfactor=1&nbsp; #代理数,不用修改 </p>
<p>3)确认tomcat5的conf/server.xml中已有经下配置:<br>&lt;Connector port="8009" <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; enableLookups="false" redirectPort="8443" protocol="AJP/1.3" /&gt;<br>&nbsp;<br>好啦配置完毕，分别起动apache和tomcat.然后输入<a href="http://localhost/">http://localhost/</a> 应该会出现tomcat的detault面页啦。<br></p>
<img src ="http://www.blogjava.net/szbear/aggbug/109212.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/szbear/" target="_blank">笨笨熊</a> 2007-04-08 11:22 <a href="http://www.blogjava.net/szbear/archive/2007/04/08/109212.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一些基本概念</title><link>http://www.blogjava.net/szbear/archive/2005/09/24/13957.html</link><dc:creator>笨笨熊</dc:creator><author>笨笨熊</author><pubDate>Sat, 24 Sep 2005 14:37:00 GMT</pubDate><guid>http://www.blogjava.net/szbear/archive/2005/09/24/13957.html</guid><wfw:comment>http://www.blogjava.net/szbear/comments/13957.html</wfw:comment><comments>http://www.blogjava.net/szbear/archive/2005/09/24/13957.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/szbear/comments/commentRss/13957.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/szbear/services/trackbacks/13957.html</trackback:ping><description><![CDATA[<P><FONT color=#0000ff><FONT color=#000000><FONT color=#0000ff><STRONG>IoC－（Inversion of Control）<BR></STRONG></FONT><BR>控制返转，在传统的实现中，由程序内部代码来控制程序之间的关系。而在IoC中，将控制程序间关系的实现交给了外部的容器来完成。<BR><BR><BR><FONT color=#0000ff><STRONG>DI－（Dependency Injection）</STRONG></FONT><BR><BR>依赖注射，通常在程序中，我们会使用new关键字来实现两组键间关系的组合，这种实现的方式会造成组件之间耦合(一个好的设计，不但要实现代码重用，还要将组件间关系解耦)。依赖注射很好的解决了该问题，它将实现组件间关系从程序内部提到外部容器来管理。也就是说由容器在运行期将组件间的某种依赖关系动态的注入组件中。</FONT><BR><BR><STRONG>Model-View-Controller</STRONG></FONT></P>
<P><STRONG>model:</STRONG>代表应用的业务逻辑，用JavaBean和EJB实现。</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在Struts中是用Action和ActionForm实现的。</P>
<P><STRONG>view:</STRONG>代表应用的表示层。用JSP页面实现。</P>
<P><STRONG>controller:</STRONG>提供应用的处理过程控制。一般是一个servelet。</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在Struts中用Action Servlet和ActionMapping实现。<BR><BR><STRONG><FONT color=#0000ff>DTO: Data Transfer Object</FONT></STRONG><BR><BR>DTO就是数据传输对象(Data Transfer Object)的缩写。<BR>DTO模式或称VO模式，是指将数据封装成普通的JavaBeans，在J2EE多个层次之间传输。<BR>DTO类似信使，是同步系统中的Message。<BR>该JavaBeans可以是一个数据模型Model。<BR>常见的方式就是为实体对象建立一个Model类，该类只包含这个对象所有字段的getter和setter。例如用户User实体有name, password字段，则建立一个UserModel类，public方法有getName,setName,getPassword,setPassword。这样就可以把UserForm作为参数传给其他函数。<BR>Data Transfer Object（DTO）模式是为了解决这样的问题：例如我们的一个实体Bean，其对应的数据库表的字段非常多，那么我们在其Home接口的create方法中以及Enterprise Bean类的ejbCreate方法中的参数可能就会很多，导致我们的这些方法不够elegant。我们可以通过定义一个简单的Java类（实现Serializable接口），其中定义一些属性，并提供相应的get和set方法来解决上面的问题。<BR>Model 、 Domain Object以及DTO关系：<BR>1. 分析提炼Model是系统设计之起端<BR>2. 系统设计之初，三者基本统一<BR>3. 系统复杂化后，DTO可能是多个Model组合实现；<BR><BR><SPAN class=javascript id=text3716><STRONG><FONT color=#0000ff>GoF:（Gang of Four）---四人组</FONT></STRONG><BR><BR>Design Patterns: Elements of Reusable Object-Oriented Software（即后述《设计模式》一书），由 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 合著（Addison-Wesley，1995）。这几位作者常被称为“四人组（Gang of Four）”，而这本书也就被称为“四人组（或 GoF）”书。<BR><BR>在《设计模式》这本书的最大部分是一个目录，该目录列举并描述了 23 种设计模式。另外，近来这一清单又增加了一些类别，最重要的是使涵盖范围扩展到更具体的问题类型。例如，Mark Grand 在 Patterns in Java: A Catalog of Reusable Design Patterns Illustrated with UML（即后述《模式 Java 版》一书）中增加了解决涉及诸如并发等问题的模式，而由 Deepak Alur、John Crupi 和 Dan Malks 合著的 Core J2EE Patterns: Best Practices and Design Strategies 一书中主要关注使用 Java 2 企业技术的多层应用程序上的模式。<BR><BR>对软件设计模式的研究造就了一本可能是面向对象设计方面最有影响的书籍：《设计模式》。<BR><BR><STRONG><FONT color=#0000ff>DAO</FONT></STRONG><BR>&nbsp;&nbsp;&nbsp; DAO是Data Access Object数据访问接口，数据访问：故名思义就是与数据库打交道。夹在业务逻辑与数据库资源中间。</P>
<P>&nbsp;&nbsp;&nbsp; DAO的功能:</P>
<P>&nbsp;&nbsp;&nbsp; 1. DAO用来封装Data Source的，就比如,Connection conn = DAOFacotry.createConnection()就可以把Driver，URL，username，passpword这一些放在DAO中。</P>
<P>&nbsp;&nbsp;&nbsp; 以后要更改数据库的类型，比如要把MSSQL换成Oracle的话，只需要更改DAOFacory里面的getConnection()里面的Driver，URL，之类的。</P>
<P>&nbsp;&nbsp;&nbsp; 2. DAO也是把对数据库的操作(比如最基本的CRUD操作)全部封装在里面，比如说你要你要插入一个新的用户，那么在DAO中我们只需要提供一个insertUser(User user)这一个方法就可以了。具体的操作是在DAO中实现的。</P>
<P>&nbsp;&nbsp;&nbsp; 那么对于要调用DAO的时候.我们只要知道insertUser(User)是用来插入一个新的用户，而不需要知道是如何实现的。一般 DAO是与Abstract Factory模式一起来用的。</P>
<P>&nbsp;&nbsp;&nbsp; Factory来建立数据库和定位具体的DAO(比如说是UserDao、CustomerDao、)，一般将getConnection设置为static，也可以把HibernateSessionFactory这一个公共类放在这一AbstractFactory类中去。</P>
<P>&nbsp;&nbsp;&nbsp; public class DAOFactory<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp; private static final<BR>&nbsp;&nbsp;&nbsp; SessionFactory sessionFacotory;<BR>&nbsp;&nbsp;&nbsp; // 定义一个TrheadLocal<BR>&nbsp;&nbsp;&nbsp; static Session currentSession()</P>
<P>&nbsp;&nbsp;&nbsp; public UserDao getUserDAO()</P>
<P>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp; return new UserDaoImpl(sesssion);<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; pulbic OtherDao getOtherDAO()</P>
<P>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp; return new OtherDaoImpl(session);<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; ......<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; public interface UserDao<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp; public insertUser(FormBean)</P>
<P>&nbsp;&nbsp;&nbsp; public updateUser(FormBean);<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; 然后就实现DAO的接口:</P>
<P>&nbsp;&nbsp;&nbsp; (Struts的FormBean...VO来的..)</P>
<P>&nbsp;&nbsp;&nbsp; public class UserDaoImpl<BR>&nbsp;&nbsp;&nbsp; implements UserDao<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp; private Session session;<BR>&nbsp;&nbsp;&nbsp; public UserDaoImpl<BR>&nbsp;&nbsp;&nbsp; (Session session)</P>
<P>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp; this.session = session;<BR>&nbsp;&nbsp;&nbsp; }...<BR>&nbsp;&nbsp;&nbsp; public insertUser(FormBean)</P>
<P>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp; ..//..<BR>&nbsp;&nbsp;&nbsp; session.save(UserPO);<BR>&nbsp;&nbsp;&nbsp; ..//..<BR>&nbsp;&nbsp;&nbsp; return FormBean;<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; public FormBean<BR>&nbsp;&nbsp;&nbsp; updateUser(FormBean)</P>
<P>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp; ..//..<BR>&nbsp;&nbsp;&nbsp; session.update(UserPO);<BR>&nbsp;&nbsp;&nbsp; ..//..<BR>&nbsp;&nbsp;&nbsp; return FormBean;<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; 最后定义你的PO:</P>
<P>&nbsp;&nbsp;&nbsp; public class UserPO<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp; String firstname,<BR>&nbsp;&nbsp;&nbsp; lastname, password..........<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; (T117)</P></SPAN><img src ="http://www.blogjava.net/szbear/aggbug/13957.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/szbear/" target="_blank">笨笨熊</a> 2005-09-24 22:37 <a href="http://www.blogjava.net/szbear/archive/2005/09/24/13957.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spring Framework的基本概念</title><link>http://www.blogjava.net/szbear/archive/2005/09/21/13688.html</link><dc:creator>笨笨熊</dc:creator><author>笨笨熊</author><pubDate>Wed, 21 Sep 2005 14:17:00 GMT</pubDate><guid>http://www.blogjava.net/szbear/archive/2005/09/21/13688.html</guid><wfw:comment>http://www.blogjava.net/szbear/comments/13688.html</wfw:comment><comments>http://www.blogjava.net/szbear/archive/2005/09/21/13688.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/szbear/comments/commentRss/13688.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/szbear/services/trackbacks/13688.html</trackback:ping><description><![CDATA[<P><STRONG>1.什么是Spring Framework？</STRONG><BR>&nbsp;&nbsp;&nbsp; Spring Framework(简称Spring)是根据Rod Johnson著名的《Expert One-on-One J2EE Design and Development》而开发的J2EE应用程序框架。目前主要根据Rod Johnson和Juergen Hoeller而进行开发的，目前发布的最新版为1.1.4。&nbsp;&nbsp;&nbsp; Spring是J2EE应用程序框架，不过，更严格地讲它是针对Bean的生命周期进行管理的轻量级容器(Lightweight container)，可以单独利用Spring构筑应用程序，也可以和Struts，Webwork，Tapestry等众多Web应用程序框架组合使用，并且可以与Swing等桌面应用程序API组合。所以Spring并不仅仅只能应用在J2EE中，也可以应用在桌面应用及小应用程序中。针对Spring开发的组件不需要任何外部库。<BR><STRONG>2.使用Spring有什么好处？</STRONG><BR>&nbsp;&nbsp;&nbsp;&nbsp; (1)Spring能有效地组织你的中间层对象。<BR>&nbsp;&nbsp;&nbsp;&nbsp; (2)Spring能消除在许多工程中常见的对Singleton的过多使用。<BR>&nbsp;&nbsp;&nbsp;&nbsp; (3)Spring能消除各种各样自定义格式的属性文件的需要，使配置信息一元化。<BR>&nbsp;&nbsp;&nbsp;&nbsp; (4)Spring能够帮助我们真正意义上实现针对接口编程。<BR>&nbsp;&nbsp;&nbsp;&nbsp; (5)在Spring应用中的大多数业务对象没有依赖于Spring。<BR>&nbsp;&nbsp;&nbsp;&nbsp; (6)使用Spring构建的应用程序易于单元测试。<BR>&nbsp;&nbsp;&nbsp;&nbsp; (7)Spring支持JDBC和O/R Mapping产品(Hibernate)<BR>&nbsp;&nbsp;&nbsp;&nbsp; (8)MVC Web框架，提供一种清晰，无侵略性的MVC实现方式。<BR>&nbsp;&nbsp;&nbsp;&nbsp; (9)JNDI抽象层，便于改变实现细节，可以方便地在远程服务和本地服务间切换。<BR>&nbsp;&nbsp;&nbsp; (10)简化访问数据库时的例外处理。<BR>&nbsp;&nbsp;&nbsp; (11)Spring能使用AOP提供声明性事务管理，可以不直接操作JTA也能够对事务进行管理。<BR>&nbsp;&nbsp;&nbsp; (12)提供了JavaMail或其他邮件系统的支持。<BR><STRONG>3.什么是轻量(Lightweight)级容器？</STRONG><BR>&nbsp;&nbsp;&nbsp; Spring的开发者可以避免使用重量级容器开发EJB时的缺点：<BR>&nbsp;&nbsp;&nbsp; (1)带有侵略性的API。(代码依赖于EJB)<BR>&nbsp;&nbsp;&nbsp; (2)对容器的依赖。(代码不能在EJB容器之外工作)<BR>&nbsp;&nbsp;&nbsp; (3)提供固定的一组机能，不具有配置能力。<BR>&nbsp;&nbsp;&nbsp; (4)不同的产品，部署过程不同，不易通用。<BR>&nbsp;&nbsp;&nbsp; (5)启动时间长。<BR>&nbsp;&nbsp;&nbsp; 针对以上问题，Spring采用了IoC使代码对Spring的依赖减少，根据Web应用，小应用程序，桌面应用程的不同，对容器的依赖程度也不同。Spring将管理的Bean作为POJO(Plain Old Java Object)进行控制，通过AOP Interceptor能够增加其它的功能。<BR>&nbsp;&nbsp;&nbsp; 除了Spring以外的轻量级容器还有PicoContainer，(不是轻量级容器)对Bean的生命周期进行管理的还有Apache Avalon Project的Avalon等。</P>
<P>&nbsp;&nbsp;&nbsp; <STRONG>总结：</STRONG>Spring的核心思想便是IoC和AOP，Spring本身是一个轻量级容器，和EJB容器不同，Spring的组件就是普通的Java Bean，这使得单元测试可以不再依赖容器，编写更加容易。Spring负责管理所有的Java Bean组件，同样支持声明式的事务管理。我们只需要编写好Java Bean组件，然后将它们“装配”起来就可以了，组件的初始化和管理均由Spring完成，只需在配置文件中声明即可。这种方式最大的优点是各组件的耦合极为松散，并且无需我们自己实现Singleton模式。&nbsp;</P><img src ="http://www.blogjava.net/szbear/aggbug/13688.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/szbear/" target="_blank">笨笨熊</a> 2005-09-21 22:17 <a href="http://www.blogjava.net/szbear/archive/2005/09/21/13688.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Starting the Java Learning Blog</title><link>http://www.blogjava.net/szbear/archive/2005/09/10/12618.html</link><dc:creator>笨笨熊</dc:creator><author>笨笨熊</author><pubDate>Sat, 10 Sep 2005 04:47:00 GMT</pubDate><guid>http://www.blogjava.net/szbear/archive/2005/09/10/12618.html</guid><wfw:comment>http://www.blogjava.net/szbear/comments/12618.html</wfw:comment><comments>http://www.blogjava.net/szbear/archive/2005/09/10/12618.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/szbear/comments/commentRss/12618.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/szbear/services/trackbacks/12618.html</trackback:ping><description><![CDATA[Got to have a lesson on J2EE conducted by Beijing University of Telecommunication and Post in the coming weeks. This will be a&nbsp;part of my post graduate study, and&nbsp;also the begining for me to get familiar with Java and J2EE structure.<BR><BR>May be a hard task for me but I have to overcome it.<BR><BR><img src ="http://www.blogjava.net/szbear/aggbug/12618.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/szbear/" target="_blank">笨笨熊</a> 2005-09-10 12:47 <a href="http://www.blogjava.net/szbear/archive/2005/09/10/12618.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>