`
newleague
  • 浏览: 1504656 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类

Struts1.2 开发自己的类型转换器

阅读更多

在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随意写的小项目

    Struts1.2是一个经典的Java Web开发框架,它在2000年代中期至后期非常流行,被广泛用于构建企业级应用,特别是电子商务系统。在这个名为"ShoppingMall"的项目中,我们可以推测这是一个简单的商城购物系统,利用...

    struts1.2项目指导

    在实际项目开发中,"struts1.2项目指导"通常会涵盖以下内容: 1. **环境搭建**:安装配置JDK、Tomcat服务器,设置开发环境如Eclipse或IntelliJ IDEA,以及添加SSH相关的库文件到项目中。 2. **Struts配置**:编写...

    struts1.2 国际化

    Struts 1.2 框架作为 Java Web 开发的经典框架之一,提供了强大的国际化支持。本文将详细介绍 Struts 1.2 如何实现国际化,以及如何利用该框架创建国际化应用。 #### 二、本地化与国际化基础 ##### 1. 本地化 ...

    struts1.2和struts2区别

    - **Struts2**:利用OGNL进行类型转换,内置了针对基本类型和常见对象类型的转换器,提供了更为灵活和强大的数据处理能力。同时,Struts2的验证机制也更加成熟,支持多种验证方式,包括手动验证、注解验证等,为...

    struts2和struts1.2学习课件

    Struts 2采用了拦截器(Interceptor)模式,这使得它可以更加灵活地处理请求和响应,同时提供了更丰富的异常处理和类型转换机制。此外,Struts 2还支持多种视图技术,如JSP、FreeMarker、Velocity等,并且与Spring...

    struts1.2增删改查分页Filter Session

    在Struts1.2中,过滤器常用于处理共性任务,比如登录验证、字符编码转换、安全过滤等。开发者可以通过配置web.xml来定义Filter的顺序和映射规则。 4. Session: Session是服务器端保存用户状态的一种机制。在...

    struts1.2、jstl、jsp三种标签教程

    在Struts1.2中,ActionServlet作为控制器接收请求,调用Action类执行业务逻辑,并通过配置文件(struts-config.xml)定义请求与Action的映射关系。此外,Struts1.2还引入了Tiles框架,方便构建复杂的页面布局。 ...

    struts1.2+spring+hibernate 简单的实现

    Struts1.2、Spring和Hibernate是Java Web开发中的三个重要框架,它们组合在一起可以构建出功能强大的企业级应用。这个项目"struts1.2+spring+hibernate 简单的实现"旨在展示如何整合这三个框架,实现单表和多表的...

    开发web购物网站(Struts1.2+Hibernate3.1+Spring2.0)整合案例详细解析

    【开发Web购物网站(Struts1.2+Hibernate3.1+Spring2.0)整合案例详细解析】 在构建Web购物网站时,选择合适的框架对于项目的成功至关重要。本案例中,我们采用Struts1.2、Hibernate3.1和Spring2.0这三大经典Java框架...

    struts1.2 data-sources配置4个jar包

    Struts 1.2通常会依赖一系列Struts相关的JAR文件,这些文件包含框架的核心组件、控制器、视图渲染和业务逻辑处理。在这个特定的场景中,"struts-legacy-1.0.jar"可能包含了与数据源配置相关的类或功能,比如...

    struts1.2 解决中文乱码

    在 Web 应用开发过程中,特别是在使用 Java 的 Struts 1.2 框架时,中文乱码问题是开发者经常遇到的一个难题。这不仅影响用户体验,还会对数据的准确性和完整性造成威胁。 **问题表现:** - 在页面显示中文时出现...

    struts1.2+spring2.0+hibernate3.1jar包

    Struts1.2、Spring2.0和Hibernate3.1是经典的Java企业级开发框架组合,它们在2000年代中期至后期广泛应用于构建基于Java的Web应用程序。这个组合通常被称为“SSH”三位一体,各自负责不同的职责: 1. **Struts1.2**...

    JQuery处理JSON课堂示例(Struts1.2).rar

    尽管Struts1.2本身并不直接支持JSON,但我们可以通过一些插件或自定义拦截器来实现JSON响应。例如,使用struts2-json-plugin插件,可以在Action类中返回一个Map或JavaBean,该插件会将其转换为JSON格式,并设置到...

    jsp源码OA办公自动化管理系统(Struts1.2+Hibernate3.0+Spring2+DWR)130224

    ### jsp源码OA办公自动化管理系统(Struts1.2+Hibernate3.0+Spring2+DWR)130224 #### 技术栈介绍 本项目是一款基于多种主流Java技术构建的办公自动化系统(OA系统)。该系统采用了JSP作为前端展示层的技术,后端则...

    OA办公自动化管理系统(Struts1.2+Hibernate3.0+Spring2+DWR).zip

    Struts1.2是Apache组织开发的一个开源MVC框架,它提供了模型、视图和控制器的分离,使得开发者可以更加专注于业务逻辑的实现,而不必关心页面展示和数据处理的细节。Struts1.2通过ActionForm和ActionServlet来处理...

    实验4 Struts2的类型转换与OGNL表达式语言.doc

    Struts2提供了丰富的内置类型转换器,可以自动地将用户提交的数据转换为所需的Java数据类型,如`String`、`Integer`、`Double`、`Date`等。这些内置转换器极大地简化了开发者的工作量,并且确保了数据的有效性和一致...

    ssh.rar_struts1_struts1.2 ssh

    SSH是三个开源框架的缩写,分别代表Struts、Hibernate和Spring。这个“ssh.rar”压缩包文件似乎包含了关于如何集成和配置这三个框架以构建Java Web应用的知识资源。以下是这三大框架及其集成的重要知识点: **...

    OA办公自动化管理系统(Struts1.2+Hibernate3.0+Spring2+DWR)130224.rar

    Struts1.2通过控制器Servlet、Action类和配置文件来管理用户请求和业务逻辑,确保了视图、控制和模型的分离,提高了代码的可维护性和可测试性。 Hibernate3.0是另一个关键的开源持久化框架,它简化了Java对象与...

    VCE远程教育(struts1.2-hibernate3.1-spring2.0+sqlserver2005)

    Struts1.2通过配置文件(struts-config.xml)定义了请求和Action之间的映射,以及Action如何与视图组件交互,从而实现了强大的页面控制器功能。 **Hibernate3.1** Hibernate3.1是一个对象关系映射(ORM)框架,它...

    struts2.3.1.2-all

    Struts2.3.1.2-all 是一个针对Java Web开发者的重要工具,它是一个全面的Struts框架版本,集成了所有必要的组件、文档和示例,以支持开发人员进行高效且稳定的Struts应用构建。Struts是Apache软件基金会旗下的一个...

Global site tag (gtag.js) - Google Analytics