打这篇起,之前JSP和SSH基础的部分就算结了,开始弄弄真实的项目,从项目里积累点儿经验。
手头有几个项目,先用个简单的OA框架开始,争取学几个项目以后,把能把之前写出来的代码从玩具历练到产品级别。
一:用MyEclipse添加SSH支持
之前都是手动添加SSH的jar包,这回用MyEclipse自动添加
hibernate3.2
1.hibernate不指定JDBC连接,2.不要sessionFactory
spring 2.0
1.加前4个,加Web库、j2ee库2.去掉AOP Builder
3.xml位置改成WebRoot/WEB-INF
4.创建spring sessionFactory
5.要hibernate annotation支持
struts 2.0
1.struts2-core2.struts-spring-pugin
3.把struts.xml配置在src文件夹下
web.xml
1.struts的filter和filter-mapping2.spring的listener
3.OpenSessionInViewFilter
配置好之后,网上传说有个asm.jar的冲突,我Myeclipse版本是10,没有遇到
但是antlr-2.7.2.jar要从struts中删掉, 如果调试过了 还要从tomcat中删掉 ..因为Struts自带的antlr-2.7.2.jar,比Hibernate3.3自带的antlr-2.7.6.jar的版本要低
具体操作是:
Window->Preferences->MyEclipse->Project Capabilities->然后选中Struts或Hibernate 找到antlr-2.7.2就Remove就好了
二:配置文件
1.Hibernate
Hibernate我还是用Annotation顺手,而且表单多的情况下也是Annotation比较快
然后用packagesToScan去自动查找实体
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
</props>
</property>
<!-- 搜索带Annotation的实体 -->
<property name="packagesToScan">
<list>
<value>com.test.bean</value>
<!--<value>com.rt.sidemo....</value> -->
</list>
</property>
</bean>
2.struts.xml
这个项目里是:每个操作都对应一个action,这样容易管理,也容易使用校验框架,具体action一会儿再细分析
在action跳转上,他用了好几个 type="redirect",这样能解决我之前写的代码中:删除时候可能重复提交的问题,这个一会儿单拿出一篇文章分析
<struts>
<package name="user" extends="struts-default">
<action name="saveUser" class="saveUserAction">
<result name="success" type="redirect">listUser.action</result>
<result name="input">/save.jsp</result>
</action>
struts先加载struts-plugin后加载struts.xml
多个struts-plugin.xml加载顺序不固定,所以不能互相依赖
3.applicationContext.xml
值得学习和注意的地方是:scope="prototype"
默认spring创建的bean是singleton,在多个操作并发时候会出错的
而且校验时候,如果是默认也就是singleton,校验框架页会报错,校验也一会儿另起一篇文章分析
<bean id="saveUserAction" class="com.test.action.user.SaveUserAction" scope="prototype">
<property name="service" ref="userService"></property>
</bean>
spring视图可以用图形打开,看得更清楚些
三:文件组织结构
1.action中再细分各个包,这样不至于把验证文件都堆在一堆
2. X.dao和 X.dao.impl分开
3. X.service 和 X.service.impl分开