文章目录
- 前言
- 一、项目设计
- 1. 模块设计
- 2. 实现效果
- 二、部分源码
- 项目源码
前言
今天学长向大家分享一个 Java web 毕业设计项目:
基于SSH的任务调度系统的设计与实现
一、项目设计
1. 模块设计
根据需求调研结果确定本任务调度系统的功能结构,最终系统实现的系统将分为组长和组员两个角色,其中两个角色共有功能包括修改登录密码、项目搜索、项目查看、项目管理、消息管理。组长部分的功能有任务管理、项目组成员管理,组员部分的功能有申请调动功能。
下面我们要发展的系统设计和基于信息系统的原则,系统模型系统的原则。我们对项目进行应用分层
1、开放接口层:直接封装Service接口,可以选择暴露成RPC接口;或者通过Web协议封装为http接口;网关控制层等,本项目中不提供此开放层。
2、终端显示层:各类客户端的模板渲染并执行的显示层。目前生产生活中主要是JSP渲染,JS渲染,velocity渲染,移动端展示层等,在本项目中主要变现为JS渲染。
3、Web层:对访问控制进行转发,业务逻辑前的预处理工作,如各类基本参数校验,或者简单业务处理等。
4、Service层:具体的业务逻辑服务层。
5、Manager层:通用业务处理层,包含特征:
1) 封装第三方平台,转化异常信息以及预处理业务和返回结果等;
2)下沉Service层通用能力,比如缓存方案、中间件通用处理;
3) 与DAO层交互,封装DAO的业务通用能力。缓存方案、中间件通用处理;
6、DAO层:数据访问层,与底层各类数据库或缓存方案进行数据交互。
7、外部接口或第三方平台:包括其他公司基础平台,或者RPC接口,也包括其它的HTTP接口,本项目中不依赖该层服务。
2. 实现效果
功能较多,学长这里就不一 一展示了
二、部分源码
源码较多,文章篇幅有限,这里就不放上来了,仅展示小部分关键代码
部分代码示例:
applicationContext-common.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans >
<!-- 启用spring注解支持 -->
<context:annotation-config />
<!-- 启动Spring自动扫描功能 -->
<context:component-scan base-package="com.fcq.schedule.job" />
<!--配数据源 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close">
<property name="driverClass" value="com.mysql.jdbc.Driver" />
<property name="jdbcUrl"
value="jdbc:mysql://localhost:3306/generation_design?characterEncoding=utf8&useSSL=true" />
<property name="user" value="root" />
<property name="password" value="123456" />
<property name="maxPoolSize" value="80" />
<property name="minPoolSize" value="1" />
<property name="initialPoolSize" value="1" />
<property name="maxIdleTime" value="20" />
</bean>
<!--定义Hibernate的SessionFactory -->
<!-- SessionFactory使用的数据源为上面的数据源 -->
<!-- 指定了Hibernate的映射文件和配置信息 -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="show_sql">true</prop>
<prop key="hibernate.jdbc.batch_size">20</prop>
<!-- 自动创建数据表 -->
<prop key="hibernate.hbm2ddl.auto">update</prop>
</props>
</property>
<!-- 使用配置文件 -->
<property name="mappingLocations">
<list>
<value>classpath:com/fcq/schedule/job/po/*.hbm.xml</value>
</list>
</property>
<!-- Spring自动加载annotatedClass -->
<!-- <property name="annotatedClasses"> <list> <value>com.jialin.entity.User</value>
</list> </property> -->
</bean>
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate5.HibernateTemplate">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<!-- 配置事务管理器 (声明式的事务) -->
<bean id="transactionManager"
class="org.springframework.orm.hibernate5.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<!-- 配置事务通知属性 -->
<tx:advice id="txadvice" transaction-manager="transactionManager">
<!-- 定义事务传播属性 -->
<tx:attributes>
<!-- <tx:method name="add*" propagation="REQUIRED" /> <tx:method name="delete*"
propagation="REQUIRED" /> <tx:method name="modify*" propagation="REQUIRED"
/> hibernate4必须配置为开启事务 否则 getCurrentSession()获取不到 <tx:method name="*" propagation="REQUIRED"
read-only="true" /> -->
<tx:method name="get*" read-only="false" propagation="REQUIRED" />
<tx:method name="find*" read-only="false" propagation="REQUIRED" />
<tx:method name="save*" read-only="false" propagation="REQUIRED" />
<tx:method name="reg*" read-only="false" propagation="REQUIRED" />
<tx:method name="modify*" read-only="false" propagation="REQUIRED" />
<tx:method name="remove*" read-only="false" propagation="REQUIRED" />
<tx:method name="*" propagation="REQUIRED" read-only="true" />
</tx:attributes>
</tx:advice>
<!-- 配置事务切面;那些类那些方法使用事务 -->
<aop:config>
<!-- 只对业务逻辑层实施事务 -->
<aop:pointcut id="allManagerMethod"
expression="execution(* com.fcq.schedule.job.service..*.*(..))" />
<aop:advisor pointcut-ref="allManagerMethod" advice-ref="txadvice" />
</aop:config>
</beans>
applicationContext-beans.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans >
<!-- Spring管理Struts2的Action -->
<bean name="registerAction" class="com.fcq.schedule.job.action.RegisterAction"
scope="prototype">
<property name="userManager" ref="userManager"></property>
</bean>
<bean name="loginAction" class="com.fcq.schedule.job.action.LoginAction"
scope="prototype">
<property name="userManager" ref="userManager"></property>
</bean>
<bean name="ajaxUserNameVerifyAction" class="com.fcq.schedule.job.action.AjaxUserNameVerifyAction"
scope="prototype">
<property name="userManager" ref="userManager"></property>
</bean>
<bean name="queryUserOrProjectAction" class="com.fcq.schedule.job.action.QueryUserOrProjectAction"
scope="prototype">
<property name="userManager" ref="userManager"></property>
<property name="projectManager" ref="projectManager"></property>
</bean>
<bean name="userMainAction" class="com.opensymphony.xwork2.ActionSupport"
scope="prototype"></bean>
<!-- Spring管理Struts2的Interceptor -->
<!-- <bean name="checkLoginInterceptor" class="com.fcq.schedule.job.interceptor.CheckLogin"
scope="prototype"></bean> -->
<!--用户业务逻辑类 -->
<bean name="userManager" class="com.fcq.schedule.job.service.impl.UserManagerImpl">
<property name="userDao" ref="baseDao"></property>
</bean>
<bean id="baseDao" class="com.fcq.schedule.job.dao.impl.UserDao">
<property name="hibernateTemplate" ref="hibernateTemplate" />
</bean>
<!-- 项目业务逻辑类 -->
<bean name="projectManager" class="com.fcq.schedule.job.service.impl.ProjectManagerImpl">
<property name="projectDao" ref="projectDao"></property>
</bean>
<bean id="projectDao" class="com.fcq.schedule.job.dao.impl.ProjectDao">
<property name="hibernateTemplate" ref="hibernateTemplate" />
</bean>
<!-- 任务业务逻辑类 -->
<bean name="jobManager" class="com.fcq.schedule.job.service.impl.JobManagerImpl">
<property name="jobDao" ref="jobDao"></property>
</bean>
<bean id="jobDao" class="com.fcq.schedule.job.dao.impl.JobDao">
<property name="hibernateTemplate" ref="hibernateTemplate" />
</bean>
<!-- 任务关系业务逻辑类 -->
<bean id="jobConnectionManager" class="com.fcq.schedule.job.service.impl.JobConnectionManagerImpl">
<property name="jobConnectionDao" ref="jobConnectionDao"></property>
</bean>
<bean id="jobConnectionDao" class="com.fcq.schedule.job.dao.impl.JobConnectionDao">
<property name="hibernateTemplate" ref="hibernateTemplate" />
</bean>
<!-- 消息业务逻辑类 -->
<bean id="messageManager" class="com.fcq.schedule.job.service.impl.MessageManagerImpl">
<property name="messageDao" ref="messageDao"></property>
</bean>
<bean id="messageDao" class="com.fcq.schedule.job.dao.impl.MessageDao">
<property name="hibernateTemplate" ref="hibernateTemplate" />
</bean>
</beans>