《框架技术概述》PPT课件.ppt
第第第第1 1章章章章 JavaEEJavaEE框架技框架技框架技框架技术术概述概述概述概述B/S开发涉及的技术内容开发涉及的技术内容程序设计基础程序设计基础(第第1学期学期)HTML网站设计网站设计(第第2学期学期)B/S开发将涉及开发将涉及4个学期所学的诸多课程个学期所学的诸多课程数据库数据库(第第1学期学期)第一阶段第一阶段第二阶段第二阶段JavaEE框架技术框架技术(Struts/Spring/Hibernate/Ajax)(第第4学期学期)JAVAEE开发基础开发基础(JSP/Servlet/JavaBean)(第第4学期学期)第三阶段第三阶段JSP动态网站开发技术动态网站开发技术(第第3学期学期)高级高级Java编程编程(第第2学期学期)JavaScript(第第3学期学期)本门课程目标本门课程目标学完本门课程后,你能够:学完本门课程后,你能够:学会使用学会使用Struts规范程序结构规范程序结构学会使用学会使用Hibernate简化数据库访问操作简化数据库访问操作学会使用学会使用Spring提高开发效率提高开发效率学会使用学会使用Ajax提高用户体验提高用户体验 课程项目展示课程项目展示“SSHA论坛系统论坛系统”演示演示演示:演示:SSHA论坛系统论坛系统系统的后台系统的后台后台主要由以下三个部分:后台主要由以下三个部分:论坛的管理:添加、修改、删论坛的管理:添加、修改、删除除用户的管理:修改、删除用户的管理:修改、删除帖子的管理:删除帖子的管理:删除相关课程回顾相关课程回顾构建友好、美观的界面:构建友好、美观的界面:JSPJavaScript以以OO方式描述业务逻辑:方式描述业务逻辑:Java OOP框架技术的基础:框架技术的基础:ServletJavaBean程序架构:程序架构:MVC三层结构三层结构思考问题思考问题根据你的理解,谈谈什么是框架?根据你的理解,谈谈什么是框架?框架能给我们带来什么好处?框架能给我们带来什么好处?举两个框架的例子。举两个框架的例子。本章任务本章任务实现一个自定义框架实现一个自定义框架基于基于Servlet技术技术是是MVC的一个实现的一个实现类似类似Struts框架框架在这个框架上实现:在这个框架上实现:加法器加法器登录功能登录功能知道使用框架技术的好处知道使用框架技术的好处掌握掌握MVC控制器实现原理控制器实现原理了解常用了解常用Java框架的应用优势框架的应用优势本章目标本章目标 为什么需要框架技术为什么需要框架技术如何更快更好地写简历?如何更快更好地写简历?使用使用Word简历模板简历模板思考:思考:使用模板有什么好处呢?使用模板有什么好处呢?结构统一,便于人事阅读结构统一,便于人事阅读不用考虑布局、排版等,提高效率不用考虑布局、排版等,提高效率可专心在简历内容上可专心在简历内容上新手也可以作出专业的简历新手也可以作出专业的简历为什么需要框架技术为什么需要框架技术如何更快更好地盖房子?如何更快更好地盖房子?使用预制的架构使用预制的架构如何更快更好地做软件呢?如何更快更好地做软件呢?什么是框架技术什么是框架技术“框架技术框架技术”帮我们更帮我们更快快更更好好地构建程序:地构建程序:是一个应用程序的半成品是一个应用程序的半成品提供可重用的公共结构提供可重用的公共结构按一定规则组织的一组组件按一定规则组织的一组组件优势:优势:不用再考虑公共问题不用再考虑公共问题专心在业务实现上专心在业务实现上结构统一,易于学习、维护结构统一,易于学习、维护新手也可写出好程序新手也可写出好程序 直接组装汽车,不用自己造轮子直接组装汽车,不用自己造轮子站在巨人的肩膀上,享用前人经验和智慧站在巨人的肩膀上,享用前人经验和智慧概念辨析概念辨析技术、组件、框架和系统技术、组件、框架和系统Java流行框架流行框架大名鼎鼎的大名鼎鼎的SSHSSH回顾:三层结构回顾:三层结构三层结构指的是?三层结构指的是?和和.NET中三层结构的对比中三层结构的对比三层结构在三层结构在Java中的应用中的应用分层原则分层原则各层职责明确各层职责明确上一层调下一层上一层调下一层课程安排课程安排 1234学习顺序学习顺序贯穿案例贯穿案例小结小结举例说明,什么是框架?举例说明,什么是框架?本门课程,我们将学习哪几个框架?本门课程,我们将学习哪几个框架?Struts是做什么用的框架?是做什么用的框架?Hibernate是做什么用的框架?是做什么用的框架?回顾:回顾:MVC设计模式设计模式MVC的含义的含义M Model(模型)(模型)处理业务逻辑处理业务逻辑V View(视图)(视图)展现数据,获得用户输入展现数据,获得用户输入C Controllor(控制器)(控制器)接收用户输入,调用业务代码接收用户输入,调用业务代码(M),返回数据到视图(),返回数据到视图(V)MVC的目的的目的将模型(业务逻辑)和将模型(业务逻辑)和视图(页面展示)分离视图(页面展示)分离自定义自定义MVC框架框架问题:实现自定义问题:实现自定义MVC框架框架目的:目的:规范规范Java Web应用开发应用开发实现实现MVC模式(保证视图与模型分离)模式(保证视图与模型分离)实现:实现:结构、控制流程与核心组件(结构、控制流程与核心组件(Action和和Controller)演示示例:演示示例:Action接口和接口和Controller Servlet代码代码实现加法器实现加法器基于框架开发:实现加法器基于框架开发:实现加法器1、开发模型:、开发模型:Calculator类。类。2、开开发发视视图图:页页面面add.jsp和和页页面面add_result.jsp。3、创建、创建Action接口接口 4、创创建建AddAction,实实现现Action接口接口5、开开 发发 Controller类类,添添 加加 对对AddAction的支持。的支持。6、web.xml中中添添加加过过滤滤器器,指指定定自自定义框架定义框架演示示例:演示示例:基于自定义框架开发加法器基于自定义框架开发加法器Calculator类类package org.sf.ssha.biz;/计算器业务类计算器业务类public class Calculator public double add(double a,double b)return a+b;public double del(double a,double b)return a-b;public double mul(double a,double b)return a*b;public double div(double a,double b)if(b!=0)return a/b;elsereturn 0;add.jsp 第一个数:第一个数:第二个数:第二个数:add_result.jsp 第一个数:第一个数:$param.num1 第二个数:第二个数:$param.num1 计算结果:计算结果:$requestScope.result action接口接口MyAction.javapackage org.sf.ssha.framework;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public interface MyAction public String execute(HttpServletRequest request,HttpServletResponse response);action的实现类的实现类package org.sf.ssha.action;public class AddAction implements MyAction Calculator biz=new Calculator();/业务类业务类public String execute(HttpServletRequest request,HttpServletResponse response)/接收数据接收数据double num1=Double.parseDouble(request.getParameter(num1);double num2=Double.parseDouble(request.getParameter(num2);/调用业务方法执行业务操作调用业务方法执行业务操作double result=biz.add(num1,num2);/在在request域中存在数据域中存在数据request.setAttribute(result,result);/转向转向return add_result.jsp;Controller类类public void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException/得到得到actionMyAction action=(MyAction)this.determinActionByPath(request);/调用调用action的的execute方法方法String resultView=action.execute(request,response);/页面转向页面转向if(null!=resultView)request.getRequestDispatcher(resultView).forward(request,response);/*根据路径判断根据路径判断Action的方法的方法*param request*return*/private MyAction determinActionByPath(HttpServletRequest request)MyAction ret=null;/得到请求路径得到请求路径,如:如:http:/localhost:8080/mystruts1/add.doString path=request.getServletPath();/从从http:/localhost:8080/mystruts1/add.do中取得中取得addString actionName=path.substring(path.lastIndexOf(/)+1,path.length()-3);/添加新功能时在这里添加添加新功能时在这里添加if(add.equals(actionName)ret=new AddAction();return ret;web.xml中的配置中的配置mystruts1如果是使用如果是使用servlet,在使用向导创建过程,已经添加了,在使用向导创建过程,已经添加了 Controller org.sf.ssha.framework.Controller Controller *.do web.xml中的配置中的配置mystruts2struts2使用过滤器,要自己去使用过滤器,要自己去web.xml中添加配置文件:中添加配置文件:MyStrutsFilter org.sf.ssha.framework.Controller MyStrutsFilter*.action 当然在其它的一些配置方面也有一些差别,请大家去分析当然在其它的一些配置方面也有一些差别,请大家去分析完成的程序项目完成的程序项目mystruts1和和mystruts2。使用框架的优点使用框架的优点这个框架给开发带来了什么好处?这个框架给开发带来了什么好处?JSP页面中没有业务逻辑代码,业务和展示彻底分开页面中没有业务逻辑代码,业务和展示彻底分开用户操作抽象成了用户操作抽象成了Action,程序逻辑更清晰,程序逻辑更清晰整个系统通过统一的入口(整个系统通过统一的入口(Controller Filter)访问)访问基于框架开发基于框架开发 如何基于这个框架开发用户登录功能?如何基于这个框架开发用户登录功能?需求描述:需求描述:输入用户名为输入用户名为“bzu”,密码为,密码为“bzu”则登录成功;则登录成功;否则登录失败否则登录失败登录成功转发到登录成功转发到my.jsp,登录失败返回,登录失败返回index.jsp继续登录继续登录基于框架开发:开发登录功能基于框架开发:开发登录功能步骤步骤开发模型开发模型 org.sf.ssha.biz.UserBiz 开发开发Action.action.LoginAction开发视图开发视图index.jspmy.jsp演示示例:演示示例:基于自定义框架开发用户登录基于自定义框架开发用户登录这个框架还可以怎样改进?这个框架还可以怎样改进?自定义自定义MVC框架的缺点框架的缺点在增加功能时,需要修改在增加功能时,需要修改Controller ServletAddAction.java 的的execute方法中直接引用页面物理路径方法中直接引用页面物理路径,修改修改页面文件名时需要修改代码页面文件名时需要修改代码Struts是一个成熟的是一个成熟的MVC实现实现第一个开源的第一个开源的Java Web框架框架Java Web框架的事实标准框架的事实标准利于快速开发稳健的利于快速开发稳健的Web应用应用总结总结什么是框架?什么是框架?使用框架有什么好处?使用框架有什么好处?什么是什么是MVC模式?模式?使用使用MVC模式有什么好处?模式有什么好处?在在Java Web开发中,开发中,MVC模式中模式中M、V、C都是如何实都是如何实现的?现的?如何基于自定义如何基于自定义MVC框架实现框架实现“查询所有用户查询所有用户”的功能的功能?