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模块,包括Dozer、CXF等,它们都是SpringSide中集成的各种功能模块。 接着,文档详细介绍了如何在SpringSide中使用各种数据访问技术,包括Spring Data JPA、MyBatis以及原生JPA。...
通过对 Springside 3.2.2 源码的深入学习,开发者可以掌握基于 Spring 的企业级应用开发技术,理解模块化设计、MVC 架构、依赖注入等核心概念,同时也能了解到项目管理和自动化构建的最佳实践。这将有助于提升开发者...
springside是一款基于Spring框架的轻量级开发工具集,它为Java开发提供了简洁、高效的解决方案,尤其适合中大型项目的开发。尽管springside集合了多种复杂的技术,但这并不意味着初学者无法涉足。本资料将由浅入深,...
1. **依赖管理**:SpringSide-core-4.1.0对常用的第三方库进行了严格的版本控制,确保了项目的一致性和稳定性。这包括Spring框架、Hibernate ORM、MyBatis等,这些依赖的版本都是经过精心选择和测试的。 2. **构建...
Springside 3.3.4版本作为一个成熟的发布版,不仅集成了Spring框架的核心功能,还提供了对其他开源技术如Hibernate和Struts等的支持。在本文档中,我们将详细介绍如何使用Springside 3.3.4版本,并特别关注SSH...
《SpringSide框架详解:整合Spring、Hibernate与Struts2的高效解决方案》 SpringSide框架,作为一款基于Java的开源企业级应用开发框架,是开发者们为了简化开发流程、提高开发效率而精心设计的。它巧妙地融合了...
本版本,即“springside3.3”,是专为MyEclipse集成环境设计的,包含了完整的功能代码,方便开发者在MyEclipse中进行开发和调试。同时,它还附带了数据.sql文件,意味着我们可以直接导入数据库,快速搭建项目环境。 ...
本篇文章将深入探讨SpringSide 3.0中的关键知识点,帮助开发者更好地理解和使用这一强大的工具。 1. **Spring框架基础**:Spring是Java领域最著名的轻量级框架之一,它的核心特性包括依赖注入(DI)和面向切面编程...
在SpringSide的压缩包文件中,"springside"可能是一个示例项目的根目录,包含了项目的所有源代码、配置文件和资源。通过分析这个目录,我们可以学习到SpringSide如何组织项目结构,以及如何配置和使用Spring的各个...
在 SpringSide3.3.4 安装部署的过程中,我们需要生成 mini-web 项目模板。这个模板将作为我们后续开发的基础。我们可以使用 Maven 的 archetype 机制来生成这个模板。首先,我们需要在命令行中执行以下命令: mvn ...
本文将围绕springside4.2.3-GA.jar这个核心组件,探讨其在Java应用中的重要作用以及如何利用它提升开发效率。 首先,我们需要理解什么是.jar文件。.jar(Java Archive)是Java平台上的归档文件格式,用于集合多个类...
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
- **Action层:** Springside3中Action层的设计主要依赖于Struts2的Convention插件,该插件能够自动识别和配置Action,使得Action的配置变得更加简洁。 - **示例代码:** ```java @Namespace("/security") public...
SpringSide项目始于对Spring Framework的深度理解和实践,它的核心在于简化Spring的使用,让开发者能够更快速、更高效地构建企业级应用程序。4.0.0.GA版本是该项目的一个稳定发布,代表着经过充分测试和验证的成熟...
标题"Springside4 (showcase)"暗示了这是一个以展示SpringSide 4核心特性和功能为主的应用实例,而"描述"中的"Springside4"则进一步确认了我们正在探讨的是SpringSide 4框架。标签"springmvc"指出该示例着重于Spring...
《springside.jar在Java应用中的使用详解》 在Java开发领域,springside.jar是一个备受推崇的开源项目,它为开发者提供了丰富的工具和最佳实践,以简化Spring框架的使用。本文将深入探讨springside.jar的核心功能,...
Spring对各种ORM框架如Hibernate、JPA有很好的支持,SpringSide3会讲解如何利用Spring Data Access层,进行数据库操作,包括事务管理、JdbcTemplate、HibernateTemplate的使用方法。 六、Spring测试 测试是保证代码...
在JavaEE领域,SpringSide4-Master涵盖了诸如Hibernate、Struts、JSF等其他主流框架的替代方案,展示了Spring的全面性和兼容性。它还涉及了RESTful API设计、JSON序列化、模板引擎以及前后端分离等现代Web开发技术,...
在本文中,我们将深入探讨SpringSide示例Quickstart的Eclipse工程,了解其结构和主要组件,以便更好地利用这个项目进行学习和开发。 首先,"quickstart"是SpringSide项目提供的快速启动模板,它是专门为初学者和有...
【描述】"springside 案例 转换为myeclipse"指的是将SpringSide项目导入到MyEclipse集成开发环境中进行进一步的开发和调试。MyEclipse是一款功能强大的Java EE集成开发工具,支持多种框架和项目类型,包括Spring。将...