Struts2框架掌握MVC模型了解Struts2的历史了解Struts2的优点会下载和安装Struts2第一个Struts2项目构建及运行课程目标目录1MVC思想概述2Struts2的下载和安装3Struts2的流程4第一个Struts2程序5本讲小结MVC模式传统Model1和Model2MVC思想及其优势MVC思想是Web项目的普遍模式更符合软件工程思想更利于后期的维护JavaEE开发中常用框架SSH组合框架:JavaEE技术领域的黄金搭档Struts2+Spring+HibernateStruts2MVC框架,在SSH2开发的Web项目中,Struts2是主角,负责整个应用的控制与整体调度。Hibernate持久层框架(ORM中间件),与底层数据库打交道Spring容器框架,充当整个应用的幕后管家,是Struts2的得力助手认识Struts2Apache开源组织开发的首个成熟的MVC框架-Struts,称Struts1,稍后发展起来的另一个MVC框架WebWork在性能上更优于Struts,但名气没有Struts大,后来二者联手,用Struts名气加WebWork技术,从而诞生了混血儿—Struts2。JavaEEMVC模型控制器Servlet视图JSP模型JavaBean数据1请求2操作模型3访问数据库4选择视图5提取模型数据6响应Struts2的MVC实现模型控制器视图拦截器ActionStrutsPrepareAndExecuteFilter……请求响应拦截器ActionContextValueStackrequestsession……Result与JSP、HTML等OGNLOGNLOGNL数据Struts2的MVC实现-说明控制流程:客户端浏览器发起一个请求请求被发送到控制组件StrutsPrepareAndExecuteFilter(公司的前台),它根据地址将其转到相应的模型组件Action。每个Action都会关联一系列的拦截器(层层的守卫),对Action的请求首先经过拦截器的“层层盘查”才能到达Action完成业务逻辑后返回一个结果Result通过Result关联的JSP将响应发送给客户端。数据流程:为便于数据访问,Struts2中将数据集中存放,每个请求的处理流程相关的数据信息都统一放到一个ActionContext对象中。框架提供了OGNL技术来访问存储在ActionContext对象中的数据。Struts2的体系结构目录1MVC思想概述2Struts2的下载和安装3Struts2的流程4第一个Struts2程序5本讲小结Struts项目简介Apache基金会Jakarta项目组的一个开源项目,采用MVC模式;主要技术:Servlet+JSP技术优点:标签库+页面导航Struts2的由来Struts+WebWork=Struts2Struts2中WebWork占的比重更多些框架的优势使用框架可以提高开发效率RickardOberg说:“框架的强大之处不是源自它能让你做什么,而是它不能让你做什么”Struts2的优势集中了MVC领域最强大的两个社区的力量,其技术水平可谓绝无仅有;国内Java领域庞大的用户数量支撑,影响力巨大;发展已久,较为成熟下载与安装Struts2内容解读【解压后的四个文件夹】apps基于Struts2的示例应用,包含5个war包,可直接部署到服务器上运行。docsStruts2的相关文档libStruts2框架的核心类库、Struts2的第三方插件类库,共82个jar包,为避免臃肿,一般只添加必须包含的类库,可以从Struts2示例blank应用中获取。srcStruts2框架的全部源代码Struts2组件解压struts2-blank.war项目WEB-INF\lib文件夹下WEB-INF下的web.xml(Web应用配置文件)WEB-INF\classes下的struts.xml文件(Struts配置文件)部署Struts2自带的例子目录1MVC思想概述2Struts2的下载和安装3Struts2的流程4第一个Struts2程序5本讲小结Struts2应用的开发步骤在web.xml文件中定义filter定义处理用户请求的Action类配置Action类配置处理结果和物理视图资源之间的关系编写视图资源Struts2执行的流程图Struts2的处理流程1.浏览器发送一个请求。2.核心控制器FilterDispatcher根据请求决定调用合适的Action。3.WebWork的拦截器链自动对请求应用通用功能,如验证等。4.回调Action的execute方法,该execute方法根据请求的参数来执行一定的操作。5.Action的execute方法处理结果信息将被输出到浏览器中,支持多种形式的视图。目录1MVC思想概述2Struts2的下载和安装3Struts2的流程4第一个Struts2程序5本讲小结第一个Struts程序第一个Struts2项目的建立、部署及运行实际操作演示添加Struts2支持修改web.xml文件filterfilter-namestruts2/filter-namefilter-classorg.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter/filter-class/filterfilter-mappingfilter-namestruts2/filter-nameurl-pattern/*/url-pattern/filter-mapping创建视图组件创建JSP网页input.jsp用来获取客户端输入信息创建两个JSP网页hello.jsp和unknown.jsp分别代表对客户端请求的两种不同的处理结果视图创建视图组件input.jsphello.jspunknown.jspformaction=greet.actionmethod=post姓名:inputtype=textname=usernameinputtype=submitvalue=提交/form%@pagelanguage=javapageEncoding=UTF-8%%@tagliburi=/struts-tagsprefix=s%htmlheadtitlehello/title/headbodyh2s:propertyvalue=greeting//h2/body/htmlh2对不起,我不与陌生人说话!/h2创建Action-GreetAction.javapublicclassGreetAction{privateStringusername;privateStringgreeting;publicStringgetUsername(){returnusername;}publicvoidsetUsername(Stringusername){this.username=username;}publicStringgetGreeting(){returngreeting;}publicvoidsetGreeting(Stringgreeting){this.greeting=greeting;}创建Action-CreetAction.javapublicStringexecute(){if(.equals(username)){returnFAIL;}else{greeting=您好!+username;returnSUCCESS;}}}配置Struts2将blank应用中的struts.xml拷贝到项目的src根目录,并修改struts元素内容如下:strutspackagename=defaultnamespace=/extends=struts-defaultactionname=greetclass=com.hnjm.action.GreetActionresultname=SUCCESS/hello.jsp/resultresultname=FAIL/unknown.jsp/result/action/package/struts测试运行部署到tomcat7.0服务器运行:配置struts涉及到的文件视图--jsp文件input.jsphello.jspunkown.jsp模型--javabeanGreetAction.java控制--filter(默认)web.xmlweb-inf/配置--struts.xmlsrc/【控制流程分析】客户端单击input.jsp页面的“提交”按钮向服务器发送请求:请求首先交给过滤器:StrutsPrepareAndExecuteFilterStrutsPrepareAndExecuteFilter解析URL,找到相应的模型组件URL,即/greet.action,去掉后缀“.action”,剩余的URL地址“/greet”对应package的命名空间为/,模型组件Action名为“greet”过滤器在struts.xml中找到命名空间为“/”的package,并在其中找到名为“greet”的action,最后将请求交给对应的实现类GreetActionGreetAction的execute()方法被调用,返回一个代表结果的字符串“SUCCESS”或“FAIL”,框架根据返回结果查找struts.xml中action的result配置,并根据配置转到相应的JSP视图目录1MVC思想概述2Struts2的下载和安装3Struts2的流程4第一个Struts2程序5本讲小结本讲小结Struts2概述Struts2的下载和安装第一个Struts2程序的完成