`

Struts2的Action(业务逻辑控制器)

阅读更多
相对与Struts1而言,struts2采用了低侵入式的设计,struts不要求Action类继承任何的Struts2基类,或者实现任何Struts2接口,在这种设计下,Struts2的Action类是一个普通的POJO,通常只需要包含一个无参的execute方法,从而有很好的代码复用性。
但为了让用户开发Action类更加规范,Struts2提供了一个Action接口,这个接口定义了Struts2的Action处理规范。下边是一个标准Action接口的代码。

public interface  Action{
public static final String ERROR=”error”;
public static final String INPUT=”input”;
public static final String SUCCESS=”success”;
public static final String NONE=”none”;
public static final String LOGIN=”login”;
//定义处理用户请求的execute方法
public String execute() throw Exception;
}
另外Struts2还提供了一个实现类:ActionSupport(Action的实现类),该类中提供了许多默认的方法,这些默认的方法包括国际化信息的方法,数据校验的方法,默认的处理用户请求的方法。继承该类能大大的简化Action的开发。

利用Action中的属性帮助获取用户的请求内容(表单元素的内容)
1.属性驱动
2.模型驱动
a.编写Action时必须实行ModelDriven接口,并重新getModel方法
b.属性必须进行实例化(private Userinfo user = new Userinfo());
c.页面表单元素的名称可以直接使用实体类对应的属性名称(uname, upass)

如何获取Servlet API中的对象(request、response或session等)
这里的execute不像Struts 1.x的那样在参数中引入。”开发Web应用程序当然免不了跟这些对象打交道。在Strutx 2.0你可以有两种方式获得这些对象:非IoC(控制反转Inversion of Control)方式和IoC方式。
1. 非IoC方式
要获得上述对象,关键Struts 2.0中com.opensymphony.xwork2.ActionContext类。我们可以通过它的静态方法getContext()获取当前Action的上下文对象。 另外,org.apache.struts2.ServletActionContext作为辅助类(Helper Class),可以帮助您快捷地获得这几个对象。
o HttpServletRequest request = ServletActionContext.getRequest();
o HttpServletResponse response = ServletActionContext.getResponse();
o HttpSession session = request.getSession();
如果你只是想访问session的属性(Attribute),你也可以通过ActionContext.getContext().getSession()获取或添加session范围(Scoped)的对象。
2. IoC方式
要使用IoC方式,我们首先要告诉IoC容器(Container)想取得某个对象的意愿,通过实现相应的接口做到这点
package tutorial;

import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.ServletResponseAware;
import org.apache.struts2.interceptor.SessionAware;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

  publicclass IoCServlet extends ActionSupport implements SessionAware, ServletRequestAware, ServletResponseAware  {
    private String message;
    private Map att;
    private HttpServletRequest request;
    private HttpServletResponse response;   
   
     public String getMessage()  {
        return message;       
    }
   
     publicvoid setSession(Map att)  {
        this.att = att;
    }
   
     publicvoid setServletRequest(HttpServletRequest request)  {
        this.request = request;
    }
   
     publicvoid setServletResponse(HttpServletResponse response)  {
        this.response = response;
    }
   
    @Override
     public String execute()  {       
        att.put("msg", "Hello World from Session!");
       
        HttpSession session = request.getSession();
       
        StringBuffer sb =new StringBuffer("Message from request: ");
        sb.append(request.getParameter("msg"));
        sb.append("<br>Response Buffer Size: ");
        sb.append(response.getBufferSize());
        sb.append("<br>Session ID: ");
        sb.append(session.getId());
       
        message = sb.toString();
        return SUCCESS;
    }
}
分享到:
评论

相关推荐

    Struts2 in action 中文版

    在Struts2中,Action充当控制器的角色,它接收并处理请求,然后根据业务逻辑决定返回哪个视图。 ### Struts2的架构组件 Struts2框架的架构主要由以下几个关键组件构成: 1. **Action**:这是Struts2中最核心的...

    Struts2 in action(struts2实战)

    Struts2是Java Web开发中的一个强大且灵活的MVC框架,它在处理Web应用程序的结构和控制逻辑方面表现出色。作为一个基于Action和基于拦截器的框架,Struts2提供了丰富的功能,使得开发者能够构建可维护、可扩展的Web...

    Struts2拦截器实现权限控制demo

    在Struts2中,拦截器是实现业务逻辑控制和增强功能的重要机制,它们扮演着类似于AOP(面向切面编程)的角色,允许在动作执行前后插入自定义逻辑。在这个“Struts2拦截器实现权限控制demo”中,我们将深入探讨如何...

    Struts 2实战 Struts 2 in action 的中文版

    - 请求被Struts 2的前端控制器FilterDispatcher拦截。 - FilterDispatcher根据配置找到对应的Action实例,并调用其execute方法。 - Action处理完业务逻辑后返回一个结果对象,该结果对象通常包含了一个视图的名称。 ...

    Struts2实战(Struts2 In Action中文版)

    Struts2的Action类是控制器的核心,负责处理用户请求,并通过Result将响应返回给客户端。同时,Struts2的拦截器机制允许开发者插入自定义的行为,如日志、权限验证等,进一步增强了可扩展性。 本书将详细介绍以下几...

    Struts2学习案例(拦截器)

    在本学习案例中,重点在于Struts2的拦截器(Interceptor)功能,这是Struts2的核心特性之一,它允许开发者在Action执行前后进行自定义处理,实现了灵活的业务逻辑控制和增强的功能。 首先,我们来理解一下什么是...

    Struts2 in action 中文版.pdf

    此外,Struts2的拦截器机制也是其一大特色,它允许开发者定义自定义的拦截逻辑,如日志、权限验证等,从而实现灵活的业务逻辑控制。 在实际开发中,Struts2提供了丰富的插件支持,如Spring集成、Tiles模板布局、...

    struts2小程序 struts2代码

    Struts2是一个强大的Java web应用程序框架,用于构建和管理MVC(模型-视图-控制器)架构的应用。这个“struts2小程序”很可能是开发者利用Struts2框架开发的一个小型项目,可能包含了基本的CRUD操作或其他特定功能。...

    Struts2_Action

    Struts2是一个用于开发Java EE网络应用程序的开源框架,它基于MVC(模型-视图-控制器)设计模式。Struts2 Action是该框架中的核心组件,用于处理用户请求并返回相应的响应。 首先,要了解Struts2 Action的开发,...

    struts2重要知识点原理

    总结起来,Struts2框架通过FilterDispatcher作为核心控制器拦截和处理用户请求,使用Action和Interceptor实现业务逻辑和控制流,通过配置文件(struts.xml)管理Action的映射和结果,同时依赖ObjectFactory创建和管理...

    struts2拦截器实现权限控制

    在Struts2中,拦截器扮演着至关重要的角色,它们是实现应用逻辑和业务规则的关键组件,尤其在权限控制方面。这篇博客文章“struts2拦截器实现权限控制”深入探讨了如何利用Struts2的拦截机制来执行用户访问权限的...

    struts2简单例子

    在Struts2中,模型负责业务逻辑,视图负责展示数据,而控制器接收用户请求并协调模型和视图的交互。 2. **Struts2入门**: 创建一个简单的Struts2应用通常涉及以下步骤: - 引入Struts2库:在项目中添加Struts2的...

    Struts2教学视频

    Struts2的主要作用是协调前端视图、后端业务逻辑和模型数据,它通过拦截器(Interceptor)机制实现了请求处理的分层架构,使得代码更加模块化和易于管理。此外,Struts2还支持多种视图技术如JSP、FreeMarker、...

    struts2学习总结

    这意味着在Struts2中,控制器类不再依赖于任何特定的Web容器API(如`HttpServletRequest`或`HttpServletResponse`),而是作为一个纯粹的业务逻辑处理单元存在。 具体来说,在Struts1中,Action类需要继承自`Action...

    Struts2--为Action的属性注入值

    Struts2是一个强大的MVC(模型-视图-控制器)框架,用于构建Java Web应用程序。在Struts2中,Action类是处理用户请求的核心组件,它封装了业务逻辑。为Action的属性注入值是Struts2的一个关键特性,使得我们可以方便...

    struts2 Action编写方式

    在Struts2中,Action类扮演着控制器的角色,负责处理用户请求并协调模型与视图之间的交互。以下是关于"struts2 Action编写方式"的详细讲解: 1. POJO(Plain Old Java Object)方式: 在Struts2中,Action类可以...

    Struts2基本原理

    Struts2的核心概念包括核心控制器、业务控制器以及用户自定义的业务逻辑组件。 1. **核心控制器FilterDispatcher**: FilterDispatcher是Struts2框架的核心,它是所有请求的入口点。当客户端发起HTTP请求到达...

    struts2+json

    Struts2是一个强大的Java web开发框架,它极大地简化了基于MVC(模型-视图-控制器)架构的应用程序开发。这个资源"struts2+json"显然涉及到在Struts2框架下实现JSON(JavaScript Object Notation)数据交换,这是一...

    struts2拦截器

    Struts2是一个非常流行的Java Web框架,它提供了一种组织和控制MVC(模型-视图-控制器)应用程序的方式。在Struts2中,拦截器(Interceptor)是核心功能之一,用于增强应用的功能和处理业务逻辑。拦截器是基于AOP...

Global site tag (gtag.js) - Google Analytics