表现层抽取
代码实现
/**
*
* @author YaoSone
* @param <T>
*
*/
public class BaseAction<T> extends ActionSupport implements ModelDriven<T>{
private T model;
protected final String HOME="home";
@Override
public T getModel() {
return model;
}
// 动态创建model实例
public BaseAction() {
// 当前类的字节码
// 获取父级别的类型
ParameterizedType genericSuperclass = (ParameterizedType) this.getClass().getGenericSuperclass();
// 获取泛型的参数类型
Type[] actualTypeArguments = genericSuperclass.getActualTypeArguments();
// 创建对象,处理异常,赋值model
Class<T> type = (Class<T>) actualTypeArguments[0];
try {
model = type.newInstance();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
其他层代码
@Controller("userAction")
@Scope("prototype")
public class UserAction extends BaseAction<User> {
// 提供UserService属性,可不提供set方法.==>直接注解注入
@Resource(name="userService")
private UserService userService;
//属性驱动,接收页面用户输入的验证码
private String checkcode;
//登录方法
public String login(){
}
}