xml 代码
- public interface Action extends Serializable {
- public static final String SUCCESS = "success";
- public static final String NONE = "none";
- public static final String ERROR = "error";
- public static final String INPUT = "input";
- public static final String LOGIN = "login";
- public String execute() throws Exception;
- }
- =========================================================================
- 2,每次Action调用都会创建一个AcionContext,我们可以ActionContext context=ActionContext.getContext()来使用它.
- =========================================================================
- 获取Session
- 方式一:
- 以下语句必须放在execute()方法里,不然会取不到值;
- ActionContext ctx2 = ActionContext.getContext();//必须在execute()方法里
- Map session2=ctx2.getSession();
- 方式二:
- action implements SessionAware{
- protected Map session;
- public void setSession(Map session) {
- this.session = session;
- }
- }
- 这样就可以从该session对象中put或get对象.
- 方式三:
- 前两个得到是session都不是HttpSession对象.而ServletActionContext.getRequest().getSession()则是HttpSession对象.
- ServletActionContext.getRequest().getParameter("username")
- ServletActionContext.getRequest()就是HttpServletRequest
- =========================================================================
- webwork中的aware接口
- aware接口要求实现类必须实现单一的setter方法,以便将资源应用到实现类中。
- 1、ParametersAware 指明action需要HTTP请求参数map。
- 2、ServletRequestAware 指明action需要ServletRequest对象。
- 3、SessionAware 指明action需要HttpSession对象。
- 4、ApplicationAware 指明action需要ServletContext对象。
- =========================================================================
- 可以处理多个请求的Action
- "!method"的方式支持多个请求,当我们用/test.action时,则调用execute方法,我们用/test!login.action时,将调用login方法,
- 即 actionName!method.action 这样的URL映射方式。此外login()方法也可以命名为 doLogin() 方法.
- =========================================================================
- 验证文件采用ActionClass-validation.xml的命名规则,并不支持分别针对不同的method单独定义验证文件,我们可以采用如下方式:
- <action name="test" class="com.javaeye.action.TestAction"></action>
- <action name="login" class="com.javaeye.action.TestAction" method="login"></action>
- =========================================================================
- 有时我们只是页面跳转,并不需要声明一个action,可以使用ActionSupport
- <action name="index" class="com.opensymphony.xwork.ActionSupport">
- <result name="success" type="dispatcher">/index.jsp</result>
- </action>
- =========================================================================
- 异常可以如下方式获取:
- OgnlValueStack s = ActionContext.getContext().getValueStack();
- Object obj = s.pop();
- System.out.println(obj.getClass().getName());
- obj = s.pop();
- System.out.println(obj.getClass().getName());
- BTW:如果是以chain的方式转向于此action,则要注意第二个元素才是ExceptionHolder
- =========================================================================
- 为action参数注入值;
- <action name="listUser" class="com.adt.action.user.ListUser">
- <param name="page.everyPage">10</param>
- <result name="success">/user/user_list.jsp</result>
- </action>
- =========================================================================