Struts2类型转化(一)

<!-- /* Font Definitions */ @font-face {font-family:宋体; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-alt:SimSun; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} @font-face {font-family:"/@宋体"; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0cm; margin-bottom:.0001pt; text-align:justify; text-justify:inter-ideograph; mso-pagination:none; font-size:10.5pt; mso-bidi-font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:宋体; mso-font-kerning:1.0pt;} /* Page Definitions */ @page {mso-page-border-surround-header:no; mso-page-border-surround-footer:no;} @page Section1 {size:612.0pt 792.0pt; margin:72.0pt 90.0pt 72.0pt 90.0pt; mso-header-margin:36.0pt; mso-footer-margin:36.0pt; mso-paper-source:0;} div.Section1 {page:Section1;} /* List Definitions */ @list l0 {mso-list-id:1878664591; mso-list-type:hybrid; mso-list-template-ids:1483508758 -345707340 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;} @list l0:level1 {mso-level-number-format:japanese-counting; mso-level-text:%1、; mso-level-tab-stop:21.0pt; mso-level-number-position:left; margin-left:21.0pt; text-indent:-21.0pt;} ol {margin-bottom:0cm;} ul {margin-bottom:0cm;} -->

Struts2 类型的转换 ( )

首先先做一个简单的实验,从客户端输入一些不同类型的信息 然后在服务端接受并做类型转换然后再显示到客户端

因为客户端用户提交的信息都是以字符串的形式被接受的 因此当客户端需要对提交的信息进行处理时就需要进行类型的转换

 

一、             新建一个 input.jsp 文件 用户提交 对象,字符串,整形,日期类型的信息

<%@ taglib prefix = "s" uri = "/struts-tags" %>

< body >

    < s:form action = "converter" >

       < s:textfield name = "username" label = "username" ></ s:textfield >

       < s:textfield name = "age" label = "age" ></ s:textfield >

       < s:textfield name = "point" label = "point" ></ s:textfield >

       < s:textfield name = "date" label = "date" ></ s:textfield >

       < s:submit ></ s:submit >

    </ s:form >

</ body >

注: point 要求输入的是一个点的坐标信息 ,隔开

 

二、             建立处理提交信息的 action 继承自 ActionSupport

public class PointAction extends ActionSupport {

    private Point point ;

    private String username ;

    private int age ;

    private Date date ;

    public Point getPoint() {

       return point ;

    }

    public void setPoint(Point point) {

       this . point = point;

    }

    public String getUsername() {

       return username ;

    }

    public void setUsername(String username) {

       this . username = username;

    }

    public int getAge () {

       return age ;

    }

    public void setAge( int age) {

       this . age = age;

    }

    public Date getDate() {

       return date ;

    }

    public void setDate(Date date) {

       this . date = date;

    }

    @Override

    public String execute() throws Exception {

       //SUCCESS 实际上就是等于 "success"

       return SUCCESS ;

    }

}

注: execute 方法中返回的值 SUCCESS 是规定好的值实际上也就是等于 “success” Struts2 只是为了方便而将这些值定义好了 , 还可以有 ERROR , INPUT, LOGIN, NONE

 

三、             配置 struts.xml 文件 package 标签中加入一个 action 标签

< action name = " converter " class = "com.cgz.struts2.test02.action.PointAction" >

            < result name = "success" > /02_typeConvertion/output.jsp </ result >

  </ action >

action 执行结束后跳转到 output.jsp

 

四、             创建一个点坐标 Point 的实体类 , 用它来设置和取得参数

package com.cgz.struts2.test02.bean;

public class Point {

    private int x ;

    private int y ;

    public int getX() {

       return x ;

    }

    public void setX( int x) {

       this . x = x;

    }

    public int getY() {

       return y ;

    }

    public void setY( int y) {

       this . y = y;

    }  

}

 

五、             新建一个 PointConverter 并继承自 ognl DefaultTypeConverter , 该类用来进行坐标的类型转换

package com.cgz.struts2.test02.converter;

import java.util.Map;

import com.cgz.struts2.test02.bean.Point ;

import ognl.DefaultTypeConverter;

public class PointConverter extends DefaultTypeConverter {

    public Object convertValue(Map context, Object value , Class toType ) {

       // 从客户端获取

       if (Point . class == toType) {

           Point point = new Point ();

           // 获取的 value 是一个字符串数组

           String[] str = (String[])value;

           // 将该数组中的第一个元素用 , 分隔开

           String[] paramValues = str[0].split( "," );

           // 将字符型转换为 int 类型

           int x = Integer.parseInt (paramValues[0]);

           int y = Integer.parseInt (paramValues[1]);

           // 将值设置到对象中

           point.setX(x);

           point.setY(y);

           return point;

       }

       // 从服务器端向客户端显示

       if (String. class == toType) {

           Point point = (Point )value;

 

           int x = point.getX();

           int y = point.getY();

 

           String result = "[x=" +x+ ",y=" +y+ "]" ;

           return result;

       }

       return null ;

    }

}

注:其中的 toType 目标类型 value 是自客户端接受的参数

根据 point 类型的不同做相应的转换

 

六、             要想使用该类型转换的类 就需要让 action 知道用这个类 此时需要在 action 所在的包下 建立一个资源文件

point= com.cgz.struts2.test02.converter.PointConverter

注: poin 表示要进行自定义类型转换的属性   后面是对该属性进行类型转换的类

 

 

七、             建立 output.jsp 用于显示客户端接受来的信息

<%@ taglib prefix = "s" uri = "/struts-tags" %>

< body >

    <!-- value 匹配 action 中的 getter 方法中的属性 而不是开始定义的属性 -->

    point: < s:property value = "point" />< br >

    username: < s:property value = "username" />< br >

    age: < s:property value = "age" />< br >

    date: < s:property value = "date" />< br >

</ body >

 

流程: 1 、用户通过表单将信息提交    表单中设置了 action= action 信息”

         2 action 信息匹配 struts.xml 中的 action 标签中的 name , class 值表示处理该请求的 action

         3 struts.xml 将提交信息 引导至正确的 action 中,通过提交的属性匹配 action 中的 setter 方法 action 中的属性赋值 . 同时匹配 setter 方法时 将自动检查 action 所在包下有没有关于该 setter 所对应的属性的资源文件,有则转到处理该属性类型转换的 converter 类中 converter 类通过 action 中的 setter 获取此时属性的类型 将其赋给 toType

此时将属性值转换为 int 类型并设置到 Point , 并返回 Point 此时已经通过 converter Point 值设置好了 在返回到 action setter 方法将 converter 返回的 point 设置到实体类中 .

         4 output.jsp 在显示 point 值时 将通过 action 中的 getter 方法来获取 point 的值 同样的 getter 方法执行前 检查 point 属性有没有自定义的类型转化 通过资源文件找到 converter 同时因为是分业务器端向客户端的显示 此时 toType 应该是 String 类型的转化 执行返回 一个 result 返回给 getter 方法 并设置到客户端显示

         5 、对于 String   int   Date 类型 Stuts2 会自行转换

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值