1、b.使用EL表达式61.Struts2框架Action组件的核心应用71)Action组件基本原理7*3)Action属性注入8*4)如何利用一个Action处理多个请求81.前期课程回顾91.Result组件原理91)Result组件的作用92)Result组件实现规则9*2.常用的几种Result组件102)Action响应111.Struts2标签121)通用标签122)表单标签122.拦截器组件12*2)掌握自定义拦截器的使用13=Day01=1)为什么要学习Struts框架 Struts框架是MVC设计模式的实现,基于Struts开发可以简化开发难度,提高开发效率。 MVC是一个非常
2、优秀的设计思想,基于该思想架构程序,可以提高程序的结构灵活性,便于日后维护、扩展和升级。3)MVC在JavaWeb中的实现 Servlet,JSP,Filter,JDBC a.原ShoppingCart程序就是一个MVC结构实现View实现部分:采用JSP组件实现Model实现部分:采用DAO、Entity等组件实现Controller实现部分:采用ActionServlet组件实现 b.ShoppingCart程序虽然基于MVC,但结构还有一些问题: 当请求数量比较多时,需要在Servlet中编写大量的if.else分支语句,而且Servlet代码量非常多。 改造方案:为Servlet提供一
3、个XML配置文件,用于定义请求和Action组件的对应关系。然后将if.else分支中的代码提取到对应的Action组件中。*4) Struts2的主要工作流程 a.首先客户端浏览器发送一个请求,请求到达控制器。 b.控制器根据xml配置信息调用相应的Action组件(XML配置了请求和Action对应关系) c.执行Action组件业务处理,该组件可以调用DAO,Cart,Entity等组件。 d.控制器调用JSP视图组件生成一个响应界面给浏览器5)Struts的内部原理: 编程原理: 用户发送http请求-Web服务器(tomcat)-加载 web.xml(web部署描述文件)文件-执行s
4、truts核心控制器( StrutsPrepareAndExecuteFilter或者filterDispatcher)- 加载struts.xml文件,通过请求action名字找到匹配的action -在action中调用(execute)(业务层|数据层) -执行result=“- 通过result 找到struts.xml与result名字匹配结果-转发到 页面返回给调用者 程序调用:struts内部原理图:(1)用户发送http请求-启动web服务器-加载web.xml(web部署描述文件)配置文件-执行web.xml中相应过滤器 ActionContextCleanUp:清除页面中的
5、属性 other filter(SiteMesh:装饰过滤器) SiteMesh作用:页面布局、装饰 FilterDispatcher:struts2核心控制器 注意:(a)使用SiteMesh(装饰过滤器),struts2容器不在管理页面中属性,需要调用ActionContextCleanUp完成销毁 (b)过滤器执行是有顺序 ActionContextCleanUp-SiteMesh-FilterDispatcher (2)中央控制器FilterDistpacher询问ActionMapper是否需要请求action(3)如果需要请求action,FilterDispatcher就会调用它
6、的代理(ActionProxy)加载配置文件(4)ActionProxy会调用Configuration Manager读取strus.xml配置文件 注意:只加载一次 (5)根据请求名字,ActionProxy(action代理)调用所有拦截器(Inertceptor),ActionProxy(action代理)创建Action Invocation,去执行所对应action类,根据Action类中名字找到匹配result页面(jsp、freeMarker、Velocity)等技术,在此执行拦截器 注意:struts2拦截器和servlet过滤器功能相同,并比filter强大 拦截器执行顺序
7、:先进后出(6)相应给用户(HttpServletResponse)3.Struts2框架的历史 Struts2框架和Struts1没有必然联系,它是将原来的WebWork框架核心部分Xwork提取,进行封装后发布为Struts2。*4.Struts2框架基本使用 *1)Struts2使用步骤 *a.下载发布包,将核心包导入web工程 struts2-core-2.1.8.jar:Struts2核心包 xwork-core-2.1.6.jar : Xwork核心包 ognl-2.7.3.jar :OGNL技术工具包,与EL相似,但比EL强大。 freemarker-2.3.15.jar:界面模
8、板技术,与JSP相似。 commons-fileupload-1.2.1.jar :文件上传包。 *b.配置Struts2控制器,在src下添加struts.xml、Struts2控制器采用的是StrutsPrepareAndExecuteFilter组件实现。 在web.xml文件中配置该Filter组件。 c.根据请求编写Action,DAO,Entity等组件 *2)HelloWord示例 welcome.action-struts2控制器-WelcomeAction-welcome.jsp -Struts2详细工作流程- a.浏览器发出welcome.action请求 b.请求到达St
9、ruts的Filter控制器(由于web.xml配置) c.Struts控制器判断请求类型,如果是/welcome.action或/welcome格式请求,将调用struts.xml配置,寻找对应的Action组件 d.调用Action组件的execute方法处理请求,最后返回一个String视图标识 e.Struts控制器根据视图标识寻找相应的JSP(struts.xml中result配置) f.调用JSP视图生成响应界面给浏览器显示。 =Day02=1.Struts2使用基本规则1)web.xml配置 涉及了Struts2的Filter控制器配置 a.指定正确包名.类名 b.指定/*,控制
10、器可以识别Action组件请求2)Action编写规则 a.执行方法的定义public String XXX() 默认方法名是execute b.属性变量的定义 public class User private String username;/成员变量是username/属性是user public void setUser(String user) this.username = user; public String getUser() return username; 如果action需要接收请求数据或向JSP传递数据,需要与属性名保持一致。 3)struts.xml中的Action
11、配置 1)元素嵌套顺序actionresult 2)元素的extends属性必须继承自struts-default 3)元素name请求名不要加.action,class指定的Action类要正确。 4)ProjectListAction-projectlist.jsp 1)开发步骤 a.引入struts2和数据库的驱动包 b.添加struts.xml配置文件,web.xml添加了Struts控制器配置 c.添加DBUtil工具类 d.添加Entity类 e.添加DAO编写方法 f.添加Action g.添加Action配置(struts.xml) h.添加JSP,显示列表 引入jstl标签库的jar包。 在JSP页面添加标签库引入指令 使用标签