1、系统总体方案。
本系统采用经典的j2ee的三层机构,即表现层、中间层(业务逻辑层)、持久层。
vis图插不进去,拉到把
2、程序详细设计。
2.1、数据库设计。
2.1.1、基础数据
用户权限、角色、用户组基础数据设计。
2.1.2、业务数据
业务对象:主帖、复帖、用户、分类模块。
根据业务需求将T_USER表扩展如下:
对象用户、好友、好友信息关系。
2.2、PO层设计。
2.2.1、实体类。
每个数据库表代表一个实体类,具体设计如下:
Notice:BaseObject源码如下
2.3、DAO设计。
Notice:BaseHibernateDAO源码
2.4、SERVICE层设计。
2.5、WEB层设计。
Notice:BaseAction源码
2.6、页面设计
略
2.7、Hibernate、Spring、Struts、Log4j配置文件
Notice:action-Servlet源码
applicationContext源码:
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName"
value="oracle.jdbc.driver.OracleDriver">
</property>
<property name="url" value="jdbc:oracle:thin:@localhost:1521:name"></property>
<property name="username" value="bbs"></property>
<property name="password" value="bbs"></property>
<property name="maxActive" value="100"></property>
<property name="maxIdle" value="30"></property>
<property name="maxWait" value="1000"></property>
<property name="defaultAutoCommit" value="true"></property>
<property name="removeAbandoned" value="true"></property>
<property name="removeAbandonedTimeout" value="60"></property>
<property name="logAbandoned" value="true"></property>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<!--property name="configLocation">
<value>classpath:hibernate.cfg.xml</value>
</property-->
<property name="dataSource" ref="dataSource" />
<property name="mappingResources">
<list>
<value>org/lr/bbs/bean/User.hbm.xml</value>
<value>org/lr/bbs/bean/New.hbm.xml</value>
<value>org/lr/bbs/bean/Category.hbm.xml</value>
<value>org/lr/bbs/bean/ReNew.hbm.xml</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.Oracle9Dialect
</prop>
<prop key="hibernate.query.factory_class">
org.hibernate.hql.classic.ClassicQueryTranslatorFactory
</prop>
</props>
</property>
</bean>
<bean id="DAO" class="org.lr.bbs.dao.hibernate.BaseHibernateDAO">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<bean id="CategoryDAO" class="org.lr.bbs.dao.hibernate.CategoryHibernateDAO">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<bean id="UserDAO" class="org.lr.bbs.dao.hibernate.UserHibernateDAO">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<bean id="NewDAO" class="org.lr.bbs.dao.hibernate.NewHibernateDAO">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<bean id="ReNewDAO" class="org.lr.bbs.dao.hibernate.ReNewHibernateDAO">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<bean id="txProxyTemplate" abstract="true"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager">
<ref bean="transactionManager" />
</property>
<property name="transactionAttributes">
<props>
<prop key="create*">PROPAGATION_REQUIRED</prop>
<prop key="save*">PROPAGATION_REQUIRED</prop>
<prop key="remove*">PROPAGATION_REQUIRED</prop>
<prop key="update*">PROPAGATION_REQUIRED</prop>
<prop key="del*">PROPAGATION_REQUIRED</prop>
<prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
</props>
</property>
</bean>
<bean id="userServiceTarget"
class="org.lr.bbs.service.imp.UserServiceImpl">
<property name="userDAO" ref="UserDAO"></property>
<property name="categoryDAO" ref="CategoryDAO"></property>
<property name="newDAO" ref="NewDAO"></property>
<property name="reNewDAO" ref="ReNewDAO"></property>
</bean>
<bean id="userService" parent="txProxyTemplate">
<property name="target" ref="userServiceTarget"></property>
</bean>
</beans>
Commons-logging.propertice源码
org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger
log4j。propertice
log4j.rootLogger=DEBUG,console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.SimpleLayout
Struts-Config源码
<controller processorClass="org.springframework.web.struts.
DelegatingRequestProcessor"/> |(1)
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property property="pathnames"
value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/>
</plug-in>
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="csntextConfigLocation" value="/WEB-INF/beans.xml"/>
</plug-in>