struts2讲义

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

e.g. ums_struts2_02_action/struts.xml Ⅲ. 使用 DMI 或通配符 目的:减少 Action 的数量 方式一:动态方法调用(Dynamic Method Invocation DMI,struts2.1 后不建议使 用) 定义一个 Action 类,类中可以定义多个与 execute()方法,声明部分相同但方法名 不同的方法。 e.g. ums_struts2_02_action/UserAction_DMI.java 1、定义 UserAction_DMI 类
e.g. ScopeAction_3.java 方式四:实现 ServletRequestAware 接口
e.g. ScopeAction_4.java 注意:1、其中,前两种方式与 Servlet API 解耦合,后两种方式与 Servlet API 耦合,推荐使 用第二种方式,第二种方式使用了 IOC 的模式,解耦合更好。 Ⅵ.Action 中生成响应信息 e.g. ums_struts2_02_result Struts2 框架通过 Action 中 execute()方法的返回值,与 struts.xml 中<action>的<result>元 素的 name 属性值来判断最终响应信息的内容。其中<result>元素设置如下: <result type=”结果类型” name=”名称”>WEB 资源路径或名称</result> 说明: 1、name:result 名称随便起,默认为“success“,与 execute 方法返回值一致。 2、 WEB 资源路径或名称:WEB 资源路径如果为相对路径,则该路径相对于 WEB 应用上下文。如果跳转到 Action 则为该 Action 所对应的<action>元素的 name 值。 3、 type:设置生成响应信息的类型,默认为 dispatcher。 (Ⅰ)ActionSupport 中预定义的结果常量 在 Struts2 的 ActionSupport 类中预定义了一些 Result 常量,当定义的 Action 类继承了 ActionSupport 时就可以使用这些结果常量,当然也可以使用自定义的 result 字符串。
login.jsp
(Ⅱ) 使用 ModelDriven 定义 Action 类实现 ModelDriven 接口,在类中声明并创建域对象类型的属性,并实现 接口中的 getModel() 方法,该方法返回域对象。在 JSP 页面中可以直接设置域对象的属性 名作为表单元素的名字。
login.jsp

配置<package>元素: package Байду номын сангаас于功能或领域把逻辑上相关的一组 Action、Result、Interceptor 等元素封 装起来,形成一个独立的模块。
说明:1、name:只是一个逻辑名,通过它可以引用这个包。 2、namespace:用来生成这些包内动作被映射到的 URL 命名空间,默认值为“”。 注意,可以为多个不同包设置相同的命名空间,如果这样做的话,两个包中的动作会映 射到相同的命名空间。默认的命名空间值为“”,根命名空间值为“/”。在空的默认的命名 空间中, 动作名字匹配的所有请求模式可以被捕获, 而根命名空间是一个真实的命名空 间,必须要完全匹配。同一命名空间中不能有 name 属性值相同的 Action。 3、 extends:该属性与另一个包名映射,则另一个包中的组件(如 result、拦截器) 应该被当前包继承。 配置<action>元素: 属性 name class method converter 说明 action 的名字用来匹配请求 URI Action 实现类的全类名 执行 Action 时调用的方法 应用于 action 的类型转换器的 全类名 是否必须 是 否 否 否 无 默认是 ActionSupport 默认是 execute 默认值
e.g. ScopeAction_1.java 方式二:实现 RequestAware、SessionAware、ApplicationAware 接口(推荐使用) 实现指定接口由 Struts2 框架注入
e.g. ScopeAction_2.java 方式三:通过 ServletActionContext
第一章 Struts2 开发入门 Ⅰ.Struts 简介 一个基于 MVC 模式的轻量级 WEB 应用开发框架。 Struts1 与 Struts2 的比较 1、在 Action 实现类方面: Struts1 要求 Action 类继承一个抽象基类; Struts2 Action 类可以实现一个 Action 接口, 也 可以实现其他接口,使可选和定制服务成为可能。 2、线程模式方面: Struts1 Action 是单例模式并且必须是线程安全的;Struts2 Action 对象为每一个请求产生 一个实例,因此没有线程安全问题。 3、Servlet 依赖方面: Struts1 Action 依赖于 Servlet API; Struts2 Action 不再依赖于 ServletAPI。 4、可测试方面: 测试 Struts1 Action 的一个主要问题是 execute 方法依赖于 Servlet 于 ServletAPI, 这使得 Action 仍然的测试要依赖于 Web 容器。Struts2Action 可以通过初始化,设置属性,调用 方法来测试。 5、封装请求参数方面: Struts1 使用 ActionForm 对象封装用户的请求参数,所有的 ActionForm 必须继承一个 基类: ActionForm。 Struts 2 提供了 ModelDriven 模式, 可以让开发者使用单独的 Model 对象来封装用户请求参数,但该 Model 对象无须继承任何 Struts2 基类,是一个 POJO, 从而降低了代码污染。 6、表达式语言方面: Struts1 整合了 JSTL,因此可以使用 JSTL 表达式语言。这种表达式语言有基本对象图遍 历,但在对集合和索引属性的支持上则功能不强。Struts2 可以是用 JSTL,但它整合了 一种更强大和灵活的表达 式语言: OGNL (Object Graph Notation Language) ,因此, Struts2 下的表达式语言功能更加强大。 7、绑定值到视图方面: Struts1 使用标准 JSP 机制把对象绑定到视图页面; Struts2 使用“ValueStack”技术,使标签能够访问值,而不需要把对象和视图页面绑定在 一起。 8、类型转换的方面: Struts 1 ActionForm 属性通常都是 String 类型。 Struts1 使用 Commons-Beanutils 进行类型转换,支持基本数据类型和常用对象之间的转换。 9、数据校验的方面: Struts1 支持在 ActionForm 重写 validate 方法手动校验, 或者通过整合 Commonsalidator 框架来完成数据校验。 Struts2 支持通过重写 validator 方法进行校验,也支持整合 XWork 校验框架进行校验 10、Action 执行控制的方面: Struts1 支持每一个模块对应一个请求处理(既生命周期的概念) ,但是模块中的所有 Action 必须共享相同的生命周期。 Struts2 支持通过拦截器堆栈为每一个 Action 创建不通的生命周期。 开发者可以根据需要 创建相应堆找,从而和不同的 Action 一起使用。 Ⅱ.Struts2 开发环境的搭建:
1、 在 struts.xml 中配置该 Action
2、 设置 JSP 页面中的访问路径 方式二:使用通配符(推荐使用) e.g. ums_struts2_02_action/UserAction.java 1、 第一步同方式一。 2、 第二步在 struts.xml 中配置<action>,如下:
注意:1、使用对象属性和使用 ModelDriven 的区别在于,使用前者时,JSP 页面中的 参数名必须为“域对象名.属性名”,而用后者时,JSP 页面中的参数名使用“属性名”即可。 Ⅴ.操作作用域中的数据 e.g. ums_struts2_02_scope 方式一:使用 ActionContext
3、 访问路径,如下: 注意:1、利用好通配符可以减少<action>元素的配置,如:
访问:
Ⅳ.Action 中接收请求参数 e.g. ums_struts2_02_param/UserAction.java Struts2 利用 params 拦截器将请求报文中的参数填充到 Action 对应的属性中去。 在 Action 中,主要可以利用两种方式来获取客户端请求报文中的参数信息: 方式一:使用 Action 中的属性。 方式二:使用 ModelDriven。 (Ⅰ) 使用 Action 中的属性 a. 采用基本类型属性接收请求参数 b. 采用复合类型(对象类型)属性接收请求参数 在 Action 类中定义与请求参数同名的属性,struts2 便能自动接收请求参数并赋予给同 名属性。struts2 通过反射技术调用与请求参数同名的属性的 setter 方法来获取请求参数值。 利用这种方式,我们还可以设置复杂的对象属性,如:UserAction.java
在 web 开发的基础上, 1、在官网 /download.cgi 上,下载 struts 资源包,将相关 jar 包添加到 web 应用的 lib 文件夹下; 2、编写 struts2 的配置文件 struts.xml,可以从示例中复制,放到 web 应用的 src 文件夹下; 3、在 web.xml 中加入 struts2 MVC 框架启动配置。 注意: 1、 Struts 2 应用默认需要 Java 5 运行时环境, 需要支持 Servlet API 2.4 和 JSP API 2.0 的 Web 容器。 Ⅲ.第一个 Struts2 应用 1、 视图层组件: 页面:login.jsp、welcome.jsp、error_login.jsp。 注意:1、设置 login.jsp 的<form>的 action 属性为 login.action。 2、 控制器层组件: Action 类:LoginAction.java。 配置 Action 类:在 struts.xml 文件中添加配置信息。 注意:1、Struts 2 的 Action 就是一个包含 execute 方法的普通 Java 类,该类里包含的多 个属性用于封装用户的请求参数。 3、 模型层组件: Service 类:UserService.java Dao 类:UserDao.java 4、 部署 WEB 应用到 Tomcat 服务器,并启动服务器。 5、 打开浏览器, 在地址栏输入 http://localhost:8080/ums_struts2_first/login.jsp 访问登录功能。 e.g. ums_struts2_01_first 第二章 Struts2 中的 Action Ⅰ. Action 简介 业务逻辑控制器,负责处理单个特定请求。在 Action 中我们主要实现: 1、 获取并处理请求报文中的参数信息; 2、 调用业务层方法处理请求; 3、 生成响应信息。 Ⅱ.Action 的实现 创建 Action 类,有三种方式: 1、 一个普通的类, 不需要实现任何接口或继承任何类,定义与请求报文中参数相 匹配的属性,定义 execute 方法。 e.g. ums_struts2_02_action/LoginAction.java 2、 实现 Action(com.opensymphony.xwork2.Action)接口,定义与请求报文中参数相 匹配的属性,实现 execute 方法。 e.g. ums_struts2_02_action/RegisterAction.java 3、 继承 ActionSupport 类(com.opensymphony.xwork2.ActionSupport),定义与请求 报文中参数相匹配的属性,重写 execute 方法。最常用的一种方式,好处在于 可以直接使用 Struts2 封装好的方法。 e.g. ums_struts2_02_action/ListUserAction.java
相关文档
最新文档