struts2浅谈Action
Action动作包含了业务逻辑、承载数据、选择返回的结果
是框架的核心。
1、封装了业务逻辑单元
使用execute()方法来实现这个功能
public String execute(){
//业务逻辑调用 return "SUCCESS";
}
这个方法只关注与请求有关的业务逻辑。
复杂的业务逻辑卡哇伊封装成一个业务组件,利用依赖注入把组件注入到动作里,可以通过Spring集成注入组件的技术。
2、为数据传输提供场所(三种方式)
一、把承载的数据实现为java bean属性(其实就是通过getter,setter方法操作属性)
在action里
private String name;
getName();
setName();
二、使用对象支持的属性。
三、使用模型驱动公开数据
public class LoginAction extends ActionSupport implements ModelDriven{
private User user=new User(); ...
//复写getModel()方法
public Object getModel(){ return user; }
}
注意:模型驱动的动作在execute()方法在调用的时候,框架已经获得了对象模型的引用,请求的过程当中会一直使用他,如果动作内部改变了模型字段,可能会导致一些数据不一致的问题。
3、动作为结果路由选择返回控制字符串
<action name="login"> <result name="success"> /success.jsp </result> <result name="error"> /error.jsp </result> </action>
SUCCESS就是一个结果组件的名字。
structs2的包属性:
Name:包的名字
namespace:包内所有动作的命名空间 映射的URL就必须带上命名空间来访问
extends:被继承的父包 这对默认组件的使用起到很大的作用。extends structs-default
(!省略了继承等于拒绝了框架的核心功能!)
实现动作(Action接口)
ActionSupport类提供了Action接口和其他几个有用接口的默认实现类.
基于拦截器的文件上传
首先要在配置文件里追加到默认拦截器栈
要定义在param之前
fileUpload拦截器提供的请求参数:
File---->被上传的文件
ContentType String--->文件的内容类型
FileName String--->存储在服务器上的上传文件名
后台:
java bean 封装文件的参数:
private File file;
private String contentType;
private String fileName;
多个文件的话就是File[]、String[]、String[]#Java工程师#