轻量级javaee最后工作流项目总结

来源:互联网 发布:java导出excel合并行 编辑:程序博客网 时间:2024/06/03 22:34
工作流系统涉及到的内容:
一.ssh框架整合
1.整合流程:
先整合可以测试的spring和Hibernate,测试没有问题之后再整合struts;
整合ssh细节及问题:
1)spring配置文件放置的位置问题:默认为:/WEB-INF/applicationContext.xml
;若放在其他地方配置好路径。若有多个配置文件需要启动是扫描,也需要进行配置<param-value>/WEB-INF/applicationContext.xml,
/WEB-INF/daoContext.xml</param-value>
2)若要测试spring需要进行加载applicationContext.xml获取javaBean
eg:通过ClassPathXml~读取applicationContext.xml  
然后获取ctx.getBean()来获取javaBean
3)Hibernate配置文件放在spring(applicationContext-db.xml基本不修改的配置文件)配置文件中减少配置文件的数量;
配置的只要几点:
a.配置数据源dataSource连接数据库,用数据库连接池-c3p0(可用jdbc.properties/p:~配置)
b.配置sessionFactory引用数据源dataSource,注:使用spring中的sessionFactory
类:org.springframework.orm.hibernate4.LocalSessionFactoryBean;同时配置
扫描持久化类:(参考:http://blog.csdn.net/v123411739/article/details/21295525)
扫描配置文件(hbm.xml): mappingResources(列出全部配置文件的全部路径)、mappingDirectoryLocations(扫描路径)
扫描注解(annotation):annotatedClasses(列出全部全限定类名)、packagesToScan(扫描包路径)
c.指定数据库方言、是否自动建表、是否生成SQL语句等
d.配置Hibernate的局部事务管理器,使用HibernateTransactionManager类
并注入SessionFactory的引用 
e.配置事务增强处理Bean,指定事务管理器
f.配置切入点
4)dao组件和业务逻辑组件:配置模板然后引用模板
a.dao组件为*Dao组件注入sessionFactory,dao继承了BaseDao即为为Hibernate注入sessionFactory
b.业务逻辑组件为*ServiceImpl注入*Dao
4.struts配置文件
1)常用常量constant

2)拦截器Interceptor~系统的和自定义的(看书)
a.struts2自带拦截器

<action name="first" class="action.FirstAction">

<interceptor-ref     name="logger"/>

<interceptor-ref     name="timer"/>

</action>

b.自定义拦截器
<interceptors>
<!-- 配置普通员工角色的权限检查拦截器 -->
<interceptor name="empAuth"class=
"com.lxt.ssh.action.authority.EmpAuthorityInterceptor"/>
<!-- 配置经理角色的权限检查拦截器 -->
<interceptor name="mgrAuth"class=
"com.lxt.ssh.action.authority.MgrAuthorityInterceptor"/>
<!-- 配置普通员工的默认的拦截器栈 -->
<interceptor-stack name="empStack">
<interceptor-ref name="defaultStack"/>

<interceptor-ref name="empAuth"/>

</interceptor-stack>

<!-- 配置经理的默认的拦截器栈 -->
<interceptor-stack name="mgrStack">
<interceptor-ref name="defaultStack"/>
<interceptor-ref name="mgrAuth"/>
</interceptor-stack>
</interceptors>
调用eg:
<!-- 查看自己的非正常出勤 -->
<action name="viewUnPunch" 
class="com.lxt.ssh.action.ViewUnAttendAction">
<!--  struts2自带拦截器-->
<interceptor-ref name="basicStack"/>
<!--  自定义拦截器-->
<interceptor-ref name="empAuth"/>
<result>/WEB-INF/content/employee/viewUnAttend.jsp</result>
</action>

3)全局变量的定义
 <global-results>
            <result name="error">/error.htm</result>
        </global-results>
 <global-exception-mappings>
            <exception-mapping exception="java.lang.Exception" result="error"/>
 </global-exception-mappings>

4)异常
a.全局异常(3中示例)
b.
5)后台表单验证
a.action中validate()验证
b.表单验证
6)转到另一个视图
<result type="chain">viewApp</result>、
viewApp也为一个action的name属性值
 二.spring中使用自由调度Quartz
 <!-- cronExpression指定Cron表达式:每月3日2时启动 -->
<bean id="cronTriggerPay" 
class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"
p:cronExpression="0 0 2 3 * ? *">
<property name="jobDetail">
<!-- 使用嵌套Bean的方式来定义任务Bean
jobClass指定任务Bean的实现类 -->
<bean class="org.springframework.scheduling.quartz.JobDetailFactoryBean"
p:jobClass="org.crazyit.hrsystem.schedule.PayJob"
p:durability="true">
<!-- 为任务Bean注入属性 -->
<property name="jobDataAsMap">
<map>
<entry key="empMgr" value-ref="empManager"/>
</map>
</property>
</bean>
</property>
</bean>
<!-- 定义触发器来管理任务Bean 
cronExpression指定Cron表达式:周一到周五7点、12点执行调度-->
<bean id="cronTriggerPunch" 
---------------------------
class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"
p:cronExpression="0 0 7,12 ? * MON-FRI">
----------------------------------------
<property name="jobDetail">
<!-- 使用嵌套Bean的方式来定义任务Bean
jobClass指定任务Bean的实现类 -->
<bean class="org.springframework.scheduling.quartz.JobDetailFactoryBean"
p:jobClass="org.crazyit.hrsystem.schedule.PunchJob"
--------------------------------------------------
p:durability="true">
<!-- 为任务Bean注入属性 -->
<property name="jobDataAsMap">
<map>
<entry key="empMgr" value-ref="empManager"/>
--------------------------------------------
</map>
</property>
</bean>
</property>
</bean>
 <!-- 执行实际的调度调度 -->
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="cronTriggerPay"/>
<ref bean="cronTriggerPunch"/>
---------------------------
</list>
</property>
</bean>










0 0
原创粉丝点击