JavaWeb项目开发培训.ppt

上传人:tia****nde 文档编号:11496752 上传时间:2020-04-25 格式:PPT 页数:52 大小:417.50KB
返回 下载 相关 举报
JavaWeb项目开发培训.ppt_第1页
第1页 / 共52页
JavaWeb项目开发培训.ppt_第2页
第2页 / 共52页
JavaWeb项目开发培训.ppt_第3页
第3页 / 共52页
点击查看更多>>
资源描述
JavaWeb项目开发培训,Ssh2+Jbpm4+Oracle10g2010.5,程序开发规范,JBPM4基本概念,OA项目架构,SSH2框架整合,程序开发规范,参见附件编码开发规范及开发管理工作流程,SSH2框架整合(配置文件),Eclipse(galileo)struts2hibernate3spring2DynamicwebprojectWeb.xmlStruts.xmlHibernate.cfg.xmlapplicationContext.xml,Web.xml,1,定义filter拦截用户请求struts2org.apache.struts2.dispatcher.FilterDispatcher2,创建Spring容器org.springframework.web.context.ContextLoaderListener,Structs.xml,/view/viewWork.jsp/view/viewWorkDraft.jsp/view/viewWorkEnd.jsp/comment/newWork.jsp/view/actionWork.jsp/finish.jsp/error.jsp/view/viewTasklist.jsp/index1.jsp,Hibernate.cfg.xml,org.hibernate.dialect.OracleDialectoracle.jdbc.driver.OracleDriveroaaa2010jdbc:oracle:thin:172.168.0.1:1521:orcl201050none-true,applicationContext.xml(1),applicationContext.xml(2),SSH2框架整合(Model),POJO持久化对象,hibernate低侵入式的设计,虽然没有太多的要求,但建议遵守以下规则:1,无参构造器2,提供一个标识属性(映射主健)3,每个属性setter,getter4,重写equals()hashcode()publicclassOfficeimplementsSerializableprivatestaticfinallongserialVersionUID=-1653454005033632771L;privateStringoffice_id;privateStringoffice_code;/D:部门,C:公司,S:体系,T:体系中心,G:总部中心,H:集团总部,E:体系中心部门,B:集团总部中心部门privateStringoffice_type;privateStringinputperson;privateintis_dept=0;privateintis_internal=0;,SSH2框架整合(Model),配置文件office.hbm.xml,SSH2框架整合(Model),持久化对象状态瞬态由new操作创建,垃圾回收机制管理持久化在数据库中有对应的记录,并拥有一个持久化标志符(自动保存到数据库)脱管曾经处于持久化但与之关联的session关闭改变持久化对象状态的方法save,update,get,StrutsAction业务控制器,Action继承ActionSupport允许一个action内包含多个控制处理逻辑publicclassLoginActionextendsActionSupportOverridepublicStringexecute()throwsExceptionActionContextctx=ActionContext.getContext();HttpServletRequestrequest=(HttpServletRequest)ctx.get(ServletActionContext.HTTP_REQUEST);HttpServletResponseresponse=(HttpServletResponse)ctx.get(ServletActionContext.HTTP_RESPONSE);request.setAttribute(menuArrayList,menuArrayList);。ReturnSUCCESS,StrutsAction业务控制器,Action处理用户请求结束后返回一个普通字符串-逻辑视图名,必须在struts.xml文件完成逻辑视图和物理视图资源的映射才可让系统转到实际的视图资源/view/viewTasklist.jsp/index1.jspstruts2使用多种视图技术,jsp,redirect,stream,Struts国际化,全局资源文件,包资源文件定义与加载,Native_2ascii工具#buttonmessagefilepage.button.ok=OKfilepage.button.reset=Resetfilepage.button.cancel=Cancelfilepage.button.search=Searchfilepage.button.delete=Delete#buttonmessagefilepage.button.ok=u786eu5b9afilepage.button.reset=u91cdu7f6efilepage.button.cancel=u53d6u6d88filepage.button.search=u641cu7d22filepage.button.delete=u5220u9664u6240u9009访问国际化消息(jsp,action),DAO设计模式,目前可能极少有j2ee应用会直接以jdbc方式进行持久层访问DAO模式是一种标准的j2ee设计模式,核心思想:所有的数据库访问都通过dao组件完成,组件封装了数据库的增,删,改等原子操作,业务逻辑组件依赖dao提供的原子操作,DAO设计模式,轻量级javaEE架构以spingIoc为核心,向上管理表现层的action向下管理业务逻辑层组件,同时负责管理dao对象Spring提供多种数据库访问技术的dao支持,Hibernate:HibernateDaoSupportHibernateTemplateHibernateCallback,DAO设计模式,publicinterfaceProcessDaoProcessDefineget(Stringprocessid);Serializablesave(ProcessDefineprocess);voidupdate(ProcessDefineprocess);voidupdate(Stringprocessid,ProcessDefineprocess);.publicclassProcessDaoHibernateextendsHibernateDaoSupportimplementsProcessDao,DAO设计模式,管理hibernate的sessionFactory持久层访问,单个数据库映射关系的内存镜像SpringIoc容器提供声明式配置sessionFactory实例,还可以注入数据源引用,DAO设计模式,hibernateTemplate提供持久层访问模板化,无须实现特定接口,引用sessionFactory就可执行持久化操作对于web应用启动时自动创建applicationContext,可采用依赖注入实现sessionFactory和dao的解耦publicclassWorkDaoHibernateextendsHibernateDaoSupportimplementsWorkDaoOverridepubliclongcountWorks(StringusrId,intactived)。return(Long)getHibernateTemplate().find(selectcount(*)fromWorkwhereactived=?,actived).get(0);,DAO设计模式,hibernateTemplate提供很多实用方法完成基本操作,比如增加,删除,修改,查询等,spring2.x更增加了对命名sql查询的支持,分页的支持Voiddelete(Objectentity)Find(StringqueryString)findByNamedQuery(StringqueryName)Get(ClassentityClass,Serializedid)Save(Objectentity)Update(Objectentity)setMaxResults(intmaxResults),DAO设计模式,hibernateTemplate还提供一种更加灵活的方式来操作数据库:Objectexecute(hibernateCallbackaction)ListexecuteFind(hibernateCallbackaction)以上都需要一个hibernateCallback实例,该实例可在任何有效的hibernate数据访问中使用hibernateCallback是个接口,程序开发中必须实现接口里的doInHibernate方法,DAO设计模式,finalStringhsql=newString(fromWorkwhereusr_id=?andactived=?orderbycreate_datedesc);result=(ArrayList)getHibernateTemplate().executeFind(newHibernateCallback()publicObjectdoInHibernate(Sessionsession)throwsHibernateException,SQLExceptionListresult=session.createQuery(hsql).setParameter(0,usrId).setParameter(1,actived).setFirstResult(pageSize*(currentPageNo-1).setMaxResults(pageSize).list();returnresult;);,DAO设计模式,finalStringwkid=work.getWorkid();finalintread=work.getUnread();getHibernateTemplate().execute(newHibernateCallback()publicObjectdoInHibernate(Sessionsession)throwsHibernateException,SQLExceptionreturnsession.createQuery(updateWorkProcesssetunread=?wherework.workid=?andassigneeid=?).setParameter(0,read).setParameter(1,wkid).setParameter(2,usrId).executeUpdate(););,Hibernate使用,单向N-1关联privateOfficesuperior_office;批量插入与更新,数据量过大时抛出内存溢出异常,需要手工清空缓存,效果不好DML批量更新与删除Update|deletefromwheresession.createQuery(deleteWorkCommentswherework.workidin(selectworkidfromWorkwherebsid=?).setParameter(0,attendId).executeUpdate();,IoC容器,javaEE所需各种组件目前都已经出现,从mvc控制器组件到业务逻辑组件以及持久层dao组件,但并未直接耦合,组件与组件之间面向接口编程,所以还需要利用spring的IoC容器将它们组合在一起publicclassWorkActionextendsActionSupportprivateProcessDaoprocessOP;privateWorkDaoworkOP;privateProcessEngineprocessEngine;privateUserDaouserOP;,IoC容器,当用户发送一个请求后,该请求将被struts2核心控制器拦截核心控制器调用actionaction调用业务逻辑组件业务逻辑组件调用dao组件dao组件调用sessionFactory,Hibernate服务等,当整个过程完成后核心控制器就得到了请求被处理的结果,从而根据该结果选择合适的视图资源来生成响应这就完成了一个请求/响应的全过程。,声明式事务,上面配置文件中部署了控制器组件,业务逻辑组件,dao组件,几乎可以形成一个完整的javaEE应用,但有一个小小的问题:事务控制。系统中没有任何事务逻辑,没有事务的应用是不可想象的。Spring的事务机制非常优秀,允许我们在开发过程中无须理会任何事务逻辑,等到应用完成后使用声明式事务来进行统一的事务管理。1,针对不同事务策略配置事务管理器2,使用配置事务切面bean,3,在使用配置事务代理。,JavaServerPage,JSP页面内容由2部分组成静态部分:标准的html标签,静态的页面内容,与静态html页面相同动态部分:受java程序控制的内容,这些内容程序自动生成事实上每个jsp就是一个servlet实例Jsp表达式Jsp脚本标签的循环-value:,Web应用的4个对象,几乎所有的web服务器都提供4个类似map的结构Application对于整个应用有效Session仅对一次会话有效Request仅对本次请求有效Page仅对当前页面有效Jsp中的application,session,request,pageContext4个内置对象分别用于操作以上范围的数据,EL表达式,EL表达式既可以和jsp结合也可以和jstl结合使用,从而大量地减少jsp页面中的java代码增强程序可读性作为javaweb开发人员需要熟悉el表达式的书写语法,熟练运用el的隐含对象EL提供.运算符存取对象$sessionScope.user.name算术运算符+-*/%关系运算符=(eq)!=(ne)(gt)=$param.password1=param.password2逻辑运算符$(#officeid).change(function(),Ajax,可以说近年来没有一项比ajax更有力的改变web的景观,无需重新加载页面而向服务器发起异步请求的这种能力,已经启用一整套全新的用户交互方式并使用富因特网应用而成为可能。$.getJSON(actionPositionJson?nocache=+newDate().getTime()+,JBPM4基本概念,jBPM是一个可扩展、灵活的流程引擎,它可以运行在独立的服务器上或者嵌入任何Java应用中。一个流程定义是对过程的步骤的描述。流程实例代表着流程定义的特殊执行例子在jBPM内部通过各种服务相互作用。服务接口可以从ProcessEngine中获得,它是从Configuration构建的。部署流程启动一个新的流程实例,jDPL流程语言,控制流程Activities活动,start启动说明一个流程的实例从哪里开始。在一个流程里必须有一个开始节点。一个流程必须至少拥有一个开始节点。开始节点必须有一个向外的流向,这个流向会在流程启动的时候执行。,控制流程Activities活动,decision决定节点在多个选择中选择一条路径。也可以当做是一个决定。一个决定活动拥有很多个向外的转移。当一个流向到达一个决定活动时,会自动执行并决定交给哪个向外的转移。,控制流程Activities活动,控制流程Activities活动,concurrency并发使用fork和join活动,可以模拟流向(executions)的汇合。,控制流程Activities活动,end结束默认情况下,结束活动会终结已完成流程处理实例。因此在流程处理实例中,仍然在活动的多个并发(concurrent)流向(concurrent)也会结束。,控制流程Activities活动,Task在任务组件中,为一个人创建一个任务。一个简单的任务会被分配给一个指定的用户,控制流程Activities活动,当一个新流程实例会被创建,把order作为一个流程变量分配给它。Mapvariables=newHashMap();variables.put(order,newOrder(johndoe);ProcessInstanceprocessInstance=executionService.startProcessInstanceByKey(TaskAssignee,variables);然后johndoe的任务列表可以像下面这样获得。ListtaskList=taskService.findPersonalTasks(johndoe);注意也可以使用纯文本,assignee=johndoe。在这里,任务会被分配给johndoe。,控制流程Activities活动,任务变量任务可以读取,更新流程变量。稍后任务可以选择定义任务本地流程变量。任务变量是任务表单的一个很重要的部分。任务表单显示来自任务和流程实例的数据。然后从用户一侧录入的数据会转换成设置的任务变量。获得任务变量就像这样:ListtaskList=taskService.findPersonalTasks(johndoe);Tasktask=taskList.get(0);longtaskDbid=task.getDbid();SetvariableNames=taskService.getVariableNames(taskDbid);Mapvariables=taskService.getVariables(taskDbid,variableNames);设置任务变量就像这样:variables=newHashMap();variables.put(category,small);variables.put(lires,923874893);taskService.setVariables(taskDbid,variables);,自动活动,java任务。流程处理的流向会执行这个活动配置的方法。,OA架构,OA系统应该是协同办公系统,在统一的企业信息平台上实现行政、人事、财务、业务、客户、决策等处理,使所有员工都在统一且个性化的信息门户中一起工作,摆脱时间和地域的限制,实现协同工作与知识管理。,OA架构,OA系统按照具体功能可以细化模块,研发按照阶段实施:行政OA管理:审批控制、跟踪与电子归档(包括发文,项目,资产,其他事务性审批等)。员工门户:员工日常办公流程审批,跟踪与归档(包括请休假,工作日程,培训,其他个人信息查询等)。电子档案:提供统一的档案编号及电子文件上传,下载,检索及备份功能。人事管理:组织规划,招聘,培训,入职,离职,薪酬,考勤,绩效考核,其他人事事务审批等。,OA功能模块,组织架构,人员,职位流程定义流程创建与执行流程管理个人门户HR管理用户,角色,权限,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!