首次接触Struts2框架(二)

这节主要讲讲Struts的核心配置及一些概念。

1.1.  Struts.xml文件

大家都知道这是其用于配置Action和请求对应关系的文件,其在文件夹中的位置在WEB-INF/classes目录下,盖文佳课陪Struts框架自动加载,而在编译时其位置通常为eclipse放在src下。


这是一个典型的Struts的配置。<Struts>是根元素的配置,<constant>用于常量的配置。(也可在struts.properties文件中进行常量配置)。<package>配置包,其须指定name值,和其Action的类名class。

1.2 Action的配置

实现Action控制器的方式有三种

(1) POJO的实现

            Action可以不继承特殊的类或者不实现任何特殊的接口,只用一个POJO(要有一个公共Java对象),只要你具有一部分getting/setting方法就可以称作POJO,在这个POJO中有一个公共的无参构造方法及一个execute()方法。

(2) 实现Action接口

             Action接口定义了Struts的Action处理器,用户在实现Action控制器的时,可以实现Struts提供的这个接口。

(3) 继承ActionSupport类

这个方法是最常用的方法,其本身就实现了Action接口,是Struts2中默认的Action接口的实现类。

1.3 使用通配符

为了减轻Struts.xml文件的负担,这是就可以使用通配映射符



这样当科幻发送请求/userAction_login.action这样的请求的时候,<action>的值就陪设置成login。当客户端发送/userAction_register.action这样的请求时,<action>元素的name属性就被设置成register。另外对于<result>元素也可以进行通配符配置。

1.4 动态方法调用。

在Action的名字中使用感叹号来表示要调用的方法名称。格式:



使用动态方法调用的方式将请求提交给Action是,表单中的每一个按钮提交事件都交给同一个Action,只是对应Action中的不同方法。这样的话,就只需要配置改Action,而不用去配置每个方法了。


但是这一种方法官网上并不推荐,因为通过URL可以执行Action中的任意方法。

2  Action访问Servlet API

在Strut2中不能直接进行访问Servlet API ,但是其的解耦会带来很多好处,方便进行Action的单元测试。

在Struts中访问Servlet API有三种方式。

2.1 通过ActionContext类访问

这里举例说明:

ActionContext context=ActionContext.getContext();

方一:context.getSession().put("username", user.getUsername());

方二:context.put("username", user.getUsername());

方三:context.getApplication().put("username",  user.getUsername());

2.2  通过特定接口访问

上面那种方不能直接获得Servlet API实例。所以Struts提供了一系列接口,像ServlerRequestAware(可直接访问web应用的HTTPServletRequest实例),ServlerResponseAware

(可直接访问web应用的HTTPServletResponse实例)等等。

2.3 通过servletActionContext访问

为了直接访问Servlet API实例,Struts提供了servletActionContext类,其包含一些静态的方法以用于直接访问。

综上,三种方式还是所选ActionContext,以避免与API耦合。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值