第7 章 Struts2 类型转换技术
在 Web 项目开发中由于很多数据在页面上显示时候都是以字符串类型来显示。而在控制层或者 model 层中开发人员使用 Java 开发时候,对于这些从页面上传入或者需要传到页面上显示的数据开发的类型不一定都是字符串类型。因此常常需要在视图和非视图之间进行类型转换。最明显的例子就是显示当前日期。可是这些开发工作往往是无关紧要或者说是犹如“鸡肋”,而很多开发时间却都白白浪费在这上面。有感于此, Struts2 的设计者提供了类型转换的功能。其实读者如果是从本书第一章看到这里,应该也估计的出类型转换也是用拦截器来实现的。这里笔者使用 Struts2 类型转换功能,看看在 Struts2 中到底是如何实现或者说如何实现类型转换。
7.1 Struts2 类型转换使用介绍
Struts2 的类型转换几乎支持 Java 中各种数据类型的转换。甚至开发者还可以自定义自己的类型转换功能。不过在笔者看来,不推荐开发人员开发自定义的类型转换功能。原因有二。一是遵循 IT 界著名名言“不重复发明轮子”,不在前人的成果上再次浪费时间。二是类型转换本身在开发工作中就不应该占用大量时间和人力。况且自定义自己的类型转换,项目风险也有可能增加。从项目管理角度对时间、成本、风险的管理都存在负面效应。
因此在本节中笔者具体介绍 Struts2 本身所具有的类型转换功能。大致分为以下:
int 、 boolean 、 double 等 Java 基本类型转换。
Date 类型转换。
List 类型转换。
Set 类型转换。
数组类型转换。
除了数组的类型转换不大实用以外,其他几种类型转换都是比较常用的。而且笔者认为 Date 类型转换也是属于单个 Java 变量的转换。而 List 、 Set 可以算作集合类型的转换即多个 Java 变量封装成单个集合的类型转换。下面就依次介绍有关知识点和一些需要注意的细节问题。
7.1.1 基本数据类型转换功能
技术要点
本节代码具体介绍 Java 基本数据类型和 Date 类型转换的使用方式介绍。
基本类型转换 Action 中使用方式。
基本类型转换在视图界面的使用方式。
演示代码
使用的 Action 文件:
- <!------------------------文件名:AddMaterialAction.java---------------->
-
public class AddMaterialAction extends ActionSupport {
-
-
private Material material;
-
-
public Material getMaterial() {
-
return material;
- }
-
-
public void setMaterial(Material material) {
-
this.material = material;
- }
-
-
public String execute() throws Exception {
-
return SUCCESS;
- }
- }
<!------------------------文件名:AddMaterialAction.java---------------->
public class AddMaterialAction extends ActionSupport {
//属性类型需要类型转换的对象
private Material material;
public Material getMaterial() {
return material;
}
public void setMaterial(Material material) {
this.material = material;
}
public String execute() throws Exception {
return SUCCESS;
}
}
配置文件中的导航定义:
- <!--------------------文件名:struts.xml--------------------->
- <!-- Action所在包定义 -->
-
<package name="C07.1.1" extends="struts-default">
-
<action name="addMaterial"
-
class="com.action.AddMaterialAction">
-
<result name="input">/jsp/addMaterial.jsp</result>
-
<result name="success">/jsp/showMaterial.jsp</result>
- </action>
-
</package>
<!--------------------文件名:struts.xml--------------------->
<!-- Action所在包定义 -->
<package name="C07.1.1" extends="struts-default">
<action name="addMaterial"
class="com.action.AddMaterialAction">
<result name="input">/jsp/addMaterial.jsp</result>
<result name="success">/jsp/showMaterial.jsp</result>
</action>
</package>
类型转换的数据输入 JSP 文件:
- <!---------------------文件名:addMaterial.jsp------------->
- …………
- <!-- 材料输入表单 -->
- <table>
-
<s:form id="materialForm" action="addMaterial">
-
<s:textfield name="material.material" label="材料名"></s:textfield>
-
<s:textfield name ="material.bid" label="价格"></s:textfield>
-
<s:textfield name ="material.mount" label="库存量"></s:textfield>
-
<s:datetimepicker name ="material.expireDate" label="过期日期"></s:datetimepicker>
-
<s:submit value="提交"></s:submit>
- </s:form>
- </table>
- …………
<!---------------------文件名:addMaterial.jsp------------->
…………
<!-- 材料输入表单 -->
<table>
<s:form id="materialForm" action="addMaterial">
<s:textfield name="material.material" label="材料名"></s:textfield>
<s:textfield name ="material.bid" label="价格"></s:textfield>
<s:textfield name ="material.mount" label="库存量"></s:textfield>
<s:datetimepicker name ="material.expireDate" label="过期日期"></s:datetimepicker>
<s:submit value="提交"></s:submit>
</s:form>
</table>
…………
类型转换的显示数据 JSP 文件:
- <!----------------------文件名:showMaterial.jsp-------------->
- …………
- <!-- 材料数据显示 -->
- <table>
-
材料名: <s:property value="material.material" ></s:property>
-
价格: <s:property value="material.bid" ></s:property>
-
库存量: <s:property value="material.mount" ></s:property>
-
过期日期: <s:property value="material.expireDate" ></s:property>
- </table>
- …………
<!----------------------文件名:showMaterial.jsp-------------->
…………
<!-- 材料数据显示 -->
<table>
材料名: <s:property value="material.material" ></s:property>
价格: <s:property value="material.bid" ></s:property>
库存量: <s:property value="material.mount" ></s:property>
过期日期: <s:property value="material.expireDate" ></s:property>
</table>
…………
数据输入如图 7.1 。
图 7.1 各种基本类型数据输入
显示数据如图 7.2 。请注意各种 Java 类型数据在显示页面和输入页面的格式和显示不同之处。
图 7.2 各种基本类型数据显示
代码解释
( 1 ) 在本示例中,笔者在页面上输入一个 Material 对象的所有属性值,并将它的属性值显示在页面上。由于之前很多示例中已经有过 Material 这个 JavaBean 对象代码。这里就没有写出给读者参阅。由以显示的示例代码也可知, Material 对象由材料名、价格、库存量和材料过期日期四个属性组成。恰好这四个属性的数据类型分别是 String 、 double 、 int 、 date 四个 Java 类型,因此由该示例可以明白 Struts2 的类型转换是如何转换这些 Java 类型。由于 Struts2 也是使用拦截器来进行类型转换,因此对这些基本的 Java 类型转换根本不需要开发人员编写任何类型转换代码。
( 2 )在输入数据的页面,笔者使用 OGNL 和 Struts2 标签来建立一个数据输入的表单。使用的 material 对象在 Action 中已定义完成,并建立 getter 、 setter 方法。这样在 JSP 页面可以设置该对象。在页面中按“提交”按钮后,就相当于“ setMaterial () ”方法。在系统根据 struts.xml 配置文件执行 Action 之前, Struts2 自带的类型转换拦截器就已经将 Material 对象中几个属性变量的类型由页面上输入时候的 String 类型转换为 Material 对象属性变量被定义的数据类型。
( 3 )在数据显示页面上显示数据时候,实际上做的事情是上述操作的一个逆向操作。 Material 对象中每个属性变量的数据类型又都转换为页面上需要显示的 String 类型。
( 4 )实际上在开发工作中,除非有根据特殊需求需要类型转换之外。在 Struts2 中绝大部分类型转换都已经由 Struts2 自己完成。因此给开发者节省了大量开发时间。有时候根本没有意识到数据类型已经被转换。除了 Java 基本类型转换之外,有时候在页面上需要批量输入一些数据,如果这些数据也像本示例的 Material 对象一样,那么可以使用 Struts2 自带的对集合类型的转换功能来完成类型转换,下面先介绍 List 类型集合的类型转换。
分享到:
相关推荐
### Struts2讲义知识点概览 #### 一、Struts2的历史与发展 - **Struts框架的发展历程**: - Struts最初版本发布于2000年,是Java Web开发领域的一个重要里程碑。 - 随着时间的发展和技术的进步,Struts逐渐暴露...
### Struts2框架入门知识点详解 #### 一、Struts2框架概述 ##### 1.1 Struts2简介 Struts2是一个基于MVC(Model-View-Controller)设计模式的Web应用框架,用于简化Java Web应用程序的开发过程。与传统的Java Web...
struts2讲义struts2讲义struts2讲义struts2讲义struts2讲义struts2讲义struts2讲义struts2讲义struts2讲义struts2讲义struts2讲义
本讲义将详细介绍Struts2的核心概念、工作原理以及如何在实际项目中应用。 一、Struts2简介 Struts2是Apache软件基金会的开源项目,它是Struts1的升级版,旨在解决Struts1在可扩展性和灵活性上的不足。Struts2提供...
在本讲义中,我们将深入探讨Struts2的基本概念、依赖的库、启动配置以及配置文件。 首先,开发Struts2应用需要依赖一些核心的JAR文件。这些文件包括: 1. `struts2-core-2.x.x.jar`:这是Struts2框架的核心库,...
### Struts2框架详解 #### 一、Struts2框架介绍与概述 ##### 1.1 Struts2框架概述 Struts2是一个基于MVC(Model-View-Controller)模式的开源Java Web应用框架,它提供了强大的功能来帮助开发者构建灵活、可扩展...
第2章 Web基础技术简介第3章 Struts2核心技术第4章 另一Struts2核心技术:拦截器第5章 Struts2标签库第6章 Struts2非JSP视图技术第7章 Struts2类型转换技术第8章 Struts2输入校验第9章 Struts2国际化第10章 Struts2...
### Struts2讲义知识点概览 #### 一、Struts2的历史与发展 - **Struts框架的演变**:从Struts1到Struts2,框架经历了从MVC(Model-View-Controller)架构的经典实践到更为灵活、强大的迭代升级。 - **Struts2的...
本讲义详细介绍了Struts2框架的各个方面,帮助开发者从基础到进阶全面掌握其用法。 1. **Struts2概述** Struts2是Apache软件基金会的开源项目,它继承了Struts1的优点并解决了其局限性,提供了更优秀的行动控制器...
本教程讲义深入浅出地介绍了Struts2的核心概念和技术,旨在帮助开发者快速掌握这个框架的使用。 在Struts2中,主要知识点包括: 1. **MVC设计模式**:MVC模式是软件工程中的经典设计模式,它将应用程序分为模型...
这个“struts2讲义”显然提供了一个全面的教程,旨在帮助学习者理解和掌握Struts2的核心概念和技术。以下是Struts2的一些关键知识点: 1. **MVC模式**:Struts2基于Model-View-Controller(MVC)设计模式,它将应用...
Struts2讲义1 Struts2是一款基于MVC(Model-View-Controller)设计模式的Java Web开发框架,由Apache软件基金会维护。它继承了Struts1的优点,并结合了WebWork框架的功能,提供了更强大的控制层解决方案。Struts2的...
西安野马计算机培训学校的STRUTS2讲义,可能涵盖了这一框架的基础知识和高级特性,帮助学员理解和掌握Struts2的核心概念。 首先,Struts2的基础部分可能包括以下几个方面: 1. **架构原理**:讲解Struts2的MVC设计...
Struts2讲义 作者:吴峻申 目录 第1章 Struts过时了吗? 10 1.1 Struts历史发展过程 10 1.2 Struts2的“简历” 13 1.2.1 标签库介绍 13 1.2.2 拦截器应用目的 14 1.2.3 FilterDispatcher和Action概述 14 1.2.4 ...
Struts2是Apache软件基金会...总的来说,黑暗浪子的这本Struts2讲义涵盖了Struts2的各个方面,无论对于初学者还是有经验的开发者,都是一个宝贵的参考资料,能帮助读者深入理解和熟练运用Struts2框架,提高开发效率。