《基于开源框架的企业级信息系统开发技术-课堂.ppt》由会员分享,可在线阅读,更多相关《基于开源框架的企业级信息系统开发技术-课堂.ppt(197页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、企业级信息系统开发技术济南大学信息学院济南大学信息学院济南大学信息学院济南大学信息学院 刘鹍刘鹍刘鹍刘鹍第第2 2讲讲 基于开源框架的企业级信息基于开源框架的企业级信息系统开发技术系统开发技术第第第第2 2章章章章 基于基于基于基于JavaEEJavaEE开发环境的构建开发环境的构建开发环境的构建开发环境的构建第第第第3 3章章章章 Struts2Struts2应用应用应用应用第第第第4 4章章章章 HibernateHibernate应用应用应用应用第第第第5 5章章章章 SpringSpring应用应用应用应用第第第第6 6章章章章 Struts2Struts2、HibernateHibe
2、rnate和和和和SpringSpring整合应用整合应用整合应用整合应用第第2 2讲讲 基于开源框架的企业级信息系统开发技术基于开源框架的企业级信息系统开发技术ServletServlet ServletServlet是是是是JavaJava语言的语言的语言的语言的CGICGI实现,与传统的实现,与传统的实现,与传统的实现,与传统的CGICGI和许多其他类似和许多其他类似和许多其他类似和许多其他类似CGICGI的技术相比,的技术相比,的技术相比,的技术相比,Java ServletJava Servlet具有更高的效率,更容易使用,功能更强具有更高的效率,更容易使用,功能更强具有更高的效率,
3、更容易使用,功能更强具有更高的效率,更容易使用,功能更强大,具有更好的可移植性。大,具有更好的可移植性。大,具有更好的可移植性。大,具有更好的可移植性。高效:高效:高效:高效:传统的传统的传统的传统的CGICGI程序以进程方式运行,而程序以进程方式运行,而程序以进程方式运行,而程序以进程方式运行,而ServletServlet以线程方式运行。以线程方式运行。以线程方式运行。以线程方式运行。方便:方便:方便:方便:ServletServlet提供了大量的实用工具例程,例如自动地解析和解码提供了大量的实用工具例程,例如自动地解析和解码提供了大量的实用工具例程,例如自动地解析和解码提供了大量的实用工
4、具例程,例如自动地解析和解码HTMLHTML表表表表 单数据、读取和设置单数据、读取和设置单数据、读取和设置单数据、读取和设置HTTPHTTP头、处理头、处理头、处理头、处理CookieCookie、跟踪会话状、跟踪会话状、跟踪会话状、跟踪会话状态等。态等。态等。态等。功能强大:功能强大:功能强大:功能强大:可以完成很多传统的可以完成很多传统的可以完成很多传统的可以完成很多传统的CGICGI程序很难做到的事情程序很难做到的事情程序很难做到的事情程序很难做到的事情。可移植性好:可移植性好:可移植性好:可移植性好:Servlet APIServlet API具有完善的标准。具有完善的标准。具有完善
5、的标准。具有完善的标准。Web服务器服务器doGet()()方法方法doPost()()方法方法HTTPGET请求请求HTTPPOST请求请求响应响应响应响应客户机客户机第第2 2讲讲 基于开源框架的企业级信息系统开发技术基于开源框架的企业级信息系统开发技术JSPJSP JSP(Java Server Pages)JSP(Java Server Pages)是由是由是由是由Sun MicrosystemsSun Microsystems公司倡导、许多公公司倡导、许多公公司倡导、许多公公司倡导、许多公司参与一起建立的一种动态网页技术标准。司参与一起建立的一种动态网页技术标准。司参与一起建立的一种
6、动态网页技术标准。司参与一起建立的一种动态网页技术标准。JSPJSP技术有点类似技术有点类似技术有点类似技术有点类似ASPASP技术,它是在传统的网页技术,它是在传统的网页技术,它是在传统的网页技术,它是在传统的网页HTMLHTML文件文件文件文件(*.htm,*.html)(*.htm,*.html)中插入中插入中插入中插入JavaJava程序段程序段程序段程序段(Scriptlet)(Scriptlet)和和和和JSPJSP标记标记标记标记(tag)(tag),从而形成,从而形成,从而形成,从而形成JSPJSP文件文件文件文件(*.jsp)(*.jsp)。用用用用JSPJSP开发的开发的开
7、发的开发的WebWeb应用是跨平台的,既能在应用是跨平台的,既能在应用是跨平台的,既能在应用是跨平台的,既能在LinuxLinux下运行,也能下运行,也能下运行,也能下运行,也能在其他操作系统上运行。在其他操作系统上运行。在其他操作系统上运行。在其他操作系统上运行。JSPJSP采用的是动态代码与静态采用的是动态代码与静态采用的是动态代码与静态采用的是动态代码与静态HTMLHTML页面相结合的方式,页面相结合的方式,页面相结合的方式,页面相结合的方式,JSPJSP的的的的语法内容放入在以语法内容放入在以语法内容放入在以语法内容放入在以“%”%”开始,以开始,以开始,以开始,以“%”结束的特殊标记
8、之内。结束的特殊标记之内。结束的特殊标记之内。结束的特殊标记之内。JSPJSP页面文件通常以页面文件通常以页面文件通常以页面文件通常以.jsp.jsp为扩展名。虽然从代码编写来看,为扩展名。虽然从代码编写来看,为扩展名。虽然从代码编写来看,为扩展名。虽然从代码编写来看,JSPJSP页面更象普通页面更象普通页面更象普通页面更象普通WebWeb页面而不象页面而不象页面而不象页面而不象ServletServlet,但实际上,但实际上,但实际上,但实际上,JSPJSP最终会被最终会被最终会被最终会被转换成正规的转换成正规的转换成正规的转换成正规的ServletServlet,静态,静态,静态,静态HT
9、MLHTML直接输出到和直接输出到和直接输出到和直接输出到和Servlet serviceServlet service方法关联的输出流。方法关联的输出流。方法关联的输出流。方法关联的输出流。第第2 2讲讲 基于开源框架的企业级信息系统开发技术基于开源框架的企业级信息系统开发技术Struts2Struts2框架框架框架框架 StrutsStruts是开源软件。使用是开源软件。使用是开源软件。使用是开源软件。使用StrutsStruts的目的是为了帮助我的目的是为了帮助我的目的是为了帮助我的目的是为了帮助我们减少在运用们减少在运用们减少在运用们减少在运用MVCMVC设计模型来开发设计模型来开发设
10、计模型来开发设计模型来开发WebWeb应用的时间。应用的时间。应用的时间。应用的时间。StrutsStruts框架具有组件的模块化、灵活性和重用性的优框架具有组件的模块化、灵活性和重用性的优框架具有组件的模块化、灵活性和重用性的优框架具有组件的模块化、灵活性和重用性的优点,同时也简化了基于点,同时也简化了基于点,同时也简化了基于点,同时也简化了基于MVCMVC的的的的WebWeb应用程序的开发。应用程序的开发。应用程序的开发。应用程序的开发。从应用的角度来说,从应用的角度来说,从应用的角度来说,从应用的角度来说,StrutsStruts有三大块,分别是有三大块,分别是有三大块,分别是有三大块,
11、分别是StrutsStruts核心类、核心类、核心类、核心类、StrutsStruts配置文件及配置文件及配置文件及配置文件及StrutsStruts标签库。标签库。标签库。标签库。HibernateHibernate框架框架框架框架 传统的传统的传统的传统的JavaJava应用都是采用应用都是采用应用都是采用应用都是采用JDBCJDBC来访问数据库,它是来访问数据库,它是来访问数据库,它是来访问数据库,它是一种基于一种基于一种基于一种基于SQLSQL的操作方式,但对目前的的操作方式,但对目前的的操作方式,但对目前的的操作方式,但对目前的JavaEEJavaEE信息信息信息信息化系统而言,通常
12、采用面向对象分析和面向对象设计化系统而言,通常采用面向对象分析和面向对象设计化系统而言,通常采用面向对象分析和面向对象设计化系统而言,通常采用面向对象分析和面向对象设计的过程。系统从需求分析到系统设计都是按面向对象的过程。系统从需求分析到系统设计都是按面向对象的过程。系统从需求分析到系统设计都是按面向对象的过程。系统从需求分析到系统设计都是按面向对象方式进行,但是到详细的数据访问设计阶段,又回到方式进行,但是到详细的数据访问设计阶段,又回到方式进行,但是到详细的数据访问设计阶段,又回到方式进行,但是到详细的数据访问设计阶段,又回到了传统的了传统的了传统的了传统的JDBCJDBC访问数据库的老路
13、上来。访问数据库的老路上来。访问数据库的老路上来。访问数据库的老路上来。HibernateHibernate的问世解决了这个问题,的问世解决了这个问题,的问世解决了这个问题,的问世解决了这个问题,HibernateHibernate是一个是一个是一个是一个面向面向面向面向JavaJava环境的环境的环境的环境的对象对象对象对象/关系映射工具关系映射工具关系映射工具关系映射工具,它用来把对象,它用来把对象,它用来把对象,它用来把对象模型表示的对象映射到基于模型表示的对象映射到基于模型表示的对象映射到基于模型表示的对象映射到基于SQLSQL的关系数据模型中去,的关系数据模型中去,的关系数据模型中去
14、,的关系数据模型中去,这样就不用再为怎样用面向对象的方法进行数据的持这样就不用再为怎样用面向对象的方法进行数据的持这样就不用再为怎样用面向对象的方法进行数据的持这样就不用再为怎样用面向对象的方法进行数据的持久化而大伤脑筋了。久化而大伤脑筋了。久化而大伤脑筋了。久化而大伤脑筋了。第第2 2讲讲 基于开源框架的企业级信息系统开发技术基于开源框架的企业级信息系统开发技术第第2 2讲讲 基于开源框架的企业级信息系统开发技术基于开源框架的企业级信息系统开发技术SpringSpring框架框架框架框架 SpringSpring框架是框架是框架是框架是Rod JohnsonRod Johnson开发的,开发
15、的,开发的,开发的,20032003年发布了年发布了年发布了年发布了SpringSpring框架的框架的框架的框架的第一个版本。第一个版本。第一个版本。第一个版本。SpringSpring是一个从实际开发中抽取出来的框架,因此是一个从实际开发中抽取出来的框架,因此是一个从实际开发中抽取出来的框架,因此是一个从实际开发中抽取出来的框架,因此它完成了大量开发中的通用步骤,从而大大提高了企业应用的开它完成了大量开发中的通用步骤,从而大大提高了企业应用的开它完成了大量开发中的通用步骤,从而大大提高了企业应用的开它完成了大量开发中的通用步骤,从而大大提高了企业应用的开发效率。发效率。发效率。发效率。Sp
16、ringSpring为企业应用的开发提供了一个为企业应用的开发提供了一个为企业应用的开发提供了一个为企业应用的开发提供了一个轻量级轻量级轻量级轻量级的解决方案。其中的解决方案。其中的解决方案。其中的解决方案。其中依依依依赖注入赖注入赖注入赖注入、基于、基于、基于、基于AOPAOP的声明式事务管理、多种持久层的整合与优秀的声明式事务管理、多种持久层的整合与优秀的声明式事务管理、多种持久层的整合与优秀的声明式事务管理、多种持久层的整合与优秀的的的的Web MVCWeb MVC框架等最为人们关注。框架等最为人们关注。框架等最为人们关注。框架等最为人们关注。SpringSpring可以贯穿程序的各个可
17、以贯穿程序的各个可以贯穿程序的各个可以贯穿程序的各个层之间,但它并不是想取代那些已有的框架,而是以高度的层之间,但它并不是想取代那些已有的框架,而是以高度的层之间,但它并不是想取代那些已有的框架,而是以高度的层之间,但它并不是想取代那些已有的框架,而是以高度的开放开放开放开放性性性性和它们紧密的整合。这也是和它们紧密的整合。这也是和它们紧密的整合。这也是和它们紧密的整合。这也是SpringSpring被广泛应用的原因之一。被广泛应用的原因之一。被广泛应用的原因之一。被广泛应用的原因之一。第第2 2讲讲 基于开源框架的企业级信息系统开发技术基于开源框架的企业级信息系统开发技术JSP+Servle
18、t+JavaBeanJSP+Servlet+JavaBean实现实现实现实现MVCMVCJSPJSPJSPServletJavaBeanEJBWeb服务服务视图视图控制器控制器模型模型JDBCDataBase第第2 2讲讲 基于开源框架的企业级信息系统开发技术基于开源框架的企业级信息系统开发技术Struts2Struts2、SpringSpring和和和和HibernateHibernate框架框架框架框架第第2 2讲讲 基于开源框架的企业级信息系统开发技术基于开源框架的企业级信息系统开发技术Struts2Struts2、SpringSpring和和和和HibernateHibernate框架
19、框架框架框架IServicejspcommandIDomainIDao资源层资源层发出请求发出请求viewbeandatabeandatabeanservice实现类实现类domain实现类实现类组织数据,组织数据,在页面显示在页面显示dao实现类实现类SpringSpring框架框架框架框架StrutsStruts框架框架框架框架HibernateHibernate框架框架框架框架第2章 JavaEE开发环境的构建开发环境的构建JSPJSP和和和和ServletServlet例子例子例子例子JSP和Servlet例子JSPJSP JSP(JavaServerPages)JSP(JavaSer
20、verPages)是由是由是由是由SunMicrosystemsSunMicrosystems公公公公司倡导、许多公司参与一起建立的一种动态网页技术司倡导、许多公司参与一起建立的一种动态网页技术司倡导、许多公司参与一起建立的一种动态网页技术司倡导、许多公司参与一起建立的一种动态网页技术标准。标准。标准。标准。JSPJSP技术有点类似技术有点类似技术有点类似技术有点类似ASPASP技术,它是技术,它是技术,它是技术,它是在传统的网在传统的网在传统的网在传统的网页页页页HTMLHTML文件文件文件文件(*.htm,*.html)(*.htm,*.html)中插入中插入中插入中插入JavaJava程
21、序段程序段程序段程序段(Scriptlet)(Scriptlet)和和和和JSPJSP标记标记标记标记(tag)(tag),从而形成,从而形成,从而形成,从而形成JSPJSP文件文件文件文件(*.jsp)(*.jsp)。用用用用JSPJSP开发的开发的开发的开发的WebWeb应用是跨平台的,既能在应用是跨平台的,既能在应用是跨平台的,既能在应用是跨平台的,既能在LinuxLinux下下下下运行,也能在其他操作系统上运行。运行,也能在其他操作系统上运行。运行,也能在其他操作系统上运行。运行,也能在其他操作系统上运行。简单的说简单的说简单的说简单的说JSPJSP就是:就是:就是:就是:HTMLHT
22、ML文件中嵌入文件中嵌入文件中嵌入文件中嵌入JavaJava程序段和程序段和程序段和程序段和JSPJSP标记标记标记标记扩展名是扩展名是扩展名是扩展名是*.jsp.jspJSP和Servlet例子看个看个看个看个JSPJSP的例子的例子的例子的例子计算圆面积:计算圆面积:计算圆面积:计算圆面积:新建新建新建新建WebProjectWebProject,项目名称:,项目名称:,项目名称:,项目名称:testtest 输入半径的页面输入半径的页面输入半径的页面输入半径的页面input.jspinput.jsp(WebRootWebRoot文件夹下):文件夹下):文件夹下):文件夹下):请输入半径请
23、输入半径r:JSP和Servlet例子看个例子看个例子看个例子看个例子计算圆面积:计算圆面积:计算圆面积:计算圆面积:计算圆面积的页面计算圆面积的页面计算圆面积的页面计算圆面积的页面result.jspresult.jsp:JSP和Servlet例子看个例子看个例子看个例子看个例子计算圆面积:计算圆面积:计算圆面积:计算圆面积:发布发布发布发布 启动启动TomcatTomcat服务器,在服务器,在IEIE浏览器中输入浏览器中输入“http:/localhost:8080/test/input.jsphttp:/localhost:8080/test/input.jsp”,系统,系统会显示会显示
24、input.jspinput.jsp页面,如图页面,如图2.12.1所示。当在文本框中输所示。当在文本框中输入入1010后,单击后,单击【计算计算】按钮会跳转到另外一个页面,按钮会跳转到另外一个页面,也就是也就是result.jspresult.jsp页面,并且输出结果页面,并且输出结果314.0314.0,如图,如图2.22.2所示。所示。图2.1 input.jsp页面图2.2 result.jsp页面JSP和Servlet例子ServletServlet ServletServlet是一种服务器端的是一种服务器端的是一种服务器端的是一种服务器端的JavaJava应用程序,具有独立应用程序
25、,具有独立应用程序,具有独立应用程序,具有独立于平台和协议的特性于平台和协议的特性于平台和协议的特性于平台和协议的特性,可以生成动态的可以生成动态的可以生成动态的可以生成动态的WebWeb页面。页面。页面。页面。它它它它担当客户请求(担当客户请求(担当客户请求(担当客户请求(WebWeb浏览器或其他浏览器或其他浏览器或其他浏览器或其他HTTPHTTP客户程序)客户程序)客户程序)客户程序)与服务器响应(与服务器响应(与服务器响应(与服务器响应(HTTPHTTP服务器上的数据库或应用程序)服务器上的数据库或应用程序)服务器上的数据库或应用程序)服务器上的数据库或应用程序)的中间层。的中间层。的中
26、间层。的中间层。ServletServlet是位于是位于是位于是位于WebWeb服务器内部的服务器服务器内部的服务器服务器内部的服务器服务器内部的服务器端的端的端的端的JavaJava应用程序,与传统的从命令行启动的应用程序,与传统的从命令行启动的应用程序,与传统的从命令行启动的应用程序,与传统的从命令行启动的JavaJava应用程序不同,应用程序不同,应用程序不同,应用程序不同,ServletServlet由由由由WebWeb服务器进行加载,该服务器进行加载,该服务器进行加载,该服务器进行加载,该WebWeb服务器必须包含支持服务器必须包含支持服务器必须包含支持服务器必须包含支持Servle
27、tServlet的的的的JavaJava虚拟机。虚拟机。虚拟机。虚拟机。简单的理解:简单的理解:简单的理解:简单的理解:ServletServlet是是是是JavaJava类类类类ServletServlet可以接收客户请求可以接收客户请求可以接收客户请求可以接收客户请求requestrequestServletServlet可以给客户响应可以给客户响应可以给客户响应可以给客户响应responseresponseServletServlet在服务器端加载在服务器端加载在服务器端加载在服务器端加载ServletServlet运行在运行在运行在运行在ServletServlet容器中容器中容器中容
28、器中JSP和Servlet例子看个看个看个看个ServletServlet的例子:的例子:的例子:的例子:计算圆面积计算圆面积计算圆面积计算圆面积 新建新建新建新建WebProjectWebProject:项目名称:项目名称:项目名称:项目名称:servletservlet 新建新建新建新建ServletServlet类类类类(继承继承继承继承HttpServletHttpServlet类类类类):Servlet.javaServlet.javapackagecn.edu.ujn.servletdemo;/省略省略importpublicclassServletextendsHttpServl
29、etOverrideprotectedvoiddoPost(HttpServletRequestreq,HttpServletResponseresp)throwsServletException,IOExceptionresp.setCharacterEncoding(GBK);PrintWriterpw=resp.getWriter();doubleradius=Double.valueOf(req.getParameter(radius);pw.println(圆的面积是:圆的面积是:+radius*radius*3.14);OverrideprotectedvoiddoGet(Http
30、ServletRequestreq,HttpServletResponseresp)throwsServletException,IOExceptionresp.setCharacterEncoding(GBK);PrintWriterpw=resp.getWriter();doubleradius=Double.valueOf(req.getParameter(radius);pw.println(圆的面积是圆的面积是get:+radius*radius*3.14);JSP和Servlet例子看个看个看个看个ServletServlet的例子:的例子:的例子:的例子:计算圆面积计算圆面积计算
31、圆面积计算圆面积 编辑编辑编辑编辑web.xmlweb.xml,增加该,增加该,增加该,增加该ServletServlet的配置:的配置:的配置:的配置:servletdemocn.edu.ujn.servletdemo.Servletservletdemo/servletJSP和Servlet例子看个看个看个看个ServletServlet的例子:的例子:的例子:的例子:计算圆面积计算圆面积计算圆面积计算圆面积 新建新建新建新建JSPJSP页面:页面:页面:页面:inputservlet.jspinputservlet.jsp 发布发布发布发布 测试测试测试测试POSTPOST方式,在浏览器
32、中输入:方式,在浏览器中输入:方式,在浏览器中输入:方式,在浏览器中输入:http:/localhost:8080/servlet/inputservlet.jsphttp:/localhost:8080/servlet/inputservlet.jsp 测试测试测试测试GETGET方式,在浏览器中输入:方式,在浏览器中输入:方式,在浏览器中输入:方式,在浏览器中输入:http:/localhost:8080/servlet/servlet?radius=18http:/localhost:8080/servlet/servlet?radius=18请输入半径请输入半径r:JSP和Servle
33、t例子JSPJSP数据定义:数据定义:数据定义:数据定义:JSPJSP程序块:程序块:程序块:程序块:JSPJSP表达式表达式表达式表达式%=Java%JSPJSP指令指令指令指令 pagepage指令:设定整个指令:设定整个指令:设定整个指令:设定整个JSPJSP文件的属性和相关功能文件的属性和相关功能文件的属性和相关功能文件的属性和相关功能 includeinclude指令:导入包含静态的文件(指令:导入包含静态的文件(指令:导入包含静态的文件(指令:导入包含静态的文件(JSPJSP、HTMLHTML)%includefile=“url%taglibtaglib指令:标签引用(指令:标签引
34、用(指令:标签引用(指令:标签引用(Struts2Struts2中会用到)中会用到)中会用到)中会用到)21JSP和Servlet例子JSPJSP动作动作动作动作 赋值:赋值:赋值:赋值:向一个对象提出请求向一个对象提出请求向一个对象提出请求向一个对象提出请求 寻找或者实例化一个寻找或者实例化一个寻找或者实例化一个寻找或者实例化一个JavaBeanJavaBean 设置设置设置设置JavaBeanJavaBean的属性的属性的属性的属性 输出某个输出某个输出某个输出某个JavaBeanJavaBean的属性的属性的属性的属性 把请求转到一个新的页面把请求转到一个新的页面把请求转到一个新的页面把
35、请求转到一个新的页面 根据浏览器类型为根据浏览器类型为根据浏览器类型为根据浏览器类型为JavaJava插件生成插件生成插件生成插件生成OBJECTOBJECT或或或或EMBEDEMBED标记标记标记标记 JSPJSP注释注释注释注释 输出注释:输出注释:输出注释:输出注释:!-隐藏注释:隐藏注释:隐藏注释:隐藏注释:该注释不发送给用户该注释不发送给用户该注释不发送给用户该注释不发送给用户JSP和Servlet例子内置对象内置对象代表内容代表内容范围范围request触发服务调用的请求触发服务调用的请求requestresponse对请求的应答对请求的应答pagesession为请求的客户创建的
36、为请求的客户创建的session对象对象sessionapplication从从servlet配置对象获得的配置对象获得的servlet上下文(如在上下文(如在getServletConfig(),getContext()的调用中)的调用中)applicationout向输出流写入内容的对象向输出流写入内容的对象pagepageContext本本JSP的页面上下文的页面上下文pagepage实现处理本页当前请求的类的实例实现处理本页当前请求的类的实例pageconfig本本JSP的的ServletConfigpageexception表示表示JSP页面运行时产生的异常页面运行时产生的异常Pag
37、eJSPJSP内置对象内置对象内置对象内置对象JSP和Servlet例子ServletServlet主要接口和类主要接口和类主要接口和类主要接口和类 ServletServlet接口(实现接口(实现接口(实现接口(实现initinit、serviceservice、destroydestroy方法)方法)方法)方法)GenericServletGenericServlet类(覆写类(覆写类(覆写类(覆写serviceservice方法)方法)方法)方法)HttpServletHttpServlet类(覆写类(覆写类(覆写类(覆写doPostdoPost或或或或doGetdoGet方法)方法)方
38、法)方法)HttpServletRequestHttpServletRequest和和和和HttpServletResponseHttpServletResponse接口接口接口接口ServletServlet生命周期生命周期生命周期生命周期 当当当当ServletServlet被装载到容器后,生命周期开始。被装载到容器后,生命周期开始。被装载到容器后,生命周期开始。被装载到容器后,生命周期开始。首先调用首先调用首先调用首先调用init()init()方法进行初始化。方法进行初始化。方法进行初始化。方法进行初始化。初始化后,调用初始化后,调用初始化后,调用初始化后,调用service()ser
39、vice()方法,根据请求的不同调用方法,根据请求的不同调用方法,根据请求的不同调用方法,根据请求的不同调用不同的不同的不同的不同的doXxx()doXxx()方法处理客户请求,并将处理结果封方法处理客户请求,并将处理结果封方法处理客户请求,并将处理结果封方法处理客户请求,并将处理结果封装到装到装到装到HttpServletResponseHttpServletResponse中返回给客户端。中返回给客户端。中返回给客户端。中返回给客户端。当当当当ServletServlet实例从容器中移除时调用其实例从容器中移除时调用其实例从容器中移除时调用其实例从容器中移除时调用其destroy()des
40、troy()方法,方法,方法,方法,这就是这就是这就是这就是ServletServlet运行的整个过程。运行的整个过程。运行的整个过程。运行的整个过程。思考:MVC模式怎样应用怎样应用怎样应用怎样应用MVCMVC模式?模式?模式?模式?%pagelanguage=javaimport=java.util.*pageEncoding=utf-8%MVCMVCformaction=method=post用户登录用户登录用户登录用户登录登录名:登录名:登录名:登录名:密码密码密码密码:inputtype=passwordname=pwdsize=”21”/inputtype=submitvalue=
41、/inputtype=resetvalue=/login登录成功!登录成功!登录失败!登录失败!数据库操作失败,请联系管理员。数据库操作失败,请联系管理员。login.jsplogin.jsploginok.jsp思考:MVC模式JSP+Servlet+JavaBeanJSP+Servlet+JavaBean实现实现实现实现MVCMVC模式模式模式模式 抽取表示层(抽取表示层(抽取表示层(抽取表示层(JSPJSP)抽取抽取抽取抽取“领域对象领域对象领域对象领域对象”实现实现实现实现“控制层控制层控制层控制层”ServletServlet 抽取业务逻辑层接口抽取业务逻辑层接口抽取业务逻辑层接口抽
42、取业务逻辑层接口 实现业务逻辑层实现业务逻辑层实现业务逻辑层实现业务逻辑层 实现其他业务逻辑层(数据库连接)实现其他业务逻辑层(数据库连接)实现其他业务逻辑层(数据库连接)实现其他业务逻辑层(数据库连接)思考:MVC模式login.jsplogin.jsp成功页面成功页面成功页面成功页面失败页面失败页面失败页面失败页面Stringusername=request.getParameter(username);Stringpwd=request.getParameter(pwd);Dlbdl=newDlb();dl.setXh(username);dl.setKl(pwd);ICheckLogi
43、nDomaindlDomain=newCheckLoginDomainImpl();if(dlDomain.checkLogin(dl)response.sendRedirect(./secondloginok.jsp);elseresponse.sendRedirect(./secondloginfalse.jsp);web.xmlweb.xmlLoginServletLoginServletICheckLoginDomain接口接口publicbooleancheckLogin(Dlbdl)tryDBConnconn=newDBConn();Stringsql=select*fromdlb
44、where;ResultSetrs=conn.executeQuery(sql);if(rs.next()returntrue;elsereturnfalse;catch(SQLExceptione)returnfalse;privateStringid;privateStringxh;privateStringkl;Dlb.javaCheckLoginDomainImpl.javaClass.forNameDriverManager.getConnectioncreateStatementexecuteQueryDBConn.java思考:MVC模式MVCMVC模式没有给出代码结构性的具体要
45、求模式没有给出代码结构性的具体要求模式没有给出代码结构性的具体要求模式没有给出代码结构性的具体要求 MVCMVC的控制器是做一个的控制器是做一个的控制器是做一个的控制器是做一个ServletServlet,还是多个,还是多个,还是多个,还是多个ServletServlet?跳转页面的名称是写在代码中还是配置文件中?跳转页面的名称是写在代码中还是配置文件中?跳转页面的名称是写在代码中还是配置文件中?跳转页面的名称是写在代码中还是配置文件中?企业级信息系统开发技术济南大学信息学院济南大学信息学院济南大学信息学院济南大学信息学院 刘鹍刘鹍刘鹍刘鹍JSP+Servlet+JavaBeanJSP+Ser
46、vlet+JavaBeanJSP+Servlet+JavaBean实现实现实现实现MVCMVC请求请求请求请求FORMFORMPOSTPOSTGETGETrequestrequestJSPJSPServletServletJavaBeanJavaBeanDBDBrequestrequestobjectobjectobjectobjectlistlistgetParametergetParameter实例化对象实例化对象实例化对象实例化对象调用调用调用调用JavaBeanJavaBeanJDBCJDBC数据库数据库数据库数据库增删改查增删改查增删改查增删改查返回结果返回结果返回结果返回结果set
47、ParametersetParametersetAttributesetAttribute显示数据显示数据显示数据显示数据sessionsessionsessionsession第3章 Struts2应用3.1Struts23.1Struts2概述概述概述概述3.2Struts23.2Struts2基本应用及工作流程基本应用及工作流程基本应用及工作流程基本应用及工作流程3.1 Struts 2概述Struts2Struts2与与与与Struts1Struts1Webwork+Struts1=Struts2Webwork+Struts1=Struts23.1 Struts 2概述3.1.1MVC
48、3.1.1MVC简介简介简介简介MVCMVC有以下优点:有以下优点:多个视图可以对应一个模型。多个视图可以对应一个模型。多个视图可以对应一个模型。多个视图可以对应一个模型。模型返回的数据与显示逻辑分离。模型返回的数据与显示逻辑分离。模型返回的数据与显示逻辑分离。模型返回的数据与显示逻辑分离。应用被分隔为三层,降低了各层之间的耦合,提供了应用的可扩展性。应用被分隔为三层,降低了各层之间的耦合,提供了应用的可扩展性。应用被分隔为三层,降低了各层之间的耦合,提供了应用的可扩展性。应用被分隔为三层,降低了各层之间的耦合,提供了应用的可扩展性。控制层的概念也很有效,由于它把不同的模型和不同的视图组合在一
49、控制层的概念也很有效,由于它把不同的模型和不同的视图组合在一控制层的概念也很有效,由于它把不同的模型和不同的视图组合在一控制层的概念也很有效,由于它把不同的模型和不同的视图组合在一起,完成不同的请求,因此控制层可以说是包含了用户请求权限的概念。起,完成不同的请求,因此控制层可以说是包含了用户请求权限的概念。起,完成不同的请求,因此控制层可以说是包含了用户请求权限的概念。起,完成不同的请求,因此控制层可以说是包含了用户请求权限的概念。MVCMVC更符合软件工程化管理的精神。不同的层各司其职,每一层的更符合软件工程化管理的精神。不同的层各司其职,每一层的更符合软件工程化管理的精神。不同的层各司其职
50、,每一层的更符合软件工程化管理的精神。不同的层各司其职,每一层的组件具有相同的特征,有利于通过工程化和工具化产生管理程序代码。组件具有相同的特征,有利于通过工程化和工具化产生管理程序代码。组件具有相同的特征,有利于通过工程化和工具化产生管理程序代码。组件具有相同的特征,有利于通过工程化和工具化产生管理程序代码。回顾:JSP+Servlet实现MVC模式login.jsplogin.jsp成功页面成功页面成功页面成功页面失败页面失败页面失败页面失败页面Stringusername=request.getParameter(username);Stringpwd=request.getParame