StrutsAction的action代码如下
/**
* 简单封装Struts DispatchAction的基类.
* 提供一些基本的简化函数,将不断增强.
*
* @author calvin
*/
public class StrutsAction extends DispatchAction {
public static final String SUCCESS = "success";
public static final String DIRECTLY_MESSAGE_KEY = "message";
static {
registConverter();
}
/**
* 设置Struts 中数字<->字符串转换,字符串为空值时,数字默认为null,而不是0.
* 也可以在web.xml中设置struts的参数达到相同效果,在这里设置可以防止用户漏设web.xml.
*/
public static void registConverter() {
ConvertUtils.register(new IntegerConverter(null), Integer.class);
ConvertUtils.register(new FloatConverter(null), Float.class);
ConvertUtils.register(new DoubleConverter(null), Double.class);
ConvertUtils.register(new DateConverter("yyyy-MM-dd"), Date.class);
}
/**
* 将FormBean中的内容通过BeanUtils的copyProperties()绑定到Object中.
* 因为BeanUtils中两个参数的顺序很容易搞错,因此封装此函数。
*/
protected void bindObject(ActionForm form, Object object) {
if (form != null) {
try {
BeanUtils.copyProperties(object, form);
} catch (Exception e) {
ReflectionUtils.handleReflectionException(e);
}
}
}
/**
* 将Object内容通过BeanUtils的copyProperties 复制到FormBean中。
* 因为BeanUtils中两个参数的顺序很容易搞错,因此封装此函数。
*/
protected void bindForm(ActionForm form, Object object) {
if (object != null) {
try {
BeanUtils.copyProperties(form, object);
} catch (Exception e) {
ReflectionUtils.handleReflectionException(e);
}
}
}
public String get(HttpServletRequest request){
return (String)(request.getSession().getAttribute(""));
}
/**
* 保存单条信息到Message的简化函数.
*/
protected void saveMessage(HttpServletRequest request, String key, String... values) {
ActionMessages messages = new ActionMessages();
messages.add(ActionMessages.GLOBAL_MESSAGE,
new ActionMessage(key, values));
saveMessages(request.getSession(), messages);
}
/**
* 直接保存文本信息(非i18n)到messages
*
* @param message 直接的文本信息
*/
protected void saveDirectlyMessage(HttpServletRequest request, String message) {
ActionMessages messages = new ActionMessages();
messages.add(ActionMessages.GLOBAL_MESSAGE,
new ActionMessage(DIRECTLY_MESSAGE_KEY, message));
saveMessages(request.getSession(), messages);
}
/**
* 保存单条信息到Error的简化函数.
*/
protected void saveError(HttpServletRequest request, String key, String... values) {
ActionMessages errors = new ActionMessages();
errors.add(ActionMessages.GLOBAL_MESSAGE,
new ActionMessage(key, values));
saveErrors(request.getSession(), errors);
}
/**
* 直接保存文本信息(非i18n)errors
*
* @param message 直接的文本信息
*/
protected void saveDirectlyError(HttpServletRequest request, String message) {
ActionMessages errors = new ActionMessages();
errors.add(ActionMessages.GLOBAL_MESSAGE,
new ActionMessage(DIRECTLY_MESSAGE_KEY, message));
saveErrors(request.getSession(), errors);
}
/**
* 直接输出纯字符串
*/
public void renderText(HttpServletResponse response, String text) {
try {
response.setContentType("text/plain;charset=UTF-8");
response.getWriter().write(text);
} catch (IOException e) {
log.error(e.getMessage(), e);
}
}
/**
* 直接输出纯HTML
*/
public void renderHtml(HttpServletResponse response, String text) {
try {
response.setContentType("text/html;charset=UTF-8");
response.getWriter().write(text);
} catch (IOException e) {
log.error(e.getMessage(), e);
}
}
/**
* 直接输出纯XML
*/
public void renderXML(HttpServletResponse response, String text) {
try {
response.setContentType("text/xml;charset=UTF-8");
response.getWriter().write(text);
} catch (IOException e) {
log.error(e.getMessage(), e);
}
}
}
该类中封装了很多工具方法, 像bindObject() 等 ,我认为应该单独封装成工具类例如StrutsActionUtils,而不应该利用继承方式强加给子类
如果采用这种继承的方式,到最后Action类将变成一个万能的类 几乎所有的web层操作都可以封装,这也违背了面向对象设计的思想
分享到:
相关推荐
springside-3.2.2源码springside-3.2.2源码
springside
pom.xml配置 ...mvn install:install-file -DgroupId=org.springside -DartifactId=springside-core -Dversion=4.2.2.GA -Dfile=./springside-core-4.2.2.GA.jar -Dpackaging=jar -DgeneratePom=true
SpringSide4.0 Reference Manual 自己整理的官方文档,PDF格式,方便查阅,所有连接都已整理。
springside4
springside3.0.zip
SpringSide文档.chm。
springside是融合spring,hibernate,struts2,的一个做权限框架
springside开发全面讲解 springside集成了多项技术,不适合入门者学习,因此本资料也尽量从最简单最基础的讲起。
分享 江南白衣的 springside4 非常强大的Javaee 框架。 官网:http://www.springside.org.cn/ 代码:https://github.com/springside/springside4
springside3.3.4 使用方法 ssh整合 最流行的web框架 使用说明
springside-core-4.3.0.jar 最新版springside-core的jar包
SpringSide 2.0中文使用说明。
springside示例quickstart的eclipse工程
Springside4 学习整理 Shiro 服务端验证
SpringSide
springside参考(中文版本,强烈推荐).chm
springside3-core-3.3.4.jar,springside的3.3.4版本。
最近公司要求高maven+springside管理项目,凑合学,总结了一下
springside-joddform-2.0.zip