一、Interceptor(拦截器)原理(参考struts2_3300_interceptor)拦截器模拟(参考struts2_3400_interceptor_simulation)
拦截器原理:
二、自定义拦截器(参考struts2_3500_my_interceptor)
在struts.xml的package中加入如下配置:
<interceptors>
<interceptorname="my"class="com.bjsxt.interceptor.MyInterceptor">
</interceptor>
</interceptors>
<actionname="test"class="com.bjsxt.action.TestAction">
<result>/test.jsp</result>
<interceptor-refname="my"></interceptor-ref>
<interceptor-refname="defaultStack"></interceptor-ref>
</action>
自定义拦截器时,自行加入interceptor-ref标签后,如果不加入默认的拦截器,那默认的拦截器都会被覆盖。
三、类型转化(参考struts2_3700_type_conversion)
Jsp文件中内容
name:<s:propertyvalue="name"/><br/>
age:<s:propertyvalue="age"/><br/>
date:<s:propertyvalue="d"/><br/>
<s:datename="d"format="yyyy/MM/ddHH:mm:ss"/><br/>
Set:<s:propertyvalue="interests"/><br/>
Map:<s:propertyvalue="users"/><br/>
自定义类型转换:
public Object convertFromString(Map context, String[] values,Class toClass) {
Point p = new Point();
String[] strs = (String[])values;
String[] xy = strs[0].split(",");
p.x = Integer.parseInt(xy[0]);
p.y = Integer.parseInt(xy[1]);
return p;
}
public String convertToString(Map context, Object o) {
return o.toString();
}
设置全局配置文件xwork-conversion.properties内容为
java.awt.Point=com.bjsxt.converter.MyPointConverter
JSP中内容
Point:<s:propertyvalue="p"/><br/>
<s:propertyvalue="ps"/><br/>
points:<s:propertyvalue="points"/>
三种注册方式:
i. 局部:XXXAction-conversion.properties
1. p(属性名称) = converter
ii. 全局:xwork-conversion.properties
1. com.xxx.XXX(类名)= converter
iii. Annotation