Struts 2 Action配置、实现和使用

一、action实现的三种方式及配置
1.1 POJO
  • Action类是一个普通的POJO。
  • 无需实现任何接口,无需继承任何基类,无入侵性,与Servlet API解耦。
  • 包含一个无参的execute方法,用于处理用户请求。
  • 处理完后,通过字符串映射物理资源,不利于项目管理。

Struts 2 Action配置、实现和使用插图

这种方式是Struts2通过反射来实现的:

  • (1)Struts2读取struts.xml配置文件获得Action类的完整限定名;
  • (2)object = Class.forName(“完整类名”).newInstance();
  • (3)Method method = Class.forName(“完整类名”).getMethod(“execute”);
  • (4)method.invoke(object);

1.2 实现Action接口

  • 该接口中定义了5个字符串常量,用于统一、简化execute方法的返回值。
  • 该接口中定义了唯一的execute方法,必须实现。
  • 依然可以使用特定的字符串作为逻辑视图名。

接口

Struts 2 Action配置、实现和使用插图(1)

1.3 继承ActionSupport类

  • ActionSupport类提供了Struts2框架中基础接口(Action接口、Validateable接口等)的默认实现。
  • 继承该类,可以大大简化Action的开发。
  • 如果在struts.xml没有指定action的实现类,那么该基类为默认的Action处理类。

ActionSupport类

Struts 2 Action配置、实现和使用插图(2)

继承ActionSupport类

Struts 2 Action配置、实现和使用插图(3)

请求后缀的指定

  • 如果没有指定请求后缀,则默认的请求后缀为.action。
  • 使用<constant>元素为“struts.action.extension”常量指定需要Struts2处理的请求后缀。

 

命名空间的配置(namespace)/开头

  • 命名空间主要是用来解决在同一个Web应用中action的重名问题。
  • 同一个命名空间内不能有同名的Action,不同的命名空间内可以有同名的Action。
  • 网站根目录+Action命名空间+Action名称+Action请求后缀

下面例子访问路径: http://localhost:8080/struts2.5/user/login.action

Struts 2 Action配置、实现和使用插图(4)

下面的访问路径:http://localhost:8080/struts2.5/login.action

Struts 2 Action配置、实现和使用插图(5)

二、Action请求参数注入和处理

直接使用实例解释

2.1 属性驱动

接在Action类中定义成员属性来接收请求参数

Action类 及JSP配置

Struts 2 Action配置、实现和使用插图(6) Struts 2 Action配置、实现和使用插图(7)

JSP 页面与Action类中定义的成员变量名同名,知识struts2框架本身规定的。

2.2 属性驱动2

将JavaBean作为Action类的成员属性来接收请求参数

Struts 2 Action配置、实现和使用插图(8)

 

在Action中定义实体类对象,并设置setter/getter方法(必须否则报空指针错误)。在JSP页面中,表单控件name属性值为“Action中定义的实体类对象.实体类的属性名”。

2.3 模型驱动

在Action中定义实体类对象,并实例化;Action类实现ModelDriven<T>接口,并重写接口的getModel()方法。表单控件name属性值为“实体类的属性名”。

 

Struts 2 Action配置、实现和使用插图(9)

 

如何选择?

建议统一整个系统中的Action使用的驱动模型,即要么都使用属性驱动,要么都使用模型驱动。

持久层对象的属性与表单提交的数据相对应,就使用模型驱动。如“添加商品”表单。

持久层对象的属性与表单提交的数据不对应,就使用属性驱动。如“登录”表单。

 

2.4 Action 访问顺序

Struts2根据url地址,首先在指定的命名空间的包中查找用户请求的Action;如果未找到,就会在默认命名空间的包中查找用户请求的Action,如果仍未找到,则系统会抛出异常。

文章已创建 80

发表评论

电子邮件地址不会被公开。 必填项已用*标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部