struts2部分核心组件解释

1、package配置

在struts2中,是通过包配置来管理Action和拦截器的。在包中可以配置多个Action和拦截器。在struts.xml中,包是通过<package>来配置的。包配置在struts.xml中的格式如下:<package name="包名" extends="包名">......</package>

常用属性:

(1)name:指定包名,是提供其它包继承时使用的属性,必选项。

(2)extends:指定要继承的包名,可选项。

(3)namespace:定义包的名称空间,可选项。

(4)abstract:指定该包是否是一个抽象包,如果该包是抽象包,包中不能定义Action

extends属性用来指定该包继承于其他包,其值必须是另一个包的名字。通过继承,子包可以继承父包配置的Action和拦截器。struts-default是struts2框架的默认包。

namespace指定包的名称空间,当子包继承父包,拥有了多个同名的Action时,不会出错。当访问namespace为xxx的包中的login.action时,地址应为localhost:8080/项目名/xxx/login.action,即在Action前加上名称空间。请求首先会在指定名称空间中找对应的Action,如果没有找到再到默认的名称空间中找Action,默认名称空间为空,即没有指定namespace值。

2、struts2的核心控制器FilterDispatcher

FilterDispatcher是struts2框架的核心控制器,该控制器作为一个过滤器运行在Java Web项目中,它负责拦截所有的用户请求,当用户请求到达时,该过滤器会过滤用户请求。如果用户请求以action结尾,该请求将被转入struts2框架处理。struts2框架获得了*.action请求后,将根据*.action请求的前面部分决定调用哪个业务控制器组件,例如,对于login.action请求,struts2调用名为login的Action来处理该请求。struts2项目中的Action都被配置在struts.xml文件中,在该文件中配置Action时,配置了该Action的name属性和class属性,其中name属性决定了该Action处理哪个用户请求,class属性指定了该Action的实现类。struts2用于处理用户请求的Action实例,并不是用户实现的业务控制器,而是Action代理,因为用户实现的业务控制器并没有与Servlet API耦合,显然无法处理用户请求。而struts2框架提供了一系列拦截器,该一系列拦截器负责将HttpServletRequest请求中的请求参数解析出来,传入到Action中,并通过Action的execute()方法来处理用户请求。

3、struts2的业务控制器Action

为了能够开发出更加规范的Action类,struts2提供了Action接口,该接口定义了struts2中Action类应遵循的规范。

public interface Action{
    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;
}

ActionSupport类是struts2框架中默认的Action实现类,该类提供了许多默认的方法。在编写业务控制器时继承ActionSupport类,将会大大简化业务控制器类的开发。在struts.xml中配置Action时,如果没有指定class属性,系统自动使用ActionSupport类作为业务控制器。

4、Action实现类

struts2中的Action就是一个普通的Java类,该类不要求继承任何的struts2父类,或者实现任何struts2接口,但是为了简化项目开发,可以继承ActionSupport类。Action类通常包含一个execute()方法,该方法没有任何参数,返回值类型是字符串类型。那么struts2中的Action是如何获取用户HTTP请求中的参数值的?一般情况下,Struts中的Action会直接封装HTTP请求中的参数,所以通常情况下Action中会包含与HTTP请求参数对应的属性,并提供该属性的getter和setter方法。在Action类中,execute()方法和其他方法都可以使用该属性值获取HTTP请求中的参数。将HTTP请求中的参数值赋值给相应属性,这是由struts2中的拦截器调用相应的setter方法实现的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值