资源预览内容
第1页 / 共26页
第2页 / 共26页
第3页 / 共26页
第4页 / 共26页
第5页 / 共26页
第6页 / 共26页
第7页 / 共26页
第8页 / 共26页
第9页 / 共26页
第10页 / 共26页
亲,该文档总共26页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
Struts2 day01序1)为什么需要Struts框架 企业需求,利用Struts框架可以简化开发2)如何学习Struts 先学习如何使用,有余力再了解一些实现原理.1.MVC设计思想在JavaWeb开发当中的使用 1)什么是MVC? 是一种设计思想,非常优秀的设计思想.根据职责不同将应用程序的组件分成三部分. Model模型:负责业务数据和业务处理. View视图:负责显示和接收用户输入. Controller控制器:协调模型和视图 2)MVC在JavaWeb中的体现 Model:DAO,Entity,Util View:JSP Controller:Servlet 示例程序:ShoppingCart,控制器过于复杂,包含大量的if.else,不适合大型复杂程序的开发. 采用XML+Servlet+Action结构改造控制实现 *3)MVC工作的基本流程 a.客户端发请求,请求交给前端控制器处理 b.前端控制器维护一个XML配置文件 (XML定义了请求和Action之间的对应关系) c.前端控制根据请求调用相应的Action组件,执行请求处理 d.Action处理完毕,可以将处理结果存放到Request e.控制器调用相应的视图JSP,进行响应处理 4)Struts框架封装了上述主要流程和结构2.Struts2入门示例 HelloWorld 1)Struts2发展史 Struts1.2 WebWork-xwork(命令模式实现) Struts2 2)入门示例 a.引入框架开发包(5个核心包) 2.1.8版本 struts2-core-2.1.8.jar xwork-core-2.1.6.jar commons-fileupload-1.2.1.jar freemarker-2.3.15.jar(模板视图技术,等价于JSP功能) ognl-2.7.3.jar(与EL相似,但是功能强大) b.在web.xml中添加控制器配置 strutsfilter org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter strutsfilter /* c.创建Action 创建WelcomeAction类,添加默认execute方法 d.添加XML配置,在src下添加struts.xml文件 /welcome.jsp 执行流程如下:welcome.action-web.xml(filter控制器)-struts.xml(Action配置)-WelcomeAction-execute-success-struts.xml(result配置) 3)action配置 a.元素:作用是将Action分组管理,内部可以定义多个Action. *name属性:包名称. *extends属性:继承哪个package,一般情况下继承自struts-default. namespace属性:用于限定action请求名,默认值是/ 当namespace=/时,当前package中的所有action对应的请求格式: http:/localhost:8080/struts2/action请求名.action 如果namespace=/day01时,action对应的请求格式: http:/localhost:8080/struts2/day01/action请求名.action b.元素:作用是定义请求和Action组件之间的对应关系 *name属性:action组件对应的请求名 *class属性:指定action组件的实现类,包名.类名格式 method属性:指定要调用action类中哪个方法.默认值是execute c.元素:作用是定义响应视图 *name属性:响应视图标识符,该标识符与action组件方法返回值对应. type属性:指定响应视图类型,默认值是dispatcher,请求转发 -练习-完成Hello示例完成列表显示示例(尝试下)扩展功能:实现分页显示1.练习问题 1)Action中利用DAO可以获取出数据库数据,但是JSP获取不到. 原因:1.检查Action属性及getter方法 2.检查struts.xml中元素的配置,不能使用type=redirect 3.检查execute中接收集合的变量是否为局部变量 2) 工程启动出现错误 由于web.xml或struts.xml配置有误.可以根据异常信息寻找.2.补充问题 1)Action属性及setter和getter方法的问题 Action属性在接收和传出数据时,setter和getter方法是关键. a.接收时,表单组件name=user ,action要有setUser方法才可以接收. b.传出数据时,JSP使用$user,action要有getUser方法对应才可以获取. public class Action private String name;/成员变量name /有一个属性,名字是user public String getUser() return name; public void setUser(String user)name = user; 3.OGNL技术 Object Graphics Navigation Language(对象图导航语言) OGNL是一种表达式语言技术,封装在ognl.jar开发包中.可以很方便的对对象的属性进行获取和设置. 1)什么是EL,有什么用 属于表达式语言,可以访pageContext,request,session,application存储范围的数据.可以简化JSP程序. 2)OGNL表达式,有什么用 属于表达式语言,需要ognl.jar提供支持.可以完成以下操作 a.可以访问对象属性(获取和设置) 基本类型属性:id,name 数组类型属性:love0,love1 List类型属性:city0,city1 Map类型属性:books.key,bookskey b.可以访问对象的方法 city.size(),name.toUpperCase() c.可以访问静态常量和方法 java.lang.MathPI d.可以访问集合中的数据,进行集合过滤等操作 persons.?#this.age20 : 返回persons集合中,满足age20的所有元素. ?指的是返回所有满足条件的元素 指的是返回第一满足条件的元素 $指的是最后一个满足条件的元素 e.支持Java中的运算符和表达式 name+name,id+10 f.定义一个List和Map类型的常量 List常量:1,2,3 Map常量:#age:20,name:tom 3)OGNL标准结构 OGNL有3个重要组成部分,一个OGNL引擎,一个是root对象,另一个是context对象. 访问context区域需要使用#key格式. 没有#,例如name,意思是访问root对象的name属性4.OGNL技术在Struts2中应用 1)OGNL在xwork中进行了改造 xwork将OGNL中的root对象进行了改造,将其改造成了一个栈结构,类型是CompountRoot继承自ArrayList.在访问root属性时,从栈顶对象向下依次查找,找到属性值返回. 2)ValueStack结构 ValueStack是Struts2中非常重要的数据对象,当客户发送一个请求后,控制器会根据当前请求创建一个ValueStack,并将请求处理相关的数据进行填充. root栈:存放当前请求对应的Action对象(栈顶) context(Map):存放request,session,application,parameters等信息 3)JSP获取业务数据,需要使用Struts标签+OGNL表达式技术组合-练习:课上示例总体要求:了解ValueStack内部结构,了解OGNL表达式语法 学会标签+OGNL表达式基本使用1.课程回顾(理解) 1)ValueStack结构和数据存储状态 ValueStack包含3个组成 a. OGNL引擎:负责解析OGNL表达式 b. root对象:CompountRoot(栈结构) 存放了当前请求的Action对象(处于栈顶位置) c. context对象:Map结构 存放了其他象. request:Object session:Object application:Object 2) ValueStack原理 a.当客户发送一个请求后,控制器会创建一个ValueStack对象 b.控制器创
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号