`
夜枫舞影
  • 浏览: 50579 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

webwork 可以处理多个请求的Action

阅读更多
可以处理多个请求的Action
默认情况下,对Action的调用请求将执行Action的execute()方法,Webwork支持一个Action处理多个请求。我们可以在Action中自定义其他方法调用,例如:

public class TestAction extends ActionSupport {
    public String execute() throws Exception {
        return SUCCESS;
     }
    public String login() throws Exception {
        return LOGIN;
     }
}

ActionClass定义为一个Web Action,通过增加 "!method"的方式支持多个请求
xwork的配置片断

<action name="test" class="com.javaeye.action.TestAction">
    <result name="success" type="freemarker">...</result>
    <result name="login" type="freemarker">...</result>
</action>


当我们使用 /test.action URL的时候,调用TestAction的execute方法,当我们使用 /test!login.action URL的时候,将调用TestAction的login方法,即 actionName!method.action 这样的URL映射方式。此外login()方法也可以命名为 doLogin() 方法,即 doActionName()方法签名(do后面的第一个字母大写),调用的时候仍然是 /test!login.action URL。

特别的是,ActionSupport已经预定义了两个方法调用:

public String doInput() throws Exception {
    return INPUT;
}
public String doDefault() throws Exception {
    return SUCCESS;
}

因此,我们甚至可以直接拿来使用,例如,对于很多页面来说,我们往往要提供两个Action,一个是进入该页面,一个是提交该页面,利用这种方法,我们可以只定义一个Action,进入页面的时候请求 /test!input.action, 提交页面的时候请求 /test.action,唯一需要做的就是在xwork配置里面增加一行result:

<action name="addUser" class="com.javaeye.action.AddUserAction">
    <result name="success" type="chain">listUsers</result>
    <result name="input" type="freemarker">/addUser.ftl</result>
</action>


这种方式比较方便,但是有一些限制:

只有默认的DefaultActionMapper才支持“actionName!method”方式的调用,扩展的RestfulActionMapper尚不支持
验证文件采用的是 ActionClass-actionName-validation.xml的命名规则寻找验证规则定义,并不支持分别针对不同的method单独定义验证文件。
ActionClass定义为多个Web Action
我们也可以改变默认的映射规则,使得 /test.action 去不调用默认的 execute()方法,而是我们自己指定的方法:

<action name="test" class="com.javaeye.action.TestAction">
    <result name="success" type="freemarker">...</result>
</action>
<action name="login" class="com.javaeye.action.TestAction" method="login">
    <result name="success" type="freemarker">...</result>
</action>

这种方式则是将一个Action类的每个不同方法调用定义为不同的Web Action请求。但是从架构上而言,如果逻辑关系紧密的几个请求处理放入同一个Action类,那么定义为一个Web Action会比定义为多个Web Action更加能够表达出他们的逻辑关系。

不创建ActionClass直接使用Action
在Web MVC框架下面,我们应该完全屏蔽浏览器直接发起对View的请求,让浏览器只能够通过Action访问,这样才可以充分利用Action带来的种种好处,例如登陆验证,权限检查等等。对于某些特定的View页面来说,没有任何业务逻辑需要处理,这个时候仅仅为了防止浏览器直接访问View页面,也需要新建一个Action,这样未免有些浪费,因此我们可以直接使用ActionSupport:

分享到:
评论

相关推荐

    Webwork.in.action最新中文版

    Action是Webwork框架的基础,负责处理用户的请求并调用业务逻辑;Interceptor则提供了一种灵活的方式来拦截Action的执行,实现如日志记录、权限验证等功能;ValueStack是Webwork中的数据绑定机制,它简化了视图和...

    webwork in action

    1. **创建Action类**:在WebWork中,Action类是处理HTTP请求的核心。这些类通常继承自`com.opensymphony.xwork2.Action`接口,并实现其方法。 2. **配置Action**:通过`web.xml`和`struts.xml`文件配置Action,指定...

    WebWork 文件上传

    总结起来,WebWork的多文件上传涉及了前端表单设计、后端Action处理、文件存储策略等多个环节。理解并掌握这一过程对于构建健壮的Web应用至关重要。在实际开发中,还需要结合具体需求和安全规范进行适当的调整和优化...

    WEBWORK

    通过这样的配置,WebWork 可以根据请求参数找到对应的 Action,执行业务逻辑,然后根据 Action 执行的结果返回相应的视图页面。这种解耦的架构使得 Web 应用的开发更加模块化和易于维护。 然而,需要注意的是,...

    webwork

    9. **版本控制**:WebWork 有多个版本,每个版本都有其特定的功能和改进,例如WebWork 2.x是WebWork的经典版本,而Struts2其实是WebWork与Struts1合并后的产物,继承了WebWork的许多优秀特性。 在提供的"Webwork2 ...

    WebWork docs 2 -- webWork 详细的说明文档

    3. **动作(Action)**:WebWork的动作是处理用户请求的核心,每个Action对应一个或多个HTTP请求。文档会解释如何创建自定义Action,以及Action的生命周期和状态管理。 4. **拦截器(Interceptors)**:拦截器允许...

    webwork in action.

    1. **MVC架构**:WebWork遵循MVC模式,将应用程序逻辑分为三个部分——模型负责业务数据和逻辑,视图负责用户界面展示,控制器处理用户请求并协调模型和视图。 2. **Action机制**:“action”是WebWork的核心概念,...

    webwork学习资料

    ActionContext使得Action可以获取和设置这些信息,进行数据传递。 7. **ServletActionContext** ServletActionContext是ActionContext的一个实现,它封装了Servlet API的请求和响应对象,使得WebWork能够与Servlet...

    webWork

    1. Action:WebWork中的核心组件,负责处理用户请求并执行相应的业务逻辑。Action类通常继承自WebWork提供的基类,并包含一系列方法,每个方法对应一个用户操作。 2. Interceptors(拦截器):在Action执行前后运行...

    webwork配置详解

    ActionContext可以存储临时数据,这些数据在Action执行期间可被多个拦截器和Action实例访问。其中,ServletActionContext是WebWork与Servlet环境交互的接口,它实现了对HttpServletRequest和HttpServletResponse的...

    Webwork2开发指南

    动作类通常包含多个方法,每个方法对应一个具体的用户操作。Webwork2通过ActionServlet处理HTTP请求,并根据请求参数调用相应动作的方法。 **3. 数据绑定** Webwork2 提供了强大的数据绑定功能,允许开发者将表单...

    webwork中文帮助文档

    - Action类是WebWork的核心,它处理用户请求,执行相应的业务逻辑。 - 每个Action类通常对应一个特定的HTTP请求,并通过注解或XML配置文件与URL绑定。 3. **视图解析**: - WebWork支持多种视图技术,如JSP、...

    《webwork in action》源代码.rar

    Action类通常包含多个方法,每个方法对应一个HTTP请求。通过Action-Support和Interceptor机制,WebWork提供了强大的数据绑定、异常处理和验证功能。 2. **数据绑定**:WebWork使用OGNL(Object-Graph Navigation ...

    WebWork_开发指南

    **封装输入元素**:将 Web 页面中的输入元素封装成一个请求数据对象。 2. **调度逻辑处理单元**:根据不同的请求,调度相应的逻辑处理单元,并将请求数据对象作为参数传递进去。 3. **处理并返回结果**:逻辑处理...

    webwork 2.2.4开发指南

    3. 链式动作:通过Action链,一个请求可以触发一系列相关动作,便于实现复杂的业务流程。 4. 动态方法调用:允许开发者通过URL直接调用Action的特定方法,增强了路由灵活性。 四、WebWork开发流程 1. 创建Action:...

    Webwork2_guide

    在Webwork2中,模型通常由Action类实现,这些类负责处理用户的请求,与数据库或其他服务进行交互,并返回结果。 2. **视图(View)**:视图是用户看到和与之交互的界面部分。Webwork2支持JSP、FreeMarker等模板技术...

    webwork入门(添加注释)

    - **Model-Driven Action** 则是围绕一个模型对象进行,整个表单的数据绑定到一个模型对象上,这样可以更好地处理复杂的数据结构和业务逻辑。 **ActionContext (Action 上下文)** ActionContext是WebWork中的一个...

Global site tag (gtag.js) - Google Analytics