–核心掌握器:过滤器 (Struts2供应的一个过滤器,由web.xml的filter和filter-mapping标识来设置

–struts2的掌握组件类型: 业务逻辑掌握器:Action

不属于jsp基本数据类型第2讲 Struts2的掌握组件 CSS

•创建业务逻辑掌握器步骤:

–创建Action类 。

–创建struts.xml配置包、动作等内容。

1.创建Action类的方法:POJO、实现Action接口、扩展ActionSupport类(

扩展ActionSupport类,可以使我们创建的Action更大略、更规范,以是推举用它。

扩展ActionSupport类创建动作类语法

•扩展ActionSupport类

•声明成员变量 (便是jsp页面中的要通报的参数,比如用户名和密码等在此类中声明。

•定义对应传入参数的属性的setter和getter方法。

•动作类通过属性的setter方法获取客户端传来的数据,并保存在动作类成员变量中,客户端则通过属性的getter方法获取动作类的数据 。

•动作被访问后默认实行execute()方法:public String execute() throws Exception、

•按照execute()方法的语法规范创建其他action业务方法。

•动作处理客户端要求后会返回一个字符串,每个字符串对应一个逻辑视图。

•当动作类继续了ActionSupport后,常日利用以下一些常量作为动作实行后的返回值: INPUT 、SUCCESS、LOGIN、NONE和ERROR

这是Action接口的声明常量,扩展ActionSupport类后可以直接拿来用

Action接口中的常量返回值含义:

–ERROR:表示动作类实行失落败。

–SUCCESS:表示动作类实行成功,并将由干系的视图页面显示结果 。

–LOGIN:表示须要先登录才可以实行动作 。

–INPUT:表示须要输入全部数据才能实行动作或数据输入无效需重新输入 。

–NONE:表示动作类实行成功,但不显示任何页面。

在struts.xml中配置包和动作

配置包:利用package标记,可以包含多个动作,常用属性如下:

例如:

<action name=\公众HelloWorld\"大众 class=\"大众hello.HelloWorld\"大众 method=\公众addUser\公众>

……

</action>

定义动作结果:利用result标记,可以在一个<action>标记对中利用一个或多个result标记为动作指定一个或多个结果映射,常用属性如下:

例如:

<action name=\"大众HelloWorld\"大众 class=\"大众hello.HelloWorld\公众 method=\"大众addUser\"大众>

<result name=\"大众error\公众>/input.jsp</result>

<result name=\公众success\公众 type=\"大众redirect\公众>/welcome.jsp</reslut>

</action>

常用的结果类型

Action处理要求参数方法

•属性驱动:通过字段进行数据通报 –属性为基本数据类型 –属性为域工具。

•模型驱动:通过Action实现ModelDriven接口来吸收要求参数。

1.属性为基本数据类型:

语法:

Ø要求参数为基本数据类型。

ØAction类中声明和要求参数名及类型同等的变量。

Ø在Action类中定义与要求参数名同等的基本数据类型的属性的setter和getter方法

例如:

jsp页面定义基本数据类型

动作类

2.属性为域工具

语法:

Ø创建域工具类,个中属性和参数名同等。

Ø要求参数格式为:域工具.基本数据类型属性。

ØAction类中声明和域工具名字和类型同等的变量。

Ø在Action类中定义与域工具同等类型和名字的属性的setter和getter方法。

示例:

创建域工具

创建表单及Action类

3.模型驱动处理要求参数(推举)

语法:

Ø创建域工具类,个中属性和参数名同等。

Ø要求参数格式为:基本数据类型,名字和类型和域工具中的属性同等。

ØAction类实现ModelDriven接口,实例化域工具并重写getModel()方法返回域工具。

示例:

创建域工具

创建表单及Action类

在Struts2项目中运用掌握组件

•步骤:

①创建web项目

②搭建struts2运行环境

③在web.xml文件中设置核心掌握器

④创建一个扩展ActionSupport的动作类

⑤创建结果显示JSP文件,保存目录为WebRoot

⑥创建struts.xml,在个中定义动作包、动作等内容,保存目录为src

实行动作中不同的方法

方法一:动态方法调用(DMI),格式:在URL中利用:动作名!
方法名.action来调用动作。

<constant name=\公众struts.enable.DynamicMethodInvocation\公众 value=\"大众true\公众/>

<package name=“MethodDemo\"大众 namespace=\公众/user\"大众 extends=\"大众struts-default\"大众>

<action name=“userAction\"大众class=“…\"大众 >

<result name=“insert”>/insertUser.jsp</result>

<result name=“edit”>/editUser.jsp</result>

</action>

</package>

•方法二:定义多个逻辑动作,在每个逻辑动作中指定不同的业务处理方法来处理不同情形下的要求。
例如:

<package name=\公众methodDemo\公众 namespace=\公众/user\"大众 extends=\公众struts-default\公众>

<action name=“add\"大众method=“insertUser\"大众 class=“…\公众 >

<result name=“insert”>/insertUser.jsp</result>

</action>

<action name=“edit\"大众method=“editUser\"大众 class=“…\"大众 >

<result name=“edit”>/editUser.jsp</result>

</action>

•方法三:利用通配符号。
通过在struts.xml中对动作名利用通配符可以在不同要求情形下实行不同动作方法。
例如:

<package name=\"大众methodDemo\"大众 namespace=\公众/user\"大众 extends=\公众struts-default\"大众>

<action name=\"大众Action\公众method=\"大众{1}\公众 class=“…\"大众 >

Action访问Servlet API

•常用办法:

–利用ActionContext类来访问

–利用ServletActionContext类来访问

–通过特定接口访问(请查阅教材)

ActionContext常用的方法

示例

ServletActionContext常用方法