Struts 类型转换之局部和全局配置

我们碰到过很多情况,就是时间日期常常会出现错误,这是我们最头疼的事,在struts2中有一些内置转换器,也有一些需要我们自己配置。 

我们为什么需要类型转换呢?

在基于HTTP协议的Web应用中 客户端请求的所有内容(表单中提交的内容等)都以文本编码的方式传输到服务器端
但服务器端的编程语言(如Java)有着丰富的数据类型 如 int boolean Date 等等
因此 当这些参数进入应用程序时 必须被转换成适合的服务器端编程语言的数据类型

在Servlet中 类型转换工作是由开发者自己完成的,例如:

  String s=request.getParameter("pageIndex");
  int pageIndex=Integer.parseInt(s);

类型转换的工作是必不可少的 重复性的. 如果有一个良好的类型转换机制 必将大大节省开发时间,提高开发效率。

Struts2提供了强大的类型转换功能:

内置转换器:

对于大部分的常用类型 开发人员在开发过程中不需要自己编码实现类型转换 这是因为在Struts2框架爱中可以完成大多数常用的类型转换
 //由内部提供的类型转换器完成
 1.String 将 int long double boolean String数组或者java.util.Date类型转换为字符串
 2.boolean/Boolean 在字符串和布尔值之间转换
 3.char/Character 在字符串和字符之间进行转换
 4.int/Integer float/Float  long/Long double/Double
 5.Date 在字符串和日期只见进行转换 具体输入输出格式与当前的local有关
 6.数组和集合 在字符串数组和数组对象 几何对象之间进行转换

接下来我们讲解一下自定义类型转换器:

1.0创建一个Action来继承ActionSupport

public class StudentAction extends ActionSupport {
    private Date date;

    public Date getDate() {
        return date;
    }

    public void setDate(Date date) {
        this.date = date;
    }

    @Override
    public String execute() throws Exception {
        System.out.println(date);
        return SUCCESS;
    }
}

2.0创建一个DateAction继承StrutsTypeConverter

public class DateAction extends StrutsTypeConverter {

    private static final List list=new ArrayList();
    static {
        list.add(new SimpleDateFormat("yyyy/MM/dd"));
        list.add(new SimpleDateFormat("yyyy-MM-dd"));
    }
    public Object convertFromString(Map context, String[] values, Class toClass) {
        String date=values[0];
        for (SimpleDateFormat item:list){
            try {
                return item.parse(date);
            } catch (ParseException e) {
               continue;
            }
        }
      throw new TypeConversionException();
    }

    public String convertToString(Map map, Object o) {
        System.out.println(new Date()+"============================");
        return o.toString();
    }
}

3.0创建StudentAction-conversion.properties

date=cn.converter.DateAction

4.0Struts.xml中的配置

    
        
            /converter/success.jsp
            /converter/index.jsp
        
    

5.0页面

index.jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="s" uri="/struts-tags" %>

登陆页面



    
    


success.jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="s" uri="/struts-tags" %>


    成功页面


欢迎你:

你可能感兴趣的:(struts,python,java)