一、获得Servlet-Api的方式:
解耦:ActionContext—struts的数据中心所有我们能用的struts2自己用的数据都放到了数据中心获得
- ActionContext : ActionContext.getContext()获得
- Request域:Map ac.get(“request”)
- Respose域:Map ac.get(“respose”)
- Session域:Map ac.get(“session”)
- Application域:Map ac.get(“application”)
- 提交的参数Map ac.getParamters();
耦合: ServletActionContext—原生的servletApi对象(struts2不推荐使用)
- Request域:Map ServletActionContext.getRequest();
- Respose域:Map ServletActionContext.getRespose();
- Session域:Map ServletActionContext.getSession();
其他:让Action实现ServletRequestAware、ServletResponsetAware、SessionAware 这些接口实现后,struts会在启动的拦截器中注入你想要的对应对(servletConfig拦截器))
二、自定义转换器
实现TyoeConverter接口(太麻烦)
继承DefaultTypeConverter类
ConvertValue(object object,Class toType)
配置类型转换器:
局部配置:Action所在包下:Action简单类名conversion.properties—-birthday-转换器完整类名
全局配置;src下xwork-conversion.properties—转化的类型—转化器完整类名
三、验证验证表单数据
编程式:
让Action继承ActionSupporth或者事项两个接口Validateable、 ValidationAware
重写validate或者添加validateXXX,, validateDoXX,棋子xxx是表示要验证的action方法名
配置式:
可以在action路径下加入校验文件
A. action的 Classname+-validate.xml—对整个actiin的所有方法进行校验B. action的Classname-action注册名称+-validatiin.xml
–指定验证action的特定方法(注册名称)校验文件写法
A.新建一个xml校验文件 B.加入一个dta---xwork-core-2.3.15.1.jar/xwork-validator-1.0.3.dtd C.加入校验器comopensymphony..xwork2.validator.validators下找到
四、自定义拦截器
3种自定义拦截器的方式:
1. 实现interceptor接口
1. 继承abstractIntceptor抽象类
1. 继承MethodFilterIntercept抽象类
书写拦截器步骤:
1. 书写拦截器类
1. 在xml中注册拦截器
1. 在action拦截器栈中引用拦截器(注意加上默认的拦截器defaultStack)
五、Ognl表达式
强大的导航语言,一般我们用ognl表达式取数据
取数据的位置,需要给ognl准备两个
Context:上下午—需要的是一个map
Root:根—可以任何java对象—Object
规则:表单式直接写标示从根下去
表单式以“#”开头标识从context中取
参数提交自动封装到Action实际上是给Ognl赋值
Ognl的表达式的根是ValueStack
ValueStack中装的实际上是Action