struts2的简要总结
*一.*在struts2中Action类的作用?
1.定义了5个字符串常量
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";
2.定义处理用户请求的execute抽象方法
二.ActionSupport类的作用?
ActionSupport类是struts2中的一个工具类,它已经实现了Action接口。除此之外,它还
实现了Validateable接口,提供了数据校验,国际化功能。通过继承该ActionSupport类,
可以简化Struts 2的Action开发。
*三.*打印验证的方法有两种:
A.<s:fielderror />:这是强制打印
B.如果用struts2的标签提交它会自动打印。
*四.*自定义类型转换器步骤:
<1>在src目录下建立一个xwork-conversin.properties文件
里面主要包含:包名.属性名=包名.类型转换器的类名
<2>写一个属性类和一个类型转换器的类
<3>在页面定义一个文本属性,里面输入符合类型转换器类厘米的格式即可。
*五.*struts2国际化步骤:
第一步、在src文件夹中加入struts.properties文件,内容如下:
struts.custom.i18n.resources=globalMessages
第二步、在src文件夹中加入globalMessages_en_US.properties文件,
内容如下:
HelloWorld=Hello World!
第三步、在src文件夹中加入globalMessages_zh_CN.properties文件(
注意转码),内容如下:
user=\u7528\u6237\u540d
第四步,在jsp页面上引用。
第五步,运行。
*六.*国际化控件制作:
第一步.写一个类,里面用集合保存java.util.Locale中的常量:
内容如下:
public class Language {
Map<String,Locale> map=new HashMap<String, Locale>();
public Map<String,Locale> getMap(){
map.put("英文", Locale.US);
map.put("中文", Locale.CHINA);
return map;
}
{color:#000000}}第二步.在struts.xml文件中配置一个完整的Action。
第三步.在jsp页面上引用集合类中的集合
如:
<s:select name="request_locale" label="请选择语言" labelposition="top" value="#session['WW_TRANS_I18N_LOCALE']"
list="#Language.map" listKey="value"
listValue="key" onchange="Language();" />
注:select的name是规定的(request_locale),这是标准不可以改变。
#session['WW_TRANS_I18N_LOCALE']是取到session的值,也就是你选中的值。
*七.*struts2常量配置的地方(struts2搜索顺序如下:):
1.struts.xml
2.struts.properties
3.web.xml配置如:
*八.*什么是拦截器?
拦截器,在AOP(Aspect-Oriented Programming)中用于在某个方法或字段被访问之前,
进行拦截然后在之前或之后加入某些操作。拦截是AOP的一种实现策略。
*九.*自定义拦截器:
第一步:写一个类继承AbstractInterceptor。覆盖intercept()方法
第二步:在intercept里面写一些要执行的内容,在调用invoke();
内容如下:String result=actionInvocation.invoke();
第三步:在struts.xml中配置
如:
<interceptors>
<interceptor name="interceptors" />
</interceptor-stack>
</interceptors>
第四步:在struts.xml中的Action中引用
如:<interceptor-ref name="custom-stack"></interceptor-ref>
第五步:运行;
*十.*指定方法拦截器:
第一步:写一个类继承MethodFilterInterceptor。覆盖doIntercept()方法
第二步:在doIntercept()里面写一些要执行的内容,在调用invoke();
内容如下:String result=actionInvocation.invoke();
第三步:在struts.xml中配置
<interceptors>
<interceptor name="interceptorsFilter" class="com.interceptors.InterceptorsFilter"/>
<interceptor-stack name="custom-stack">
<interceptor-ref name="interceptorsFilter">
<param name="includeMethods">拦截的方法,多个方法用逗号分开</param>
<param name="excludeMethods">拦截出这个方法以为的方法</param>
</interceptor-ref>
</interceptor-stack>
</interceptors>
第四步:在struts.xml中的Action中引用
如:<interceptor-ref name="custom-stack"></interceptor-ref>
第五步:运行;
十一.Struts 2支持以下几种表达式语言:
1. OGNL(Object-Graph Navigation Language),可以方便地操作对象属性的开源表达式语言;
2. JSTL(JSP Standard Tag Library),JSP 2.0集成的标准的表达式语言;
3. Groovy,基于Java平台的动态语言,它具有时下比较流行的动态语言(如Python、Ruby和Smarttalk等)的一些起特性;
4. Velocity,严格来说不是表达式语言,它是一种基于Java的模板匹配引擎,具说其性能要比JSP好。
Struts 2默认的表达式语言是OGNL,原因是它相对其它表达式语言具有下面几大优势:
1. 支持对象方法调用,如xxx.doSomeSpecial();
2. 支持类静态的方法调用和值访问,表达式的格式为@[类全名(包括包路径)]@[方法名 | 值名],例如:@java.lang.String@format('foo %s', 'bar')或@tutorial.MyConstant@APP_NAME;
3. 支持赋值操作和表达式串联,如price=100, discount=0.8, calculatePrice(),这个表达式会返回80;
4. 访问OGNL上下文(OGNL context)和ActionContext;
5. 操作集合对象。