`
whp0731
  • 浏览: 174807 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

struts2学习之三、类型转换

阅读更多

struts2学习之三、类型转换

1、本例中在界面上输入点,所以引入了类型转换
点的pojo类

package com.test.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;
 }

 @Override
 public String toString()
 {
  return "x = " + x + " y = " + y;
 }
}

  

2、input.jsp

... 
<body>
   
   <h3><font color="red">使用逗号将点的两个坐标分割开</font></h3>
   
   <s:form action="pointConverter">
   
      <s:textfield name="point" label="point"></s:textfield>
   <s:textfield name="age" label="age"></s:textfield>
   <s:textfield name="username" label="username"></s:textfield>
   <s:textfield name="date" label="birthday"></s:textfield>
   
   <s:submit label="submit"></s:submit>
   
   </s:form>
 </body>
...

 

3、ognl,使用struts时最好去参考一下,webwork网站上的ognl--》source repository--》通过wincvs客户端可以将源代码下载下来

 

4、转换类PointConverter.class(基于webwork的ognl)
package com.test.converter;
import java.util.Map;
import ognl.DefaultTypeConverter;
import com.test.bean.Point;
//此处继承了strut2中的ongl的jar包中DefaultTypeConverter类,该类有两个转换类,我们重写它即可!

public class PointConverter extends DefaultTypeConverter
{
//context上下文
 
 @Override
 public Object convertValue(Map context, Object value, Class toType)
 {
  //toType表示转换成什么,此处表示要从字符串转换到point
  if(Point.class == toType)
  {
   Point point = new Point();
//解释:为什么此处是字符串数组,因为提交过来可能是一个组,比如一个选择列表,他们的名字都是相同的。
   String[] str = (String[])value;
   
   String[] paramValues = str[0].split(",");
   
   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;
 }
 
}

 

 

5、pointAction类

package com.test.action;

import java.util.Date;

import com.opensymphony.xwork2.ActionSupport;
import com.test.bean.Point;

public class PointAction extends ActionSupport
{
 private Point point; 
 private int age;
 private String username;
 private Date date;
 
 public Point getPoint()
 {
  return point;
 }

 public void setPoint(Point point)
 {
  this.point = point;
 }

 public int getAge()
 {
  return age;
 }

 public void setAge(int age)
 {
  this.age = age;
 }

 public String getUsername()
 {
  return username;
 }

 public void setUsername(String username)
 {
  this.username = username;
 }

 public Date getDate()
 {
  return date;
 }

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

 @Override
 public String execute() throws Exception
 {
  return SUCCESS;
 }

}

 

6、out.jsp

<body>
    
 point:<s:property value="point"/><br>
 age:<s:property value="age"/><br>
 username:<s:property value="username"/><br>
 date:<s:property value="date"/><br>

  </body>

  

7、struts.xml
               

<action name="login" class="com.test.action.LoginAction">     
                  <result name="input">/login2.jsp</result>     
                  <result name="success">result.jsp</result>     
                  <result name="failer">/login2.jsp</result> 
  
  <action name="pointConverter" class="com.test.action.PointAction">
   <result name="success">/output.jsp</result>
  </action>

 

 

struts如何知道去找谁转换呢?
1)规定在src定义一个文件(系统会自动拷贝一份到class目录下一份)
文件名为PointAction-conversion.proreties
该文件名字要求,文件名格式为***-conversion.properties
文件位置和Action类放在一起,且名前半部分和Action类一致如:PointAction-conversion.proreties
内容为point=con.test.converter.pointConverter
解释:等号左侧是需要转换的类的对象,左侧是用哪个类来转换。
2)运行过程当运行到PointAction类时,发现有一个文件PointAction-conversion.proreties,那么它在调用action里面的属性时它就会
检查需不需要转化,当执行到setPoint的时候,发现了Point类需要转化,会先对Point类根据=con.test.converter.pointConverter来转化。然后再赋值。
当需要跳转到success对应页面输出时,发现有Point输出时,又一次类型转化!

 

分享到:
评论

相关推荐

    struts2学习笔记3数据类型转换

    struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换struts2学习笔记3数据类型转换

    struts2简单实例(类型转换)

    在这个"struts2简单实例(类型转换)"中,我们将探讨Struts2如何处理不同类型的数据转换,以及如何创建一个简单的演示应用。 首先,让我们理解什么是类型转换。在Web应用程序中,用户通过表单提交的数据通常是字符...

    struts2学习笔记三(第3讲.Struts2的类型转换)

    在本篇“Struts2学习笔记三”中,我们将聚焦于Struts2的类型转换这一核心特性。类型转换在处理用户提交的数据时非常关键,它允许Struts2自动将请求参数转换为Java对象的属性。 在Struts2中,类型转换主要由`...

    struts2简单实例(类型转换方法对比)

    本实例主要探讨了在Struts2中进行类型转换的三种方法:局部类型转换、全局类型转换以及大量数据类型的转换。对于初学者来说,理解并掌握这些转换方式至关重要,因为它们能够帮助我们处理用户输入的数据,并将其转化...

    struts2数据类型转换器

    这篇博客“Struts2数据类型转换器”可能深入探讨了这个主题,虽然具体的细节无法在此给出,但我们可以根据Struts2中数据类型转换的工作原理来展开讨论。 在Java Web开发中,用户通过表单提交的数据通常是字符串形式...

    Struts2类型转换(一)----常规类型,自定义类型,错误处理

    Struts2是一个强大的MVC框架,它在处理Web应用程序时提供了许多便利,其中包括类型转换功能。类型转换是将用户输入的数据自动转化为服务器端处理所需的类型,这样可以避免手动转换带来的繁琐工作。本篇文章将深入...

    struts2(1-7)源码 struts2学习入门 源码学习

    struts2 将要进行自定义类型转换的点数据从1个增加到3个 struts3 进行全局的类型转换 struts4 使用Struts2中内部类中的方法进行自定义类型转换,用到的类StrutsTypeConverter struts5 增加集合类型,使用范型 ...

    struts2 学习重点笔记

    - **优势**:使用 Struts2 可以显著提高开发效率,因为它能够处理很多基础任务,如数据接收、类型转换、验证等。 **1.2 Struts2 架构** - **MVC 架构**:Struts2 采用经典的 MVC 架构,分为模型(Model)、视图(View)...

    struts2学习笔记四(第4讲.Struts2的类型转换续)

    在"Struts2学习笔记四(第4讲.Struts2的类型转换续)"中,我们将会深入探讨Struts2中的类型转换机制,这是一个核心特性,用于处理Action类属性与HTTP请求参数之间的数据类型转换。 在HTTP请求中,数据通常是字符串...

    struts2注册转换器

    Struts2是一个强大的MVC(模型-视图-控制器)框架,广泛应用于Java Web开发中。...这个案例提供了一个很好的学习点,帮助开发者更好地理解和利用Struts2框架的类型转换机制,提高代码的健壮性和可维护性。

    struts2学习心得

    9. **全局类型转换配置**:为了统一管理不同类型转换的规则,Struts2允许在`struts.xml`配置文件或`xwork-conversion.properties`文件中定义全局的类型转换策略,从而避免在每个Action中重复配置相同的转换规则。...

    struts2的类型转换器授课教案和例子源码

    通过这两课时的学习,你应该能够熟练掌握Struts2类型转换器的使用,并能根据业务需求自定义自己的转换器。这些知识对于进行Java web开发,特别是使用Struts2框架的工作来说,是非常关键的。理解并运用好类型转换器,...

    struts2中文学习文档

    WebWork在被Struts2吸收之前,已经具备了许多先进的特性,如动态类型转换、拦截器和结果类型等。这些特性后来都被融入到了Struts2中,使得Struts2不仅继承了WebWork的优点,还在此基础上进行了改进和扩展,成为了...

    struts2 全局类型转换器.rar

    通过这个压缩包,开发者可以学习到如何自定义Struts2的类型转换器,提高应用的灵活性和可维护性。同时,结合博文链接(https://llxhna.iteye.com/blog/1067851)可能会提供更深入的讲解和示例代码,帮助理解并实践这...

    Struts2之类型转换器的使用案例struts002

    本案例"Struts2之类型转换器的使用案例struts002"深入探讨了如何自定义类型转换器以及在实际应用中的使用。 首先,Struts2框架提供了一系列内置的类型转换器,可以自动处理基本类型和常见类型的数据转换,如String...

    struts2自定义类型转换、拦截器实例练习

    本实例练习旨在帮助你深入理解Struts2的工作原理,特别是自定义类型转换和拦截器的使用。 首先,让我们详细探讨Struts2的MVC架构。在MVC模式中,Model代表业务逻辑,View负责展示数据,而Controller则是两者之间的...

    struts2 转换器

    在实际应用中,Struts2转换器不仅可以处理简单的类型转换,还能进行数据验证。例如,你可以在转换器中检查日期是否符合特定格式,或者数值是否在指定范围内。这样,你可以在数据到达业务逻辑之前就捕获并处理潜在的...

    struts2类型转换深入总结

    这篇博文深入探讨了Struts2中的类型转换机制,通过分析源码和使用工具,帮助开发者更好地理解和应用这一特性。 在Struts2中,类型转换主要由`ValueStack`和`TypeConverter`接口负责。`ValueStack`是一个对象栈,它...

    第2讲 --Struts2的类型转换

    总结来说,Struts2的类型转换机制是其核心功能之一,它有效地解决了HTTP请求数据与Action属性之间的类型不匹配问题。理解并掌握Struts2的类型转换,对于提升Java web应用的开发效率和质量具有重要意义。通过学习和...

    struts2学习 源码

    8. **类型转换**:Struts2自动处理HTTP请求参数到Action字段的类型转换,减轻了开发者的工作负担。 9. **异常处理**:Struts2提供了全局的异常处理机制,可以统一处理应用中的异常,提高代码的健壮性。 10. **国际...

Global site tag (gtag.js) - Google Analytics