版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、JavaWeb项目开发培训Java Web项目开发培训Ssh2 + Jbpm4 + Oracle 10g2010.5JavaWeb项目开发培训l 程序开发规范l JBPM4基本概念l OA项目架构l SSH2 框架整合JavaWeb项目开发培训程序开发规范 参见附件编码开发规范及开发管理工作流程JavaWeb项目开发培训SSH2 框架整合(配置文件) Eclipse (galileo) struts2 hibernate3 spring2 Dynamic web project Web.xml Struts.xml Hibernate.cfg.xml applicationContext.xm
2、lJavaWeb项目开发培训Web.xml1,定义filter拦截用户请求 struts2 org.apache.struts2.dispatcher.FilterDispatcher 2,创建Spring容器 org.springframework.web.context.ContextLoaderListener JavaWeb项目开发培训Structs.xml /view/viewWork.jsp /view/viewWorkDraft.jsp /view/viewWorkEnd.jsp /comment/newWork.jsp /view/actionWork.jsp /finish.
3、jsp /error.jsp /view/viewTasklist.jsp /index1.jsp JavaWeb项目开发培训Hibernate.cfg.xmlorg.hibernate.dialect.OracleDialectoracle.jdbc.driver.OracleDriveroaaa2010 jdbc:oracle:thin::1521:orcl20 1 0 50 !- none-true JavaWeb项目开发培训applicationContext.xml (1) JavaWeb项目开发培训applicationContext.xml (2) Java
4、Web项目开发培训SSH2 框架整合(Model)POJO持久化对象,hibernate低侵入式的设计,虽然没有太多的要求,但建议遵守以下规则:1,无参构造器2,提供一个标识属性(映射主健)3,每个属性setter,getter4,重写equals() hashcode()public class Office implements Serializable private static final long serialVersionUID = -16534541L;private String office_id;private String office_code;/D:部门,C:公司,
5、S:体系,T:体系中心,G:总部中心,H:集团总部,E:体系中心部门,B:集团总部中心部门private String office_type;private String inputperson;private int is_dept=0;private int is_internal=0;JavaWeb项目开发培训SSH2 框架整合(Model)配置文件office.hbm.xml property name=office_type type=java.lang.String JavaWeb项目开发培训SSH2 框架整合(Model) 持久化对象状态 瞬态 由new操作创建,垃圾回收机制管
6、理 持久化 在数据库中有对应的记录,并拥有一个持久化标志符(自动保存到数据库) 脱管 曾经处于持久化但与之关联的session关闭 改变持久化对象状态的方法save,update,getJavaWeb项目开发培训Struts Action 业务控制器Action继承ActionSupport允许一个action内包含多个控制处理逻辑public class LoginAction extends ActionSupportOverridepublic String execute() throws Exception ActionContext ctx = ActionContext.getC
7、ontext();HttpServletRequest request = (HttpServletRequest)ctx.get(ServletActionContext.HTTP_REQUEST);HttpServletResponse response = (HttpServletResponse)ctx.get(ServletActionContext.HTTP_RESPONSE);request.setAttribute(menuArrayList, menuArrayList);。Return SUCCESSJavaWeb项目开发培训Struts Action 业务控制器 Acti
8、on处理用户请求结束后返回一个普通字符串-逻辑视图名,必须在struts.xml文件完成逻辑视图和物理视图资源的映射才可让系统转到实际的视图资源 /view/viewTasklist.jsp /index1.jsp struts2使用多种视图技术,jsp,redirect,streamJavaWeb项目开发培训Struts国际化全局资源文件,包资源文件定义与加载, Native_2ascii工具#button message#button messageu786eu5b9au91cdu7f6eu53d6u6d88u641cu7d22u5220u9664u6240u9009访问国际化消息(jsp
9、,action)JavaWeb项目开发培训DAO设计模式 目前可能极少有j2ee 应用会直接以jdbc方式进行持久层访问 DAO模式是一种标准的j2ee设计模式,核心思想:所有的数据库访问都通过dao组件完成,组件封装了数据库的增,删,改等原子操作,业务逻辑组件依赖dao提供的原子操作JavaWeb项目开发培训DAO设计模式 轻量级javaEE架构以sping Ioc为核心,向上管理表现层的action向下管理业务逻辑层组件,同时负责管理dao对象 Spring提供多种数据库访问技术的dao支持, Hibernate: HibernateDaoSupport HibernateTemplate
10、 HibernateCallbackJavaWeb项目开发培训DAO设计模式 public interface ProcessDao ProcessDefine get(String processid); Serializable save(ProcessDefine process); void update(ProcessDefine process); void update(String processid,ProcessDefine process); . public class ProcessDaoHibernate extends HibernateDaoSupport im
11、plements ProcessDaoJavaWeb项目开发培训DAO设计模式 管理hibernate的sessionFactory 持久层访问,单个数据库映射关系的内存镜像 Spring Ioc容器提供声明式配置sessionFactory实例,还可以注入数据源引用 JavaWeb项目开发培训DAO设计模式hibernateTemplate提供持久层访问模板化,无须实现特定接口,引用sessionFactory就可执行持久化操作对于web应用启动时自动创建applicationContext,可采用依赖注入实现sessionFactory和dao的解耦public class WorkDao
12、Hibernate extends HibernateDaoSupport implements WorkDao Overridepublic long countWorks(String usrId,int actived) 。return (Long)getHibernateTemplate().find(select count(*) from Work where actived=?,actived).get(0);JavaWeb项目开发培训DAO设计模式 hibernateTemplate提供很多实用方法完成基本操作,比如增加,删除,修改,查询等,spring2.x更增加了对命名sq
13、l查询的支持,分页的支持 Void delete(Object entity) Find(String queryString) findByNamedQuery(String queryName) Get(Class entityClass,Serialized id) Save(Object entity) Update(Object entity) setMaxResults(int maxResults)JavaWeb项目开发培训DAO设计模式 hibernateTemplate还提供一种更加灵活的方式来操作数据库: Object execute(hibernateCallback a
14、ction) List executeFind(hibernateCallback action) 以上都需要一个hibernateCallback实例,该实例可在任何有效的hibernate数据访问中使用 hibernateCallback是个接口,程序开发中必须实现接口里的doInHibernate方法JavaWeb项目开发培训DAO设计模式final String hsql=new String(from Work where usr_id=? and actived=? order by create_date desc);result=(ArrayList)getHibernateT
15、emplate().executeFind(new HibernateCallback()public Object doInHibernate(Session session) throws HibernateException,SQLExceptionList result=session.createQuery(hsql).setParameter(0, usrId).setParameter(1, actived).setFirstResult(pageSize*(currentPageNo-1).setMaxResults(pageSize).list();return result
16、;);JavaWeb项目开发培训DAO设计模式final String wkid=work.getWorkid();final int read=work.getUnread();getHibernateTemplate().execute(new HibernateCallback()public Object doInHibernate(Session session) throws HibernateException,SQLExceptionreturn session.createQuery(update WorkProcess set unread=? where work.wor
17、kid=? and assigneeid=?).setParameter(0, read).setParameter(1, wkid).setParameter(2, usrId).executeUpdate(););JavaWeb项目开发培训Hibernate使用 单向N-1关联 private Office superior_office; 批量插入与更新,数据量过大时抛出内存溢出异常,需要手工清空缓存,效果不好 DML批量更新与删除 Update | delete from where session.createQuery(delete WorkComments where work.
18、workid in (select workid from Work where bsid=?) .setParameter(0, attendId).executeUpdate();JavaWeb项目开发培训IoC容器 javaEE所需各种组件目前都已经出现,从mvc控制器组件到业务逻辑组件以及持久层dao组件,但并未直接耦合,组件与组件之间面向接口编程,所以还需要利用spring的IoC容器将它们组合在一起 public class WorkAction extends ActionSupport private ProcessDao processOP; private WorkDao
19、workOP; private ProcessEngine processEngine; private UserDao userOP; JavaWeb项目开发培训IoC容器 当用户发送一个请求后,该请求将被struts2核心控制器拦截核心控制器调用actionaction调用业务逻辑组件业务逻辑组件调用dao组件dao组件调用sessionFactory,Hibernate服务等,当整个过程完成后核心控制器就得到了请求被处理的结果,从而根据该结果选择合适的视图资源来生成响应这就完成了一个请求/响应的全过程。JavaWeb项目开发培训声明式事务 上面配置文件中部署了控制器组件,业务逻辑组件,d
20、ao组件,几乎可以形成一个完整的javaEE应用,但有一个小小的问题:事务控制。系统中没有任何事务逻辑,没有事务的应用是不可想象的。 Spring的事务机制非常优秀,允许我们在开发过程中无须理会任何事务逻辑,等到应用完成后使用声明式事务来进行统一的事务管理。 1,针对不同事务策略配置事务管理器 2,使用配置事务切面bean, 3,在使用配置事务代理。JavaWeb项目开发培训Java Server PageJSP页面内容由2部分组成静态部分:标准的html标签,静态的页面内容,与静态html页面相同动态部分:受java程序控制的内容,这些内容程序自动生成事实上每个jsp就是一个servlet实
21、例Jsp表达式Jsp脚本%For(int i=0;i!- 上面的循环控制标签的循环-value:JavaWeb项目开发培训Web应用的4个对象 几乎所有的web服务器都提供4个类似map的结构 Application 对于整个应用有效 Session 仅对一次会话有效 Request 仅对本次请求有效 Page 仅对当前页面有效 Jsp中的application,session,request,pageContext4个内置对象分别用于操作以上范围的数据JavaWeb项目开发培训EL表达式 EL表达式既可以和jsp结合也可以和jstl结合使用,从而大量地减少jsp页面中的java代码增强程序可
22、读性 作为java web开发人员需要熟悉el表达式的书写语法,熟练运用el的隐含对象 EL提供. 运算符存取对象 $ 算术运算符 + - * / % 关系运算符 = (eq) != (ne) (gt) = = $param.password1=param.password2 逻辑运算符 & | ! And or notJavaWeb项目开发培训EL隐含对象 pageContext 表示jsp页面上下文 pageScope page范围所有的属性名称及对应的值 requestScope request范围所有的属性名称及对应的值 sessionScope session范围所有的属性名
23、称及对应的值 applicationScope application范围所有的属性名称及对应的值JavaWeb项目开发培训JSTL标签技术 jsp标准标签库功能 配合EL表达式,显示表达式结果,设置与得到jsp页面中的变量或属性值 流程控制 JavaWeb项目开发培训Struts2对表达式的支持 支持EL jsp2.0标准表达式语言 OGNL 一种可以方便的操作对象属性的开源表达式语言,Struts2默认的表达式语言 OGNL上下文中的元素 request 包含当前HttpServletRequest的属性的map #ername 相当于request.getAttribute(“usern
24、ame”) session 包含当前HttpSession的属性的map #ername相当于session.getAttribute(“username”) attr 用于按照requestsessionapplication顺序访问JavaWeb项目开发培训Struts2标签,OGNL与集合 JavaWeb项目开发培训jQuery Javascript工具包 重点放在从html页面里获取元素并对其进行操作 把确保代码能够跨越所有主要的浏览器以一致性的方式工作 $(document).ready(function() $(“table tr:nth-child(even)”).addClas
25、s(“even”) jQuery选择器的威力 var or=$(selectid=positionid); $(#officeid).change(function()JavaWeb项目开发培训Ajax可以说近年来没有一项比ajax更有力的改变web的景观,无需重新加载页面而向服务器发起异步请求的这种能力,已经启用一整套全新的用户交互方式并使用富因特网应用而成为可能。$.getJSON(actionPositionJson?nocache=+new Date().getTime()+&office_id=+myofficeid,resultType:json,function(data
26、,textStatus) var myOptions=; for(var i=0;idata.length;i+)myOptions=myOptions+datai1+; $(#positionid).html(myOptions); );JavaWeb项目开发培训JBPM4基本概念 jBPM是一个可扩展、灵活的流程引擎, 它可以运行在独立的服务器上或者嵌入任何Java应用中。 一个流程定义是对过程的步骤的描述。 流程实例代表着流程定义的特殊执行例子 在jBPM内部通过各种服务相互作用。 服务接口可以从ProcessEngine中获得, 它是从Configuration构建的。 部署流程部署流
27、程 启动一个新的流程实例启动一个新的流程实例JavaWeb项目开发培训jDPL流程语言 JavaWeb项目开发培训控制流程控制流程Activities活动活动 start启动启动 说明一个流程的实例从哪里开始。 在一个流程里必须有一个开始节点。 一个流程必须至少拥有一个开始节点。 开始节点必须有一个向外的流向,这个流向会在流程启动的时候执行。JavaWeb项目开发培训控制流程控制流程Activities活动活动 decision决定节点决定节点在多个选择中选择一条路径。也可以当做是一个决定。 一个决定活动拥有很多个向外的转移。当一个流向到达一个决定活动时, 会自动执行并决定交给哪个向外的转移。
28、JavaWeb项目开发培训控制流程控制流程Activities活动活动 JavaWeb项目开发培训控制流程控制流程Activities活动活动 concurrency并发并发使用fork和join活动, 可以模拟流向(executions)的汇合。JavaWeb项目开发培训控制流程控制流程Activities活动活动 end结束结束默认情况下,结束活动会终结已完成流程处理实例。 因此在流程处理实例中, 仍然在活动的多个并发(concurrent)流向(concurrent) 也会结束。JavaWeb项目开发培训控制流程控制流程Activities活动活动 Task在任务组件中,为一个人创建一个
29、任务。 一个简单的任务会被分配给一个指定的用户 JavaWeb项目开发培训控制流程控制流程Activities活动活动 当一个新流程实例会被创建, 把order作为一个流程变量分配给它。 Map variables = new HashMap(); variables.put(order, new Order(johndoe); ProcessInstance processInstance = executionService .startProcessInstanceByKey(TaskAssignee, variables); 然后johndoe的任务列表可以像下面这样获得。 List taskList = taskService.findPersonalTasks(johndoe); 注意也可以使用纯文本, assignee=johndoe。 在这里,任务会被分配给johndoe。 JavaWeb项目开发培训控制流程控制流程A
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025小型便利店转让合同模板
- 2025设备租赁合同模板 设备租赁合同范本(机械设备公司)
- 供应链管理工具集及其数据分析功能
- 企业固定资产登记与管理数据可视化工具
- 人力资源管理培训课程表
- 《几何美学欣赏:美术鉴赏课程教案》
- 除夕夜放烟花的初中日记400字(12篇)
- 业务流程持续改进优化方案库
- 2025年广州心理健康B证班考试题及答案
- 第八章-海岸地貌
- 水电系统安装施工方案
- 荒山承包合同补充协议
- 2025高三思想政治高考一轮复习资料
- 从探索到深化:基于可信数据空间的公共数据运营报告2025
- 2025年医学检验副高职称答辩题库及答案
- 安徽省合肥市46中学2026届九年级物理第一学期期中调研模拟试题含解析
- 2025年中华人民共和国治安管理处罚法知识竞赛题库及答案(共50题)
- 市属国企后备干部选拔试题(附答案)
- 2025年公开招聘教师简章
- 高血压患者中医食疗指南及方案
- 固定资产采购验收流程与表格模板
评论
0/150
提交评论