这节主要讲讲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耦合。
网友评论