??xml version="1.0" encoding="utf-8" standalone="yes"?>
q两天在windows2000 professional 下进行了Apache2与Tomcat5的整合。这理ȝ下:
一)安装配置tomcat apache mod_jk j2sdk
1)下蝲q安装Sun j2sdk1.5.q是必需的基本环境?br> 下蝲地址:http://java.sun.com
2)下蝲Tomcat5.5.16 解压使用p?然后试下Tomcat能不能正常运行?br> 下蝲地址:http://tomcat.apache.org/
3Q下载Apache2.0.55 windows安装版本,q安?br> 下蝲地址:http://httpd.apache.org/
4)下蝲mod_jk
下蝲地址:http://archive.apache.org/dist/jakarta/tomcat-connectors/jk/
准备完成后就可以q行配啦Q?br>二)配置
1)把mod_jk-1.2.14-apache-2.0.54.so 改名为mod_jk.so攑ֈapache2/modules/?br>2)修改httpd.conf加入:
# load the jk_modules
#include E:/Apache Group/Apache2/conf/mod_jk.conf
LoadModule jk_module modules/mod_jk.so
# Where to find workers.properties
JkWorkersFile conf/workers.properties
# Where to put jk logs
JkLogFile logs/mod_jk.log #可不?br># Set the jk log level [debug/error/info]
JkLogLevel info #可不?br># Send servlet for context /examples to worker named ajp13
#JkMount /servlet/* ajp13
# Send JSPs for context /examples to worker named ajp13
JkMount /*.jsp ajp13
3加入虚拟L:
NameVirtualHost *:80
<VirtualHost *:80>
ServerAdmin yourmail@.maill.com
DocumentRoot E:/develop/apache-tomcat-5.5.16/webapps/jsp-examples
ServerName localhost
ErrorLog logs/localhost-error_log
CustomLog logs/localhost-access_log common
</VirtualHost>
2)~写workers.properties q放配到 apache2 的conf目录?br>workers.properties 内容如下:
worker.list=ajp13
worker.ajp13.port=8009
worker.ajp13.host=localhost #本机,若上面TomcatL不ؓlocalhost,作相应修?
worker.ajp13.type=ajp13 #cd
worker.ajp13.lbfactor=1 #代理?不用修改
3)认tomcat5的conf/server.xml中已有经下配|?
<Connector port="8009"
enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />
好啦配置完毕Q分别v动apache和tomcat.然后输入http://localhost/ 应该会出现tomcat的detault面页啦?br>
model:代表应用的业务逻辑Q用JavaBean和EJB实现?/P>
在Struts中是用Action和ActionForm实现的?/P>
view:代表应用的表C层。用JSP面实现?/P>
controller:提供应用的处理过E控制。一般是一个servelet?/P>
在Struts中用Action Servlet和ActionMapping实现?BR> DAO的功? 1. DAO用来装Data Source的,比?Connection conn = DAOFacotry.createConnection()可以把DriverQURLQusernameQpasspwordq一些放在DAO中?/P>
以后要更Ҏ据库的类型,比如要把MSSQL换成Oracle的话Q只需要更改DAOFacory里面的getConnection()里面的DriverQURLQ之cȝ?/P>
2. DAO也是把对数据库的操作(比如最基本的CRUD操作)全部装在里面,比如说你要你要插入一个新的用P那么在DAO中我们只需要提供一个insertUser(User user)q一个方法就可以了。具体的操作是在DAO中实现的?/P>
那么对于要调用DAO的时?我们只要知道insertUser(User)是用来插入一个新的用P而不需要知道是如何实现的。一?DAO是与Abstract Factory模式一h用的?/P>
Factory来徏立数据库和定位具体的DAO(比如说是UserDao、CustomerDao?Q一般将getConnection讄为staticQ也可以把HibernateSessionFactoryq一个公q攑֜q一AbstractFactorycM厅R?/P>
public class DAOFactory public UserDao getUserDAO() { { public updateUser(FormBean); (Struts的FormBean...VO来的..) public class UserDaoImpl { { { public class UserPO
DTO: Data Transfer Object
DTO是数据传输对象(Data Transfer Object)的羃写?BR>DTO模式或称VO模式Q是指将数据装成普通的JavaBeansQ在J2EE多个层次之间传输?BR>DTOcM信Q是同步pȝ中的Message?BR>该JavaBeans可以是一个数据模型Model?BR>常见的方式就是ؓ实体对象建立一个Modelc,该类只包含这个对象所有字D늚getter和setter。例如用户User实体有name, password字段Q则建立一个UserModelc,publicҎ有getName,setName,getPassword,setPassword。这样就可以把UserForm作ؓ参数传给其他函数?BR>Data Transfer ObjectQDTOQ模式是Z解决q样的问题:例如我们的一个实体BeanQ其对应的数据库表的字段非常多,那么我们在其Home接口的createҎ中以及Enterprise BeancȝejbCreateҎ中的参数可能׃很多Q导致我们的q些Ҏ不够elegant。我们可以通过定义一个简单的Javac(实现Serializable接口Q,其中定义一些属性,q提供相应的get和setҎ来解决上面的问题?BR>Model ?Domain Object以及DTO关系Q?BR>1. 分析提炼Model是系l设计之L
2. pȝ设计之初Q三者基本统一
3. pȝ复杂化后QDTO可能是多个Modell合实现Q?BR>
GoF:QGang of FourQ?--四hl?/FONT>
Design Patterns: Elements of Reusable Object-Oriented SoftwareQ即后述《设计模式》一书)Q由 Erich Gamma、Richard Helm、Ralph Johnson ?John Vlissides 合著QAddison-WesleyQ?995Q。这几位作者常被称为“四人组QGang of FourQ”,而这本书也就被称为“四人组Q或 GoFQ”书?BR>
在《设计模式》这本书的最大部分是一个目录,该目录列丑ƈ描述?23 U设计模式。另外,q来q一清单又增加了一些类别,最重要的是使涵盖范围扩展到更具体的问题cd。例如,Mark Grand ?Patterns in Java: A Catalog of Reusable Design Patterns Illustrated with UMLQ即后述《模?Java 版》一书)中增加了解决涉及诸如q发{问题的模式Q而由 Deepak Alur、John Crupi ?Dan Malks 合著?Core J2EE Patterns: Best Practices and Design Strategies 一书中主要x使用 Java 2 企业技术的多层应用E序上的模式?BR>
对Y件设计模式的研究造就了一本可能是面向对象设计斚w最有媄响的书籍Q《设计模式》?BR>
DAO
DAO是Data Access Object数据讉K接口Q数据访问:故名思义是与数据库打交道。夹在业务逻辑与数据库资源中间?/P>
{
private static final
SessionFactory sessionFacotory;
// 定义一个TrheadLocal
static Session currentSession()
return new UserDaoImpl(sesssion);
}
pulbic OtherDao getOtherDAO()
return new OtherDaoImpl(session);
}
......
}
public interface UserDao
{
public insertUser(FormBean)
}
然后实现DAO的接?
implements UserDao
{
private Session session;
public UserDaoImpl
(Session session)
this.session = session;
}...
public insertUser(FormBean)
..//..
session.save(UserPO);
..//..
return FormBean;
}
public FormBean
updateUser(FormBean)
..//..
session.update(UserPO);
..//..
return FormBean;
}
}
最后定义你的PO:
{
String firstname,
lastname, password..........
}
(T117)
ȝQ?/STRONG>Spring的核心思想便是IoC和AOPQSpring本n是一个轻量容器Q和EJB容器不同QSpring的组件就是普通的Java BeanQ这使得单元试可以不再依赖容器Q编写更加容易。Spring负责理所有的Java BeanlgQ同h持声明式的事务管理。我们只需要编写好Java BeanlgQ然后将它们“装配”v来就可以了,lg的初始化和管理均由Spring完成Q只需在配|文件中声明卛_。这U方式最大的优点是各lg的耦合极ؓ松散Qƈ且无需我们自己实现Singleton模式?nbsp;