struts2学习之---实现Action

本文介绍了Struts2框架中的核心组件Action,包括其作为业务控制器的角色、如何封装HTTP请求参数及处理结果、继承ActionSupport类的优势,以及通过多种方式访问Servlet API的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Action是应用的核心,Action类里包含了对用户请求的处理逻辑,Action类也被称为业务控制器。
struts2通常直接使用Action类来封装HTTP请求参数,因此,Action类里还应该包含于请求参数对应的实例变量,并且为这些实例变量提供对应的setter和getter方法。execute()方法是处理用户请求的逻辑控制方法。
Action类里不仅可以封装请求参数,还可用于封装处理结果。如果希望服务器提示的”登录成功”等在下一个页面输出,那么可以在Action类中增加一个tip实例变量。提供对应的setter和getter方法。一旦设置了tip实例变量的值就可以输出该实例变量的值:<s:property value="tip"/>
ActionSupport类是Struts2默认的Action处理类,如果让开发者的Action类继承该ActionSupport类,则会大大简化Action的开发。

1.Action访问Servlet API

struts2提供了一个ActionContext类,Action可通过该类访问Servlet API。

  • Object get(Object key):该方法类似于调用HttpServletRequest的getAttribute(String name)方法。
  • Map getApplication():返回一个Map对象,该对象模拟了该应用的ServletContext实例。
  • static ActionContext getContext():静态方法,获取系统的ActionContext实例。
  • Map getParameters():获取所有的请求参数。类似于调用HttpServletRequest对象的getParameterMap()方法。
  • Map getSession():返回一个Map对象,该Map对象模拟了HttpSession实例。
  • void setApplication(Map application):直接传入一个Map实例,将该Map实例里的key-value对象转换成application的属性名和属性值。
  • void setSession(Map session)::直接传入一个Map实例,将该Map实例里的key-value对象转换成session的属性名和属性值。
2.Action直接访问Servlet API

为了让Action直接访问Servlet API ,struts2提供了如下几个接口:

  • ServletContextAware:实现该接口的Action可以直接访问Web应用的ServletContext实例。
  • ServletRequestAware:实现该接口的Action可以直接访问用户请求的HttpServletRequest实例。
  • ServletResponseAware:实现该接口的Action可以直接访问服务器响应的HttpServletResponse实例。
    public class LoginAction implements ServletResponseAware{
    private HttpServletResponse response;
    public void setServletResponse(HttpServletResponse response){
        this.response = response;
    }

}
3.使用ServletActionContext访问Servlet API

为了直接访问Servlet API ,struts2还提供了一个ServletActionContext工具类,这个类包含如下几个静态方法:

  • static PageContext getPageContext():取得Web应用的PageContext对象。
  • static HttpServletRequest getRequest():取得Web应用的HttpServletRequest对象。
  • static HttpServletResponse getResponse():取得Web应用的HttpServletResponse对象。
  • static HttpServletRequest getServletContext():取得Web应用的ServletContext对象。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值