struts2下 数据转换器

1,创建struts2 工程,工程结构图如下:

2,convertor.DateTimeConvertor.java代码如下:

View Code
package convertor;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Map;
import ognl.DefaultTypeConverter;

public class DateTimeConvertor extends DefaultTypeConverter {
    //日期格式化器,完成格式如2007-08-06,2007/08/06,07-08-06的定义
    private DateFormat[] dateFormat={ new SimpleDateFormat("yyyy-MM-dd"),
            new SimpleDateFormat("yyyy/MM/dd"),new SimpleDateFormat("yy-MM-dd"),};
    //时间格式化器,完成格式如12:30:1100,12:30的定义
    private DateFormat[] timeFormat={ new SimpleDateFormat("HH:mm:ssss"),
            new SimpleDateFormat("HH:mm"),};
    
    @SuppressWarnings("unchecked")
    public Object convertValue(Map context,Object value,Class toType){
        if(toType.equals(java.sql.Date.class)){//如果是java.sql.Date.class类型
            String[]parameterValues=(String[])value;//获取原始字符串数据
            for(DateFormat format:dateFormat)
                try{                            //使用3种格式化器转换日期
                    return new java.sql.Date(format.parse(parameterValues[0]).getTime());
                }catch(ParseException e){}
        }else if(toType.equals(java.sql.Time.class)){//如果是java.sql.Time.class类型
            String[]parameterValues=(String[])value;//获取原始字符串数据
            for(DateFormat format:timeFormat)
                try{                            //使用2种格式化器转换日期
                    return new java.sql.Time(format.parse(parameterValues[0]).getTime());
                }catch(ParseException e){}
        }else if(toType.equals(java.util.Date.class)){//如果是java..Date.class类型
            String[]parameterValues=(String[])value;//获取原始字符串数据
            for(DateFormat format:dateFormat)
                try{                            //使用3种格式化器转换日期
                    return format.parse(parameterValues[0]);
                }catch(ParseException e){}
        }else if(toType.equals(String.class)){    //如果时字符串
            if(value instanceof java.sql.Date){
            }else if(value instanceof java.sql.Time){
            }else if(value instanceof java.util.Date){
                return dateFormat[0].format((java.util.Date)value);
            }                                    //将Date类型转换为String类型
        }
        return super.convertValue(context, value, toType);//否则调用父类方法
            
    }

}

3,创建struts2的配置文件xwork-conversion.properties,放在src路径下,具体代码如下:

View Code
java.sql.Date=convertor.DateTimeConvertor
java.sql.Time=convertor.DateTimeConvertor
java.util.Date=convertor.DateTimeConvertor

4,创建action.ConvertorAction.java代码如下:

View Code
package action;
import java.sql.Date;
import java.sql.Time;

import com.opensymphony.xwork2.ActionSupport;

public class ConvertorAction extends ActionSupport {

    private Date sqlDate;
    private Time sqlTime;
    private java.util.Date utilDate;
    
    public Date getSqlDate() {
        return sqlDate;
    }
    public void setSqlDate(Date sqlDate) {
        this.sqlDate = sqlDate;
    }
    public Time getSqlTime() {
        return sqlTime;
    }
    public void setSqlTime(Time sqlTime) {
        this.sqlTime = sqlTime;
    }
    public java.util.Date getUtilDate() {
        return utilDate;
    }
    public void setUtilDate(java.util.Date utilDate) {
        this.utilDate = utilDate;
    }
    /**
     * @return
     */
    public String execute() {
        // TODO Auto-generated method stub
        return INPUT;
    }
    public String convert(){
        return SUCCESS;
    }
}

5,创建struts.xml,

View Code
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC 
        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" 
        "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>


    <package name="main" extends="struts-default">
        <action name="convertor" class="action.ConvertorAction" converter="convertor.DateTimeConvertor">
            <result name="input">/convert.jsp</result>
            <result name="success">/convertSuccess.jsp</result>
        </action>
    </package>
</struts>

6,web.xml文件配置如下:

View Code
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  
  <filter>
      <filter-name>struts</filter-name>
      <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
      <init-param>
          <param-name>struts.action.extension</param-name>
          <param-value>action</param-value>
      </init-param>
  </filter>
  <filter-mapping>
      <filter-name>struts</filter-name>
      <url-pattern>/*</url-pattern>
  </filter-mapping>
  
 
</web-app>

7,用户界面包括convert.jsp  convertSuccess.jsp

convert.jsp如下:

View Code
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib uri="/struts-tags" prefix="struts" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'convert.jsp' starting page</title>
    
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">    
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->

  </head>
  
  <body>
          <struts:form action="convertor">
               <struts:label label="转换器"></struts:label>
               <struts:textfield name="sqlDate" label="SQL Date:"></struts:textfield>
               <struts:textfield name="sqlTime" label="SQL Time:"></struts:textfield>
               <struts:textfield name="utilDate" label="Util Date:"></struts:textfield>
               <struts:submit value="提交" method="convert"></struts:submit>
          </struts:form>
  </body>
</html>

convertSuccess.jsp如下:

View Code
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib uri="/struts-tags" prefix="struts" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'convertSuccess.jsp' starting page</title>
    
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">    
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->

  </head>
  
  <body>
          java.sql.Date:<struts:property value="sqlDate"/><br/>
          java.sql.Time:<struts:property value="sqlTime"/><br/>
          java.util.Date:<struts:property value="utilDate"/><br/><br/>
          <a href="convertor.action">重新转换</a>
  </body>
</html>

8,发布即可

原文地址:https://www.cnblogs.com/lpshou/p/2791188.html