JavaWeb项目开发培训.ppt

上传人:re****.1 文档编号:570256968 上传时间:2024-08-03 格式:PPT 页数:52 大小:417.50KB
返回 下载 相关 举报
JavaWeb项目开发培训.ppt_第1页
第1页 / 共52页
JavaWeb项目开发培训.ppt_第2页
第2页 / 共52页
JavaWeb项目开发培训.ppt_第3页
第3页 / 共52页
JavaWeb项目开发培训.ppt_第4页
第4页 / 共52页
JavaWeb项目开发培训.ppt_第5页
第5页 / 共52页
点击查看更多>>
资源描述

《JavaWeb项目开发培训.ppt》由会员分享,可在线阅读,更多相关《JavaWeb项目开发培训.ppt(52页珍藏版)》请在金锄头文库上搜索。

1、Java Web项目开发培训Ssh2 + Jbpm4 + Oracle 10g2010.5l 程序开发规范l JBPM4基本概念l OA项目架构l SSH2 框架整合程序开发规范参见附件编码开发规范及开发管理工作流程SSH2 框架整合(配置文件)Eclipse (galileo) struts2 hibernate3 spring2Dynamic web projectWeb.xmlStruts.xmlHibernate.cfg.xmlapplicationContext.xmlWeb.xml1,定义filter拦截用户请求 struts2 org.apache.struts2.dispatc

2、her.FilterDispatcher 2,创建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.xmlorg.hibernate.dial

3、ect.OracleDialectoracle.jdbc.driver.OracleDriveroaaa2010 jdbc:oracle:thin:172.168.0.1:1521:orcl20 1 0 50 !- none-true applicationContext.xml (1) applicationContext.xml (2) SSH2 框架整合(Model)POJO持久化对象,hibernate低侵入式的设计,虽然没有太多的要求,但建议遵守以下规则:1,无参构造器2,提供一个标识属性(映射主健)3,每个属性setter,getter4,重写equals() hashcode()

4、public class Office implements Serializable private static final long serialVersionUID = -1653454005033632771L;private String office_id;private String office_code;/D:部门,C:公司,S:体系,T:体系中心,G:总部中心,H:集团总部,E:体系中心部门,B:集团总部中心部门private String office_type;private String inputperson;private int is_dept=0;priva

5、te int is_internal=0;SSH2 框架整合(Model)配置文件office.hbm.xml property name=office_type type=java.lang.String SSH2 框架整合(Model)持久化对象状态瞬态 由new操作创建,垃圾回收机制管理持久化 在数据库中有对应的记录,并拥有一个持久化标志符(自动保存到数据库)脱管 曾经处于持久化但与之关联的session关闭改变持久化对象状态的方法save,update,getStruts Action 业务控制器Action继承ActionSupport允许一个action内包含多个控制处理逻辑pub

6、lic class LoginAction extends ActionSupportOverridepublic String execute() throws Exception ActionContext ctx = ActionContext.getContext();HttpServletRequest request = (HttpServletRequest)ctx.get(ServletActionContext.HTTP_REQUEST);HttpServletResponse response = (HttpServletResponse)ctx.get(ServletAc

7、tionContext.HTTP_RESPONSE);request.setAttribute(menuArrayList, menuArrayList);。Return SUCCESSStruts Action 业务控制器Action处理用户请求结束后返回一个普通字符串-逻辑视图名,必须在struts.xml文件完成逻辑视图和物理视图资源的映射才可让系统转到实际的视图资源 /view/viewTasklist.jsp /index1.jspstruts2使用多种视图技术,jsp,redirect,streamStruts国际化全局资源文件,包资源文件定义与加载, Native_2ascii工

8、具#button messagefilepage.button.ok=OKfilepage.button.reset=Resetfilepage.button.cancel=Cancelfilepage.button.search=Searchfilepage.button.delete=Delete#button messagefilepage.button.ok=u786eu5b9afilepage.button.reset=u91cdu7f6efilepage.button.cancel=u53d6u6d88filepage.button.search=u641cu7d22filepag

9、e.button.delete=u5220u9664u6240u9009访问国际化消息(jsp,action)DAO设计模式目前可能极少有j2ee 应用会直接以jdbc方式进行持久层访问DAO模式是一种标准的j2ee设计模式,核心思想:所有的数据库访问都通过dao组件完成,组件封装了数据库的增,删,改等原子操作,业务逻辑组件依赖dao提供的原子操作DAO设计模式轻量级javaEE架构以sping Ioc为核心,向上管理表现层的action向下管理业务逻辑层组件,同时负责管理dao对象Spring提供多种数据库访问技术的dao支持,Hibernate: HibernateDaoSupportHi

10、bernateTemplateHibernateCallbackDAO设计模式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 impleme

11、nts ProcessDaoDAO设计模式管理hibernate的sessionFactory持久层访问,单个数据库映射关系的内存镜像Spring Ioc容器提供声明式配置sessionFactory实例,还可以注入数据源引用 DAO设计模式hibernateTemplate提供持久层访问模板化,无须实现特定接口,引用sessionFactory就可执行持久化操作对于web应用启动时自动创建applicationContext,可采用依赖注入实现sessionFactory和dao的解耦public class WorkDaoHibernate extends HibernateDaoSupp

12、ort implements WorkDao Overridepublic long countWorks(String usrId,int actived) 。return (Long)getHibernateTemplate().find(select count(*) from Work where actived=?,actived).get(0);DAO设计模式hibernateTemplate提供很多实用方法完成基本操作,比如增加,删除,修改,查询等,spring2.x更增加了对命名sql查询的支持,分页的支持Void delete(Object entity)Find(Strin

13、g queryString)findByNamedQuery(String queryName)Get(Class entityClass,Serialized id)Save(Object entity)Update(Object entity)setMaxResults(int maxResults)DAO设计模式hibernateTemplate还提供一种更加灵活的方式来操作数据库:Object execute(hibernateCallback action)List executeFind(hibernateCallback action)以上都需要一个hibernateCallba

14、ck实例,该实例可在任何有效的hibernate数据访问中使用hibernateCallback是个接口,程序开发中必须实现接口里的doInHibernate方法DAO设计模式final String hsql=new String(from Work where usr_id=? and actived=? order by create_date desc);result=(ArrayList)getHibernateTemplate().executeFind(new HibernateCallback()public Object doInHibernate(Session sessi

15、on) throws HibernateException,SQLExceptionList result=session.createQuery(hsql).setParameter(0, usrId).setParameter(1, actived).setFirstResult(pageSize*(currentPageNo-1).setMaxResults(pageSize).list();return result;);DAO设计模式final String wkid=work.getWorkid();final int read=work.getUnread();getHibern

16、ateTemplate().execute(new HibernateCallback()public Object doInHibernate(Session session) throws HibernateException,SQLExceptionreturn session.createQuery(update WorkProcess set unread=? where work.workid=? and assigneeid=?).setParameter(0, read).setParameter(1, wkid).setParameter(2, usrId).executeU

17、pdate(););Hibernate使用单向N-1关联private Office superior_office;批量插入与更新,数据量过大时抛出内存溢出异常,需要手工清空缓存,效果不好DML批量更新与删除Update | delete from where session.createQuery(delete WorkComments where work.workid in (select workid from Work where bsid=?).setParameter(0, attendId).executeUpdate();IoC容器javaEE所需各种组件目前都已经出现,从

18、mvc控制器组件到业务逻辑组件以及持久层dao组件,但并未直接耦合,组件与组件之间面向接口编程,所以还需要利用spring的IoC容器将它们组合在一起public class WorkAction extends ActionSupport private ProcessDao processOP;private WorkDao workOP;private ProcessEngine processEngine;private UserDao userOP;IoC容器当用户发送一个请求后,该请求将被struts2核心控制器拦截核心控制器调用actionaction调用业务逻辑组件业务逻辑组件

19、调用dao组件dao组件调用sessionFactory,Hibernate服务等,当整个过程完成后核心控制器就得到了请求被处理的结果,从而根据该结果选择合适的视图资源来生成响应这就完成了一个请求/响应的全过程。声明式事务上面配置文件中部署了控制器组件,业务逻辑组件,dao组件,几乎可以形成一个完整的javaEE应用,但有一个小小的问题:事务控制。系统中没有任何事务逻辑,没有事务的应用是不可想象的。Spring的事务机制非常优秀,允许我们在开发过程中无须理会任何事务逻辑,等到应用完成后使用声明式事务来进行统一的事务管理。1,针对不同事务策略配置事务管理器2,使用配置事务切面bean,3,在使用

20、配置事务代理。Java Server PageJSP页面内容由2部分组成静态部分:标准的html标签,静态的页面内容,与静态html页面相同动态部分:受java程序控制的内容,这些内容程序自动生成事实上每个jsp就是一个servlet实例Jsp表达式Jsp脚本%For(int i=0;i!- 上面的循环控制标签的循环-value:Web应用的4个对象几乎所有的web服务器都提供4个类似map的结构Application 对于整个应用有效Session 仅对一次会话有效Request 仅对本次请求有效Page 仅对当前页面有效Jsp中的application,session,request,pa

21、geContext4个内置对象分别用于操作以上范围的数据EL表达式EL表达式既可以和jsp结合也可以和jstl结合使用,从而大量地减少jsp页面中的java代码增强程序可读性作为java web开发人员需要熟悉el表达式的书写语法,熟练运用el的隐含对象EL提供. 运算符存取对象$sessionScope.user.name算术运算符 + - * / %关系运算符 = (eq) != (ne) (gt) = =$param.password1=param.password2逻辑运算符 & | ! And or notEL隐含对象pageContext 表示jsp页面上下文pageScope p

22、age范围所有的属性名称及对应的值requestScope request范围所有的属性名称及对应的值sessionScope session范围所有的属性名称及对应的值applicationScope application范围所有的属性名称及对应的值JSTL标签技术jsp标准标签库功能配合EL表达式,显示表达式结果,设置与得到jsp页面中的变量或属性值流程控制 Struts2对表达式的支持支持EL jsp2.0标准表达式语言OGNL 一种可以方便的操作对象属性的开源表达式语言,Struts2默认的表达式语言OGNL上下文中的元素request 包含当前HttpServletRequest的

23、属性的map #request.username 相当于request.getAttribute(“username”)session 包含当前HttpSession的属性的map#session.username相当于session.getAttribute(“username”)attr 用于按照requestsessionapplication顺序访问Struts2标签,OGNL与集合jQueryJavascript工具包重点放在从html页面里获取元素并对其进行操作把确保代码能够跨越所有主要的浏览器以一致性的方式工作$(document).ready(function()$(“tabl

24、e tr:nth-child(even)”).addClass(“even”)jQuery选择器的威力var or=$(selectid=positionid);$(#officeid).change(function()Ajax可以说近年来没有一项比ajax更有力的改变web的景观,无需重新加载页面而向服务器发起异步请求的这种能力,已经启用一整套全新的用户交互方式并使用富因特网应用而成为可能。$.getJSON(actionPositionJson?nocache=+new Date().getTime()+&office_id=+myofficeid,resultType:json,fun

25、ction(data,textStatus) var myOptions=; for(var i=0;idata.length;i+)myOptions=myOptions+datai1+; $(#positionid).html(myOptions); );JBPM4基本概念jBPM是一个可扩展、灵活的流程引擎, 它可以运行在独立的服务器上或者嵌入任何Java应用中。一个流程定义是对过程的步骤的描述。流程实例代表着流程定义的特殊执行例子在jBPM内部通过各种服务相互作用。 服务接口可以从ProcessEngine中获得, 它是从Configuration构建的。部署流程部署流程启动一个新的流

26、程实例启动一个新的流程实例jDPL流程语言 控制流程控制流程Activities活动活动start启动启动说明一个流程的实例从哪里开始。 在一个流程里必须有一个开始节点。 一个流程必须至少拥有一个开始节点。 开始节点必须有一个向外的流向,这个流向会在流程启动的时候执行。控制流程控制流程Activities活动活动decision决定节点决定节点在多个选择中选择一条路径。也可以当做是一个决定。 一个决定活动拥有很多个向外的转移。当一个流向到达一个决定活动时, 会自动执行并决定交给哪个向外的转移。控制流程控制流程Activities活动活动 控制流程控制流程Activities活动活动concur

27、rency并发并发使用fork和join活动, 可以模拟流向(executions)的汇合。控制流程控制流程Activities活动活动end结束结束默认情况下,结束活动会终结已完成流程处理实例。 因此在流程处理实例中, 仍然在活动的多个并发(concurrent)流向(concurrent) 也会结束。控制流程控制流程Activities活动活动Task在任务组件中,为一个人创建一个任务。一个简单的任务会被分配给一个指定的用户 控制流程控制流程Activities活动活动当一个新流程实例会被创建, 把order作为一个流程变量分配给它。Map variables = new HashMap(

28、); variables.put(order, new Order(johndoe); ProcessInstance processInstance = executionService .startProcessInstanceByKey(TaskAssignee, variables); 然后johndoe的任务列表可以像下面这样获得。List taskList = taskService.findPersonalTasks(johndoe); 注意也可以使用纯文本, assignee=johndoe。 在这里,任务会被分配给johndoe。 控制流程控制流程Activities活动活动

29、任务变量任务变量任务可以读取,更新流程变量。 稍后任务可以选择定义任务本地流程变量。 任务变量是任务表单的一个很重要的部分。 任务表单显示来自任务和流程实例的数据。 然后从用户一侧录入的数据会转换成设置的任务变量。 获得任务变量就像这样:List taskList = taskService.findPersonalTasks(johndoe); Task task = taskList.get(0); long taskDbid = task.getDbid(); Set variableNames = taskService.getVariableNames(taskDbid); Map

30、variables = taskService.getVariables(taskDbid, variableNames); 设置任务变量就像这样:variables = new HashMap(); variables.put(category, small); variables.put(lires, 923874893); taskService.setVariables(taskDbid, variables);自动活动自动活动java任务。流程处理的流向会执行 这个活动配置的方法。 OA架构OA系统应该是协同办公系统,在统一的企业信息平台上实现行政、人事、财务、业务、客户、决策等处理,使所有员工都在统一且个性化的信息门户中一起工作,摆脱时间和地域的限制,实现协同工作与知识管理。OA架构OA系统按照具体功能可以细化模块,研发按照阶段实施:行政OA管理:审批控制、跟踪与电子归档(包括发文,项目,资产,其他事务性审批等)。员工门户:员工日常办公流程审批,跟踪与归档(包括请休假,工作日程,培训,其他个人信息查询等)。电子档案:提供统一的档案编号及电子文件上传,下载,检索及备份功能。人事管理:组织规划,招聘,培训,入职,离职,薪酬,考勤,绩效考核,其他人事事务审批等。OA功能模块组织架构,人员,职位流程定义流程创建与执行流程管理个人门户HR管理用户,角色,权限

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号