已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学习笔记Struts2部分学习笔记讲师:梁建全目录Day015一、前言51、为什么要学习Struts框架52、如何学习Struts框架5二、MVC在JavaWeb程序的使用51、什么是MVC?52、为什么使用MVC?53、MVC在JavaWeb中的实现5a、原ShoppingCart程序就是一个MVC结构实现5b、ShoppingCart程序虽然基于MVC,但结构还有一些问题54、Struts2的主要工作流程5三、Struts2框架的历史6四、Struts2框架基本使用61、Struts2使用步骤6a、下载发布包,将核心包导入web工程6b、配置Struts2控制器,在src下添加struts.xml、Struts2控制器采用的是StrutsPrepareAndExecuteFilter组件实现。6c、根据请求编写Action,DAO,Entity等组件62、HelloWord示例6Day027一、Struts2使用基本规则71、web.xml配置72、Action编写规则73、struts.xml中的Action配置7二、实现一个列表显示功能71、开发步骤7三、OGNL表达式81、什么是OGNL82、OGNL工作原理83、OGNL表达式语法8Day039一、Struts2框架Action组件的核心应用91、Action组件基本原理92、如何在Action中使用request,session,application等对象93、Action属性注入104、如何利用一个Action处理多个请求10Day0410一、Result组件原理101、Result组件的作用102、Result组件实现规则103、Result组件的使用11二、常用的几种Result组件111、JSP响应112、Action响应123、流响应124、JSON响应12Day0513一、Struts2标签131、通用标签132、表单标签13二、拦截器组件131、拦截器组件规则 add.action(表单数据)-params13a、拦截器组件的作用(工作流程)13b、拦截器组件的使用规则142、掌握自定义拦截器的使用143、内置拦截器的使用15Day01一、 前言1、 为什么要学习Struts框架Struts框架是MVC设计模式的实现,基于Struts开发可以简化开发难度,提高开发效率。2、 如何学习Struts框架先掌握Struts框架的使用,有余力可以了解下实现原理。二、 MVC在JavaWeb程序的使用1、 什么是MVC?MVC是一种设计思想,根据职责不同将程序中的组件分成以下3个部分。l V(View视图):负责与用户交互。将数据展现,或者是接收数据l M(Model模型):负责业务处理。业务模型,数据模型l C(Controller控制器):负责协同模型和视图工作。视图有请求调用模型处理,模型处理完毕调用视图响应。2、 为什么使用MVC?MVC是一个非常优秀的设计思想,基于该思想架构程序,可以提高程序的结构灵活性,便于日后维护、扩展和升级。3、 MVC在JavaWeb中的实现 Servlet,JSP,Filter,JDBCa、 原ShoppingCart程序就是一个MVC结构实现l View实现部分:采用JSP组件实现l Model实现部分:采用DAO、Entity等组件实现l Controller实现部分:采用ActionServlet组件实现b、 ShoppingCart程序虽然基于MVC,但结构还有一些问题 当请求数量比较多时,需要在Servlet中编写大量的if.else分支语句,而且Servlet代码量非常多。 改造方案:为Servlet提供一个XML配置文件,用于定义请求和Action组件的对应关系。然后将if.else分支中的代码提取到对应的Action组件中。4、 Struts2的主要工作流程l 首先客户端浏览器发送一个请求,请求到达控制器。l 控制器根据xml配置信息调用相应的Action组件(XML配置了请求和Action对应关系)l 执行Action组件业务处理,该组件可以调用DAO,Cart,Entity等组件。l 控制器调用JSP视图组件生成一个响应界面给浏览器三、 Struts2框架的历史Struts2框架和Struts1没有必然联系,它是将原来的WebWork框架核心部分Xwork提取,进行封装后发布为Struts2。四、 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:界面模板技术,与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.jspStruts2详细工作流程: 浏览器发出welcome.action请求 请求到达Struts的Filter控制器(由于web.xml配置) Struts控制器判断请求类型,如果是/welcome.action或/welcome格式请求,将调用struts.xml配置,寻找对应的Action组件 调用Action组件的execute方法处理请求,最后返回一个String视图标识 Struts控制器根据视图标识寻找相应的JSP(struts.xml中result配置) 调用JSP视图生成响应界面给浏览器显示。Day02一、 Struts2使用基本规则1、 web.xml配置 涉及了Struts2的Filter控制器配置 指定正确包名.类名 指定/*,控制器可以识别Action组件请求2、 Action编写规则 执行方法的定义public String XXX() 默认方法名是execute 属性变量的定义 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配置 元素嵌套顺序- 元素的extends属性必须继承自struts-default 元素name请求名不要加.action,class指定的Action类要正确。 元素的name属性与Action方法返回值保持一致。二、 实现一个列表显示功能 /list.action-ProjectListAction-projectlist.jsp1、 开发步骤 引入struts2和数据库的驱动包 添加struts.xml配置文件,web.xml添加了Struts控制器配置 添加DBUtil工具类 添加Entity类 添加DAO编写方法 添加Action 添加Action配置(struts.xml) 添加JSP,显示列表 引入jstl标签库的jar包。 在JSP页面添加标签库引入指令使用标签三、 OGNL表达式1、 什么是OGNL OGNL技术可以独立使用,封装在ognl.jar开发包中。Object Graphics Navigation Language 对象图导航语言。主要作用是对一些复杂对象的属性和方法进行访问。 EL表达式主要功能:用于访pageContext,request,session,application范围内存存储的数据。 OGNL不仅可以访问数据,还具有访问方法,对集合进行操作等功能。2、 OGNL工作原理 OGNL工具由三部分构成,分别是: OGNL引擎:负责解释执行OGNL表达式,按表达式区root或map区域寻找数据。 Root根对象区域:访问该区域数据OGNL表达式简洁方便。适合放置访问频繁的对象元素。 Map对象存储区 :访问该区域需要使用“#key”访问。适合放置访问不频繁的对象元素。使用时,给OGNL引擎指定一个表达式,该引擎根据表达式去Root区或Map区访问对象的属性或方法。3、 OGNL表达式语法 访问Root对象某个简单属性 表达式: 属性名 访问Root对象某个数组或者List集合 表达式:属性名0 访问Root对象某个Map集合 表达式:属性名.key或者属性名key 访问Root对象某个复合类型属性address 表达式: address.子属性 访问Root对象某个复杂属性 List addresses 表达式:addresses0.子属性 访问Root对象的某个属性的方法 表达式:属性名.方法() 支持Java中的表达式和运算符 定义一个List常量 表达式:A,B,C 定义一个Map常量 表达式:#key1:value1,key2:value2 访问静态常量或方法 表达式:包名.类型常量名或方法上述语法如果访问Map区域一样使用,只要注意追加#key.Day03一、 Struts2框架Action组件的核心应用1、 Action组件基本原理 当浏览器发送一个请求给Struts2控制器 控制器要创建一个ValueStack对象,将其存储在request中,使用struts.valueStack当做key。 控制器创建一个Action对象,并Action对象添加到ValueStack对象栈顶位置。 控制器将request封装之后,再将request,session,application等对象添加到ValueStack的context(Map)区域。 控制器调用Action对象的业务方法,处理请求。默认调用execute 控制器根据execute返回结果,调用result视图响应 上述过程:Action对象在请求处理完毕后销毁,因此与request对象生命周期相同。2、 如何在Action中使用request,session,application等对象 采用Aware接口方式注入到Action中(推荐在Action中使用)如果获取Map结构的可以使用RequestAware,SessionAware,ApplicationAware接口。 如果获取Servlet类型的可以使用ServletRequestAware,ServletResponseAware,ServletContextAware。 b.采用ActionContext工具类方式使用(推荐在Action之外使用) ActionContext方法获取Map结构的 ServletActionContext方法获取Servlet应用类型的如何将request封装成Map结构:public class RequestMap extends AbstractMap private HttpServletRequest request; public RequestMap(HttpServletRequest request)this.request = request; /重写抽象Map的方法 public void put(Object key,Object value)request.setAttribute(key.toString(),value); public Object get(Object key)Object val = request.getAttribute(key.toString();return val; 同理,SessionMap,ApplicationMap都做过类似封装3、 Action属性注入 指的是在action配置时,为Action对象的属性指定值。 属性值 在action对象创建完毕后,会自动调用属性的setter方法设置值。4、 如何利用一个Action处理多个请求 在action配置时使用通配符* 在元素的name属性中可以使用若干个*号,然后在其他属性中可以使用1,2格式引用第1个、第2个*号所代表的字符串信息 使用动态方法调用(推荐) 可以在发请求时,指定action方法名。 请求格式:请求名!方法名.actionDay04一、 Result组件原理1、 Result组件的作用 负责调用视图组件,生成响应内容。Struts2提供了各种类型的响应Result组件,用于JSP页面、流、JSON、图形、报表等响应类型。2、 Result组件实现规则 Result组件实现类 必须实现Result接口,实现接口约定execute()方法。 Result组件的声明定义 在struts的XML配置中,使用如下格式: . . 3、 Result组件的使用 首先元素所在的package必须能找它的定义。 利用元素的type属性指定使用的Result类型,默认值为 dispatcher。public class RedirectResult implement Result private String location;/接收注入的URL地址 /setter和getter public void execute() /重定向 HttpServletResponse res = ServletActionContext.getRequest(); res.sendRedirect(location); /login.jsp 二、 常用的几种Result组件1、 JSP响应 dispatcher :采用请求转发方式调用JSP组件响应。 redirect:采用请求重定向方式调用JSP组件响应。(在重定向后,原request和action都被销毁掉,因此在JSP获取不到值) 使用格式如下: /msg.jsp 或者使用简写 /msg.jsp 2、 Action响应 delete.action?id=1-DeleteAction-ListAction-list.jsp redirectAction:采用重定向方式发出一个*.action请求 chain:采用转发方式发出一个*.action请求 使用格式如下: 调用不同命名空间的action时: 请求名 命名空间 调用相同命名空间的action时: 请求名 -*.action-Action1-chain-Action2-chain-Action33、 流响应 典型功能:验证码和下载。 stream:可以将Action中的一个InputStream类型属性以流方式响应输出。 使用格式如下: Action属性 4、 JSON响应 负责对Ajax请求进行数据响应。 json:可以将Action中的一个属性或多个属性以json格式响应输出 使用格式如下: 如果需要返回一个属性值 Action属性 如果需要返回多个属性值 Action属性1,Action属性2 如果需要返回所有属性值 注意:使用前需要引入struts-json-plugin.jar,然后将元素的extends设置成json-defaultDay05一、 Struts2标签 主要用于简化JSP代码,用于显示模型中的数据。1、 通用标签 property,date,iterator,if.else.2、 表单标签 textfield,password,hidden,textarea,checkbox,radio,select textfield,password,hidden,textarea利用name属性指定ognl表达式 b.checkbox利用name属性指定ognl表达式,该属性值用boolean。 c. radio,checkboxlist,select 利用list属性指定ognl表达式,指定一个集合。标签可以根据该集合动态生成元素。listKey指定的属性值为不可见value;listValue指定的属性值为用户可见; 利用name属性指定值,控制哪些元素选中。示例:form.action-FormAction-form.jsp二、 拦截器组件1、 拦截器组件规则 add.action(表单数据)-paramsa、 拦截器组件的作用(工作流程) 客户端发送请求,请求到达Filter控制器 控制器根据请求信息创建ValueStack对象并实例化 控制器调用一系列的Interceptor拦截器前期处理(defaultStack) invocation.invoke(); 控制器调用Action组件,执行execute方法 控制器调用Result组件,解释JSP标签 控制器调用一系列的Interceptor拦截器后续处理 将生成的响应信息输出拦截器可以在Action和Result调用之前和之后添加处理逻辑。因此适合将一些共通处理写成拦截器,实现重复利用。 例如权限检查,日志的记录,以及事务处理等。b、 拦截器组件的使用规则 编写拦截器组件 编写一个实现类,该类必须实现Interceptor接口,并实现约定的interceptor()方法。 拦截器的声明注册 /. . 拦截器的使用 设置执行默认的拦截器(当Action没有指定拦截器时,默认调用) 为某些Action单独指定拦截器 2、 掌握自定义拦截器的使用注意:当为Action指定了之后,默认的defaultStack将不会再调用。因此需要使用引用一下。否则原有机制会出问题,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 疼痛学(中级358)基础知识卫生专业技术资格考试巩固策略精析(2026年)
- 专题6.1 反比例函数-北师大版九年级《数学》上册培优讲义
- 舆情监测数据服务供应合同2026
- 线上线下生产管理合作协议
- 2026年管理时间测试题及答案
- 2026年包装印刷测试题及答案
- 2026年高二化学实验测试题及答案
- 2026年法学简单测试题及答案
- 2026年公司面逻辑测试题及答案
- 2026年心理罪预告测试题及答案
- 2026年郑州消防文员考试试题及答案
- 运力采购制度
- 融媒体中心内部审计制度
- 城市公交重大事故隐患排查治理指导手册
- 贵阳农产品物流发展有限公司招聘考试题库附答案解析
- 2025年手术分级管理目录(基于政策修订版)
- 2025年电力调度证考试题库及答案
- 红楼梦李纨人物课件
- 全程陪伴分娩标准化流程
- 超声卫生高级职称(副高)2025真题试卷及答案
- 《我为什么而活着》小学教学课件
评论
0/150
提交评论