在Struts 1.x中提供了一个类型转换器的功能。
例如:声明一个boolean类型的属性,当把这个属性的值设为Yes,1,on或Y等等时Struts会把它自动的转换成True类型。
但有些类型Struts却无法转换。
例如Date类型的转换:
* 如果是java.sql.Date,页面日期格式必须为yyyy-mm-dd,才可以转换
* 如果是java.util.Date,默认情况下Struts无法转换。
解决办法是我们可以设计一个自定义类型转换器。
自定义类型转换器的实现步骤:
1.实现Struts的converter接口,并实现其convert方法。
view plaincopy to clipboardprint?
package com.yx.zzg.struts;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.apache.commons.beanutils.Converter;
/**
* java.util.Date类型转换器
* @author Administrator
*
*/
public class UtilDateConverter implements Converter {
public Object convert(Class type, Object value) {
System.out.println("UtilDateConverter.value=" + value);
if (value == null) {
return value;
}
if (value instanceof Date) {
return value;
}
Date d = null;
if (value instanceof String) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
d = sdf.parse((String)value);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return d;
}
}
package com.yx.zzg.struts;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.apache.commons.beanutils.Converter;
/**
* java.util.Date类型转换器
* @author Administrator
*
*/
public class UtilDateConverter implements Converter {
public Object convert(Class type, Object value) {
System.out.println("UtilDateConverter.value=" + value);
if (value == null) {
return value;
}
if (value instanceof Date) {
return value;
}
Date d = null;
if (value instanceof String) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
d = sdf.parse((String)value);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return d;
}
}
2.注册自定义的类型转换器,即把我们自定义的类型转换器注册到Struts的类型转换器中。
通常有两种方式类实现注册。
第一种方法采用Servlet的方式:
1.首先定义一个Servlet,并覆写他的init方法
view plaincopy to clipboardprint?
package com.yx.zzg.struts;
import java.util.Date;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import org.apache.commons.beanutils.ConvertUtils;
/**
* 注册java.util.date转换器
* @author Administrator
*
*/
public class UtilDateConverterInitWithServlet extends HttpServlet {
@Override
public void init() throws ServletException {
System.out.println("UtilDateConverterInitWithServlet.init()");
//注册自定义类型转换器
ConvertUtils.register(new UtilDateConverter(), Date.class);
}
}
package com.yx.zzg.struts;
import java.util.Date;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import org.apache.commons.beanutils.ConvertUtils;
/**
* 注册java.util.date转换器
* @author Administrator
*
*/
public class UtilDateConverterInitWithServlet extends HttpServlet {
@Override
public void init() throws ServletException {
System.out.println("UtilDateConverterInitWithServlet.init()");
//注册自定义类型转换器
ConvertUtils.register(new UtilDateConverter(), Date.class);
}
}
2.然后配置web.xml文件便完成了注册。
view plaincopy to clipboardprint?
<servlet>
<servlet-name>UtilDateConverterInitWithServlet</servlet-name>
<servlet-class>com.yx.zzg.struts.UtilDateConverterInitWithServlet</servlet-class>
<load-on-startup>3</load-on-startup>
</servlet>
<servlet>
<servlet-name>UtilDateConverterInitWithServlet</servlet-name>
<servlet-class>com.yx.zzg.struts.UtilDateConverterInitWithServlet</servlet-class>
<load-on-startup>3</load-on-startup>
</servlet>
第二种方式采用Struts本身提供的plugin的方式
1.首先定义一个类并实现PlugIn接口,并且实现其方法。
view plaincopy to clipboardprint?
package com.yx.zzg.struts;
import java.util.Date;
import javax.servlet.ServletException;
import org.apache.commons.beanutils.ConvertUtils;
import org.apache.struts.action.ActionServlet;
import org.apache.struts.action.PlugIn;
import org.apache.struts.config.ModuleConfig;
public class UtilDateConverterInitWithPlugin implements PlugIn {
public void destroy() {
}
public void init(ActionServlet servlet, ModuleConfig config)
throws ServletException {
System.out.println("UtilDateConverterInitWithPlugin.init()");
ConvertUtils.register(new UtilDateConverter(), Date.class);
}
}
package com.yx.zzg.struts;
import java.util.Date;
import javax.servlet.ServletException;
import org.apache.commons.beanutils.ConvertUtils;
import org.apache.struts.action.ActionServlet;
import org.apache.struts.action.PlugIn;
import org.apache.struts.config.ModuleConfig;
public class UtilDateConverterInitWithPlugin implements PlugIn {
public void destroy() {
}
public void init(ActionServlet servlet, ModuleConfig config)
throws ServletException {
System.out.println("UtilDateConverterInitWithPlugin.init()");
ConvertUtils.register(new UtilDateConverter(), Date.class);
}
}
2.然后配置struts-config.xml文件便完成了注册
view plaincopy to clipboardprint?
<plug-in className="com.yx.zzg.struts.UtilDateConverterInitWithPlugin"/>
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/zygsee/archive/2010/03/26/5418865.aspx
分享到:
相关推荐
Struts1.2是一个经典的Java Web开发框架,它在2000年代中期至后期非常流行,被广泛用于构建企业级应用,特别是电子商务系统。在这个名为"ShoppingMall"的项目中,我们可以推测这是一个简单的商城购物系统,利用...
在实际项目开发中,"struts1.2项目指导"通常会涵盖以下内容: 1. **环境搭建**:安装配置JDK、Tomcat服务器,设置开发环境如Eclipse或IntelliJ IDEA,以及添加SSH相关的库文件到项目中。 2. **Struts配置**:编写...
Struts 1.2 框架作为 Java Web 开发的经典框架之一,提供了强大的国际化支持。本文将详细介绍 Struts 1.2 如何实现国际化,以及如何利用该框架创建国际化应用。 #### 二、本地化与国际化基础 ##### 1. 本地化 ...
- **Struts2**:利用OGNL进行类型转换,内置了针对基本类型和常见对象类型的转换器,提供了更为灵活和强大的数据处理能力。同时,Struts2的验证机制也更加成熟,支持多种验证方式,包括手动验证、注解验证等,为...
Struts 2采用了拦截器(Interceptor)模式,这使得它可以更加灵活地处理请求和响应,同时提供了更丰富的异常处理和类型转换机制。此外,Struts 2还支持多种视图技术,如JSP、FreeMarker、Velocity等,并且与Spring...
在Struts1.2中,过滤器常用于处理共性任务,比如登录验证、字符编码转换、安全过滤等。开发者可以通过配置web.xml来定义Filter的顺序和映射规则。 4. Session: Session是服务器端保存用户状态的一种机制。在...
在Struts1.2中,ActionServlet作为控制器接收请求,调用Action类执行业务逻辑,并通过配置文件(struts-config.xml)定义请求与Action的映射关系。此外,Struts1.2还引入了Tiles框架,方便构建复杂的页面布局。 ...
Struts1.2、Spring和Hibernate是Java Web开发中的三个重要框架,它们组合在一起可以构建出功能强大的企业级应用。这个项目"struts1.2+spring+hibernate 简单的实现"旨在展示如何整合这三个框架,实现单表和多表的...
【开发Web购物网站(Struts1.2+Hibernate3.1+Spring2.0)整合案例详细解析】 在构建Web购物网站时,选择合适的框架对于项目的成功至关重要。本案例中,我们采用Struts1.2、Hibernate3.1和Spring2.0这三大经典Java框架...
Struts 1.2通常会依赖一系列Struts相关的JAR文件,这些文件包含框架的核心组件、控制器、视图渲染和业务逻辑处理。在这个特定的场景中,"struts-legacy-1.0.jar"可能包含了与数据源配置相关的类或功能,比如...
在 Web 应用开发过程中,特别是在使用 Java 的 Struts 1.2 框架时,中文乱码问题是开发者经常遇到的一个难题。这不仅影响用户体验,还会对数据的准确性和完整性造成威胁。 **问题表现:** - 在页面显示中文时出现...
Struts1.2、Spring2.0和Hibernate3.1是经典的Java企业级开发框架组合,它们在2000年代中期至后期广泛应用于构建基于Java的Web应用程序。这个组合通常被称为“SSH”三位一体,各自负责不同的职责: 1. **Struts1.2**...
尽管Struts1.2本身并不直接支持JSON,但我们可以通过一些插件或自定义拦截器来实现JSON响应。例如,使用struts2-json-plugin插件,可以在Action类中返回一个Map或JavaBean,该插件会将其转换为JSON格式,并设置到...
### jsp源码OA办公自动化管理系统(Struts1.2+Hibernate3.0+Spring2+DWR)130224 #### 技术栈介绍 本项目是一款基于多种主流Java技术构建的办公自动化系统(OA系统)。该系统采用了JSP作为前端展示层的技术,后端则...
Struts1.2是Apache组织开发的一个开源MVC框架,它提供了模型、视图和控制器的分离,使得开发者可以更加专注于业务逻辑的实现,而不必关心页面展示和数据处理的细节。Struts1.2通过ActionForm和ActionServlet来处理...
Struts2提供了丰富的内置类型转换器,可以自动地将用户提交的数据转换为所需的Java数据类型,如`String`、`Integer`、`Double`、`Date`等。这些内置转换器极大地简化了开发者的工作量,并且确保了数据的有效性和一致...
SSH是三个开源框架的缩写,分别代表Struts、Hibernate和Spring。这个“ssh.rar”压缩包文件似乎包含了关于如何集成和配置这三个框架以构建Java Web应用的知识资源。以下是这三大框架及其集成的重要知识点: **...
Struts1.2通过控制器Servlet、Action类和配置文件来管理用户请求和业务逻辑,确保了视图、控制和模型的分离,提高了代码的可维护性和可测试性。 Hibernate3.0是另一个关键的开源持久化框架,它简化了Java对象与...
Struts1.2通过配置文件(struts-config.xml)定义了请求和Action之间的映射,以及Action如何与视图组件交互,从而实现了强大的页面控制器功能。 **Hibernate3.1** Hibernate3.1是一个对象关系映射(ORM)框架,它...
Struts2.3.1.2-all 是一个针对Java Web开发者的重要工具,它是一个全面的Struts框架版本,集成了所有必要的组件、文档和示例,以支持开发人员进行高效且稳定的Struts应用构建。Struts是Apache软件基金会旗下的一个...