Action类编写成POJO的类。 Action类实现一个Action的接口。 Action类继承ActionSupport类(常用的)。
1、Action类编写成POJO的类
什么是POJO类? 就是一个普通的,只默认继承Object的java简单类。
测试代码:
// 第一种方式:普通的POJO类,编写execute()方法 public class HelloAction1 { public String execute() { System.out.println("HelloAction1的execute()方法执行了。。。"); return null; } }2、Action类实现一个Action的接口
测试代码:
import com.opensymphony.xwork2.Action; /* 实现的接口中定义了5个逻辑视图常量: SUCCESS :成功 ERROR :失败 LOGIN :登录出错页面跳转 INPUT :表单校验的时候出错 NONE :不跳转 */ // 第二种方式:实现Action接口,实现execute()方法 public class HelloAction2 implements Action { @Override public String execute() throws Exception { System.out.println("HelloAction2的execute()方法执行了。。。"); return NONE; } }3、Action类继承ActionSupport类(常用的)
测试代码:
import com.opensymphony.xwork2.ActionSupport; // 第三种方式:继承ActionSupport类,重写execute()方法 public class HelloAction3 extends ActionSupport { @Override public String execute() throws Exception { System.out.println("HelloAction3的execute()方法。。。"); return NONE; } }推荐使用第三种方式编写Action类,继承ActionSupport类。 继承了ActionSupport,就继承了一系列的功能。
通过method设置。 通过通配符的方式进行配置(经常用的)。 通过动态方法访问。
在开发中,并不会一个请求对应一个Action类。 而是一个模块中的多个请求对应一个Action类,一个请求对应类中的某一个方法。
1、通过method设置
(1)JSP代码:
<h3>通过method的方式</h3> <a href="${ pageContext.request.contextPath }/user_find">查询用户</a> <a href="${ pageContext.request.contextPath }/user_save">保存用户</a> <a href="${ pageContext.request.contextPath }/user_update">更新用户</a> <a href="${ pageContext.request.contextPath }/user_delete">删除用户</a>(2)struts.xml代码:
<package name="test01" extends="struts-default" namespace="/"> <action name="user_find" class="com.pipi.struts.test02.UserAction" method="find"></action> <action name="user_save" class="com.pipi.struts.test02.UserAction" method="save"></action> <action name="user_update" class="com.pipi.struts.test02.UserAction" method="update"></action> <action name="user_delete" class="com.pipi.struts.test02.UserAction" method="delete"></action> </package>(3)Action类代码:
package com.pipi.struts.test02.UserAction; import com.opensymphony.xwork2.ActionSupport; class UserAction extends ActionSupport { public String find() {return NONE;} public String save() {return NONE;} public String update() {return NONE;} public String delete() {return NONE;} }2、通过通配符的方式进行配置(经常用的)
(1)JSP代码:
<h3>通过*通配符的方式</h3> <a href="${ pageContext.request.contextPath }/user_find">查询用户</a> <a href="${ pageContext.request.contextPath }/user_save">保存用户</a> <a href="${ pageContext.request.contextPath }/user_update">更新用户</a> <a href="${ pageContext.request.contextPath }/user_delete">删除用户</a>(2)struts.xml代码:
<package name="test02" extends="struts-default" namespace="/"> <!-- *表示任意字符,{1}表示第一个 * 号的内容 --> <action name="user_*" class="com.pipi.struts.test02.UserAction" method="{1}"></action> </package>(3)Action类代码:
package com.pipi.struts.test02.UserAction; import com.opensymphony.xwork2.ActionSupport; class UserAction extends ActionSupport { public String find() {return NONE;} public String save() {return NONE;} public String update() {return NONE;} public String delete() {return NONE;} }甚至还有更加抽象的写法,例如:
<action name="*_*" class="com.pipi.struts.test02.{1}" method="{2}"></action>3、通过动态方法访问
(1)JSP代码:
<h3>通过动态方法的方式</h3> <a href="${ pageContext.request.contextPath }/user!find">查询用户</a> <a href="${ pageContext.request.contextPath }/user!save">保存用户</a> <a href="${ pageContext.request.contextPath }/user!update">更新用户</a> <a href="${ pageContext.request.contextPath }/user!delete">删除用户</a>(2)struts.xml代码:
<!-- 修改动态方法访问常量值 --> <constant name="struts.enable.DynamicMethodInvocation" value="true" /> <package name="test03" extends="struts-default" namespace="/"> <action name="user" class="com.pipi.struts.test02.UserAction"></action> </package>(3)Action类代码:
package com.pipi.struts.test02.UserAction; import com.opensymphony.xwork2.ActionSupport; class UserAction extends ActionSupport { public String find() {return NONE;} public String save() {return NONE;} public String update() {return NONE;} public String delete() {return NONE;} }通常都是:使用通配符的方式进行Action的配置访问。
