Struts2框架技术入门_第1页
Struts2框架技术入门_第2页
Struts2框架技术入门_第3页
Struts2框架技术入门_第4页
Struts2框架技术入门_第5页
已阅读5页,还剩68页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1Web框架技术〔Struts2+Hibernate+Spring3〕

2本课程目录第1章Struts2框架技术入门第2章Struts2核心组件详解第3章Struts2的高级组件第4章基于Struts2的个人信息管理系统工程实训第5章Hibernate框架技术入门第6章Hibernate核心组件详解第7章Hibernate高级组件第8章基于Struts2+Hibernate的工程实训第9章Spring3框架技术入门第10章Spring3的AOP框架第11章基于SSH的BBS工程实训3第1章Struts2框架技术入门1.1Struts2根底知识1.2Struts2的核心组件1.3基于Struts2的登录系统实例41.1Struts2根底知识1.1.1Struts2的由来与开展1.1.2Struts2软件包的下载和配置1.1.3MVC设计模式1.1.4Struts2的工作原理51.1.1Struts2的由来与开展Struts是整合了当前动态网站技术中Srvlet、JSP、JavaBean、JDBC、XML等相关开发技术根底之上的一种主流Web开发框架,是一种基于经典MVC的框架。采用Struts可以简化MVC设计模式的Web应用开发工作,很好地实现代码重用,使开发人员从繁琐的工作中解脱出来,来开发具有强扩展性的Web应用。Struts2是JavaWeb工程开发中最经典的Web框架技术,受到许多软件开发人员喜爱与追捧,是软件企业招聘Java软件人才时要求必备的技能之一。6Struts是Apache软件基金会下Jakarta工程的一局部。从2000年5月开始开发Struts,到2001年6月发布Struts1.0版本。有30多个开发者参与进来,并有数千人参与到讨论组中。到2002年,Struts小组共有9个志愿团队。Struts框架的主要架构设计和开发者是CraigR.McClanahan。Craig也是Tomcat4的主要架构师。2007年发布Struts2.0,与Struts1的体系结构的差异巨大。Struts2以WebWork为核心,采用拦截器的机制来处理用户的请求,,所以这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开Struts2可以理解为WebWork的更新产品。71.1Struts2根底知识1.1.1Struts2的由来与开展1.1.2Struts2软件包的下载和配置1.1.3MVC设计模式1.1.4Struts2的工作原理81.软件包下载Struts的各版本可在Apache官方网站下载。选择下载。书上使用的是,2012年8月发布。9Struts2的下载101112下载Struts2时有以下选项:〔1〕这是Struts2的完整下载包,内容包括Struts2的核心类库、源代码、文档、实例等,建议选择该选项。〔2〕该包只包含Struts2的实例,在完整版的Struts2下载包中已经包含了该选项中所有实例。〔3〕该包只包含Struts2的核心类库,在完整版的Struts2下载包中已经包含了该选项中所有类库。〔4〕该包只包含Struts2的相关文档,包括使用文档、参考手册和API等,在完整版的Struts2下载包中已经包含了该选项中所有文档。〔5〕该包只包含Struts2的源代码,在完整版的Struts2下载包中已经包含了该选项中所有源代码。132.Struts2软件包中主要文件14〔1〕apps文件夹:该文件夹中存放基于Struts2的实例应用,这些实例对学习者来说是非常有用的资料。〔2〕docs文件夹:该文件夹中存放Struts2的相关文档,Struts2API、Struts2快速入门等文档内容。〔3〕lib文件夹:该文件夹中存放Struts2框架的核心类库以及Struts2的第三方插件类库。〔4〕src文件夹:该文件夹中存放Struts2框架的全部源代码。153.Struts2的配置的lib文件夹中有80多个JAR文件。大多数情况下,使用Struts2开发JavaWeb应用程序并不需要使用到Struts2的全部类库,因此没有必要把lib文件夹中的类库全部配置到工程中。一般只需配置、、、、、、等文件。如果需要使用Struts2的更多特性,需要配置更多lib文件夹中的JAR文件到工程中。16在MyEclipse中配置Struts2在MyEclipse10.6中也已经集成了Struts2的插件,直接使用即可。要在MyEclipse10.6中重新配置Struts2,可在创立工程〔如工程ch01〕后,单击菜单“MyEclipse”->“ProjectCapabilities”->“AddStrutsCapabilities”,如图1-22所示,会弹出如图1-23所示的对话框,选择Struts2.1后弹出另外一个对话框,在该对话框中单击“Next”,弹出如图1-24所示对话框,在其中可以选择Struts2类库,完成选择后单击“翻开”,Struts2类库在MyEclipse工程中的配置即完成。配置完成后,在工程ch01中将自动添加一个Struts2的包,即Struts2CoreLibraries。如需使用Struts2的其它版本,可以导入到该包。171819201.1Struts2根底知识1.1.1Struts2的由来与开展1.1.2Struts2软件包的下载和配置1.1.3MVC设计模式1.1.4Struts2的工作原理21MVC,如图1-25所示,是一种目前广泛流行的软件设计模式,早在70年代,IBM就进行了MVC设计模式的研究。近来,随着JavaEE的成熟,它成为在JavaEE平台上推荐的一种设计模型,是广阔Java开发者非常感兴趣的设计模型。随着网络应用的快速增加,MVC模式对于Web应用的开发无疑是一种非常先进的设计思想,无论选择哪种语言,无论应用多复杂,它都能为理解分析应用模型提供最根本的分析方法,为构造产品提供清晰的设计框架,为软件工程提供标准的依据。22MVC模式图模型视图控制器状态查询通知改变状态改变视图选择用户请求方法调用事件MVC设计模式概览实现MVC(Model、View、Controller)模式的应用程序由3大局部构成:模型:封装应用程序的数据和业务逻辑视图:实现应用程序的信息显示功能控制器:接收来自用户的输入,调用模型层,响应对应的视图组件POJO(PlainOldJavaObject)JSPServletFilter使用Filter作为控制器的MVC使用Filter作为控制器的好处使用一个过滤器来作为控制器,可以方便地在应用程序里对所有资源(包括静态资源)进行控制访问.<url-pattern>*.action</url-pattern>Servlet能做的Filter是否都可以完成?嗯。Filter能做的Servlet都可以完成吗?拦截资源却不是Servlet所擅长的!Filter中有一个FilterChain,这个API在Servlet中没有!ServletVSFilter251.1Struts2根底知识1.1.1Struts2的由来与开展1.1.2Struts2软件包的下载和配置1.1.3MVC设计模式1.1.4Struts2的工作原理26调用指定某个Action返回处理结果HTTP视图(JSP)控制器FilterDispatcher拦截器1拦截器2拦截器3Action模型JavaBeansstruts.xml获取配置信息27Struts2中使用拦截器来处理用户请求,从而允许用户的业务控制器Action与Servlet别离。Struts2的工作原理如图1-26所示,用户请求提交后经过多个拦截器拦截后交给核心控制器FilterDispatcher处理,核心控制器读取配置文件struts.xml,根据配置文件的信息指定某一个业务控制器Action〔POJO类〕来处理用户数据,业务控制器调用某个业务组件进行处理,在处理的过程中可以调用其他模型组件共同完成数据的处理。Action处理完后会返回给核心控制器FilterDispatcher一个处理结果,核心控制器根据返回的处理结果读取配置文件struts.xml,根据配置文件中的配置,决定下一步跳转到哪一个页面。28一个客户请求在Struts2框架中处理的过程大概有以下几个步骤:客户提交请求到效劳器;请求被提交到一系列的过滤器过滤后最后到FilterDispatcher;FilterDispatcher是核心控制器,是基于Struts2中MVC模式的控制器局部;FilterDispatcher读取配置文件struts.xml,根据配置信息调用某个Action来处理客户请求;Action执行完毕,返回执行结果,根据struts.xml的配置找到对应的返回结果。29第1章Struts2框架技术入门1.1Struts2根底知识1.2Struts2的核心组件1.3基于Struts2的登录系统实例301.2Struts2的核心组件1.2.1Struts2的控制器组件1.2.2Struts2的模型组件1.2.3Struts2的视图组件31Struts2是基于MVC模式的Web框架,Struts2框架按照MVC的思想主要有,控制器层,包括核心控制器FilterDispatcher、业务控制器Action;模型层,包括业务逻辑组件和数据库访问组件;视图组件。321.2.1Struts2的控制器组件在基于MVC的应用程序开发中控制器组件的主要功能是,从客户端接受数据、调用模型〔JavaBean〕、进行数据处理以及决定返回给客户某个视图。Struts2的控制器主要有:核心控制器FilterDispatcher和业务控制器Action。331.FilterDispatcher控制器FilterDispatcher是一个过滤器,是Struts2的核心控制器,控制着整个Web工程中数据的流向和操作。与Web应用程序整合的MVC框架需要web.xml配置文件。基于MVC的Web框架需要在Web应用程序中加载一个核心控制器,Struts2框架需要加载FilterDispatcher,需在web.xml中进行配置。除了web.xml配置文件配置核心控制器FilterDispatcher外,Struts2控制数据的操作时,还需要Struts2本身的配置文件struts.xml。342.struts.xml配置文件在Struts2中核心的配置文件是struts.xml,用户请求提交给核心控制器FilterDispatcher后,具体由那个业务控制器Action来完成,是struts.xml配置文件中配置的,根据配置文件struts.xml中的数据,核心控制器FilterDispatcher调用某个业务控制器Action来完成数据的处理,处理完数据后把处理结果通过其他对象返回给核心控制器FilterDispatcher,核心控制器根据struts.xml配置文件的数据,决定下一步的操作。所以Struts2中struts.xml是核心配置文件,在控制器操作中起到关键作用。353.Action控制器Action是Struts2的业务控制器,可以不实现任何接口或者继承Struts2类,该Action类是一个根本的Java类,具有很高的可重用性。Action中不实现任何业务逻辑,只负责组织调度业务模型组件。Struts2的Action类具有很多优势:Action类完全是一个POJO〔PlainOldJavaObjects〕简单的Java对象,实际就是普通JavaBean,是为了防止和EJB混淆所创造的简称,Action具有良好的代码重用性。Action类无需与Servlet关联,降低了与Servlet的耦合度,所以应用和测试比较简单。Action类的execute()方法仅返回一个字符串作为处理结果,该处理结果可传到任何视图或者另外一个Action。361.2Struts2的核心组件1.2.1Struts2的控制器组件1.2.2Struts2的模型组件1.2.3Struts2的视图组件371.2.2Struts2的模型组件模型组件可以是实现业务逻辑的模块,可以是JavaBean、POJO、EJB,在实际的开发中,对模型组件的区别和定义也是比较模糊的,实际上也超出了Struts2框架的范围。Struts2框架的业务控制器不会对用户请求进行实质的处理,用户请求最终由模型组件负责处理,业务控制器只是提供处理场合,是负责调度的调度器。38不同的开发者有自己的方式来实现模型组件,Struts2框架的目的是使用Action来调用模型组件。例如一个银行存款的模型组件,代码如【例1-1】所示。39【例1-1】Bank模型组件〔Bank.java〕40【例1-1】中的代码是一个完成某一功能的业务逻辑模块,在执行saving(Stringaccounts,Stringmoney)方法时能够通过调用其他类或者直接访问数据库完成存款功能。使用业务控制器Action可以调用该业务逻辑组件在Action的execute()中实现,代码如【例1-2】所示。【例1-2】BankSavingAction业务控制器〔BankSavingAction.java〕411.2Struts2的核心组件1.2.1Struts2的控制器组件1.2.2Struts2的模型组件1.2.3Struts2的视图组件421.2.3Struts2的视图组件Struts1视图组件的构成主要有:HTML、JSP和Struts1标签,Struts2视图组件除了有HTML、JSP、Struts2标签外,还有模板技术作为视图技术,如FreeMarker、Velocity等视图技术。431.HTML和JSPHTML和JSP是开发基于Struts2视图组件的主要技术。442.Struts2标签Struts2框架提供了功能强大的标签库,使用Struts2标签库开发视图,可以使页面更整洁,简化页面输出,支持更加复杂而丰富的功能且页面易维护,减少代码量和开发时间。453.FreemakerFreemaker是一个“模板引擎”,是一个基于模板技术的生成文本输出的一个通用工具。它是一个Java的包,使用纯Java编写,是Java程序员可以使用的类库。本身并不是一个对最终用户的应用程序。但是,程序员可以把它应用到他们的产品中。FreeMarker是设计为可以生成Web页面〔JSP〕。它是基于Servlet遵循MVC模式的应用,MVC模式能够使网页设计人员和程序员的耦合减少。每个人都可以做他们擅长的工作,网页设计人员可以改变网页的面貌,而并不需要程序员的重新编译,因为业务逻辑和页面的设计已经被别离开了。模板是不能由复杂的程序片断组成的,即便网页设计人员和程序员是一个人,别离是有必要的,它能使程序更加的灵活和清晰。虽然Freemarker能编程,但是它并不是一个编程语言,它是为程序显示数据而准备的。Freemarker仅仅是利用模板加上数据生成文本页面。能用来生成任意格式的文本,如HTML,XML,Java源码等等。Freemarker并不是一个Web应用程序框架,可以说是一个Web应用框架的一个视图组件。Freemarker下载地址为:。464.VelocityVelocity是一个开放源吗的“模版引擎”,由小组负责开发,现在最新的版本是Velocity1.7,可以到其官方网站上可以了解Velocity的最新信息。Velocity是一个基于Java的模版引擎。它允许Web页面设计者引用Java代码预定义的方法。Web设计者可以根据MVC模式和Java程序员并行工作,这意味着Web设计者可以单独专注于设计良好的站点,而程序员那么可单独专注于编写底层代码。Velocity将Java代码从Web页面中别离出来,使站点在长时间运行后仍然具有很好的可维护性,并提供了一个除JSP和PHP之外的可行的被选方案。Velocity可用来从模板产生Web页面,SQL以及其他输出。它也可用于一个独立的程序以产生源代码和报告,或者作为其他系统的一个集成组件。这个工程完成后,Velocity将为应用程序框架提供模板效劳。Velocity的模板语言非常简单,它并没有复杂的数据类型和语法结构,即使没有编程经验的读者也可以轻松地掌握。47第1章Struts2框架技术入门1.1Struts2根底知识1.2Struts2的核心组件1.3基于Struts2的登录系统实例481.3基于Struts2的登录系统实例1.3.1使用NetBeans7开发工程1.3.2使用MyEclipse10开发工程1.3.3使用Eclipse开发工程49本节通过使用NetBeans7、MyEclipse9和Eclipse来开发简单的登录系统,从而掌握如何使用它们开发基于Struts2的Web工程。使用基于Struts2开发主要经过以下步骤:〔1〕在web.xml中配置核心控制器FilterDispatcher;〔2〕设计和编写视图组件,如使用JSP编写页面;〔3〕编写视图组件对应的业务控制器组件Action;〔4〕配置业务控制器Action,即修改struts.xml配置文件,配置Action;〔5〕在struts.xml配置文件文件中配置处理结果与对应视图跳转关系。Action调用模型组件〔业务逻辑组件〕处理后返回处理结果,根据处理结果进行下一步页面跳转。页面的下一怎么调转都是事先在struts.xml配置文件中配置好的。501.3.1使用NetBeans7开发工程1.工程介绍该工程为登录系统,工程有一个登录页面〔login.jsp〕,代码如【例1-4】所示;登录页面对应的业务逻辑组件LoginBean类代码如【例1-6】,对应的业务控制器LoginAction类,代码如【例1-7】所示;如果登录成功〔用户名、密码正确〕跳转到success.jsp页面,代码如【例1-5】所示;如果登录失败〔用户名、密码不正确〕那么重新回到登录页面〔login.jsp〕。此外还需要配置web.xml,代码如【例1-3】所示;配置struts.xml文件的代码如【例1-8】所示。工程的文件结构如图1-27所示。51522.在web.xml中配置核心控制器FilterDispatcher在使用NetBeans7.2开发基于Struts2的Web工程时,如果新建工程时在如图1-14所示步骤中选择了“Struts2”,那么在新建工程的“WEB-INF”文件夹下,NetBeans7.2会自动创立一个web.xml,所以使用NetBeans7.2中的Struts2插件时,web.xml中的核心控制器FilterDispatcher是自动配置好的。web.xml的代码如【例1-3】所示。如果没有使用该插件新建工程,需要程序员自己配置web.xml,代码如【例1-3】所示。53【例1-3】在web.xml中配置核心控制器〔web.xml〕<?xmlversion="1.0"encoding="UTF-8"?><web-appversion="3.0"xmlns="://java.sun/xml/ns/javaee"xmlns:xsi=":///2001/XMLSchema-instance"://java.sun/xml/ns/javaee/web-app_3_0.xsd"><filter><!--配置Struts2核心控制器的名称--><filter-name>struts2</filter-name> <!--配置Struts2核心控制器的类--><filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class></filter><filter-mapping> <!--Struts2控制器的名称--><filter-name>struts2</filter-name> <!--拦截所有URL请求--><url-pattern>/*</url-pattern></filter-mapping>54 <!--指定默认的会话超时时间间隔,以分钟为单位--><session-config><session-timeout>30</session-timeout></session-config> <!--配置默认的访问界面--><welcome-file-list><welcome-file>example/HelloWorld.jsp</welcome-file></welcome-file-list></web-app>553.编写视图组件〔JSP页面〕编写一个如图1-28所示的登录页面。56【例1-4】登录页面〔login.jsp〕<%@pagecontentType="text/html"pageEncoding="UTF-8"%><html><head><meta-equiv="Content-Type"content="text/html;charset=UTF-8"><title>基于Struts2的登录系统应用</title></head><body><formmethod="post"action="login">用户名:<inputname="userName"type="text"size="24"><br>密码:<inputname="password"type="password"size="26"><br><inputtype="submit"value="登录"></form><hr></body></html>57【例1-5】登录成功页面〔success.jsp〕<%@pagecontentType="text/html"pageEncoding="UTF-8"%><html><head><meta-equiv="Content-Type"content="text/html;charset=UTF-8"><title>登录成功页面</title></head><body><h1>你登录成功,欢送你!</h1></body></html>584.编写登录页面对应的业务逻辑组件JavaBean登录页面使用的业务逻辑组件LoginBean类,代码如【例1-6】。【例1-6】登录页面的业务逻辑组件〔LoginBean.java〕packageloginBean;publicclassLoginBean{privateStringuserName;privateStringpassWord;publicStringgetUserName(){returnuserName;}publicvoidsetUserName(StringuserName){this.userName=userName;}publicStringgetPassWord(){returnpassWord;}publicvoidsetPassWord(StringpassWord){this.passWord=passWord;}59//处理用户登录的方法

publicbooleanlogin(StringuserName,StringpassWord){booleanb=false;if(userName.equals("QQ")&&passWord.equals("123")){b=true;returnb; } else{b=false;returnb; }}}605.编写业务控制器Action为了处理视图的业务逻辑,一般每个视图都会对应一个业务控制器Action。login.jsp对应的业务控制器如【例1-7】所示的LoginAction类,该类就是一个普通的Java类。【例1-7】登录页面〔login.jsp〕对应的业务控制器〔LoginAction.java〕packageloginAction;importloginBean.LoginBean;publicclassLoginAction{privateStringuserName;privateStringpassWord;publicStringgetUserName(){returnuserName;}publicvoidsetUserName(StringuserName){this.userName=userName;}61publicStringgetPassWord(){returnpassWord;}publicvoidsetPassWord(StringpassWord){this.passWord=passWord;}

publicStringexecute()throwsException{LoginBeanlb=newLoginBean();if(lb.login(userName,passWord)) {return"success"; } else{return"error"

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论