一.在Servlet中,表单提交的非字符串类型需要手动转换

  

  1.在struts中,表单提供的常见数据类型struts框架自动转换,无需手动转换

  2.在某些情况下,某些自定义类型struts不能完成自动转换,需要进行手动转换,如果需要转换的类型转换频率较高时,手动转换的代码增多,这时可以使用struts的类型转换器来进行转换

二.类型转换

  

使用类型转换的步骤

  1. 编写类型转换器,继承StrutsTypeConverter
  2. 编写xwork-conversion.properties配置文件,内容为:要转换的类型=类型转换器

案例:

  编写实体类:Point

  

  1. package com.ahd.entity;
  2.  
  3. public class Point {
  4. private int x;
  5. private int y;
  6.  
  7. public int getX() {
  8. return x;
  9. }
  10. public void setX(int x) {
  11. this.x = x;
  12. }
  13. public int getY() {
  14. return y;
  15. }
  16. public void setY(int y) {
  17. this.y = y;
  18. }
  19. @Override
  20. public String toString() {
  21. return "(" + x + "," + y + ")";
  22. }
  23.  
  24. }

Point

  编写PointAction

  

  1. package com.ahd.action;
  2.  
  3. import com.ahd.entity.Point;
  4. import com.opensymphony.xwork2.Action;
  5. import com.opensymphony.xwork2.ActionSupport;
  6.  
  7. public class PointAction extends ActionSupport{
  8. private Point point;
  9.  
  10. public Point getPoint() {
  11. return point;
  12. }
  13. public void setPoint(Point point) {
  14. this.point = point;
  15. }
  16.  
  17. @Override
  18. public String execute() throws Exception {
  19. // TODO Auto-generated method stub
  20. System.out.println(point.getX()+point.getY());
  21. System.out.println(point);
  22. return Action.SUCCESS;
  23. }
  24. }

PointAction

  xwork-conversion.properties

  1. com.ahd.entity.Point=com.ahd.converter.PointConverter

  编写类型转换器:PointTypeConverter,继承StrutsTypeConverter类,并重写convertFromString方法和convertToString方法,

  1. package com.ahd.converter;
  2.  
  3. import java.util.Map;
  4.  
  5. import org.apache.struts2.util.StrutsTypeConverter;
  6.  
  7. import com.ahd.entity.Point;
  8.  
  9. public class PointConverter extends StrutsTypeConverter{
  10.  
  11. @Override
  12. public Object convertFromString(Map context, String[] values, Class toClass) {
  13. // TODO Auto-generated method stub
  14. String value=values[0];
  15. Point point=new Point();
  16.  
  17. int x=Integer.parseInt(value.substring(0, value.indexOf(",")));
  18. int y=Integer.parseInt(value.substring( value.indexOf(",")+1,value.length()));
  19.  
  20. point.setX(x);
  21. point.setY(y);
  22.  
  23. return point;
  24. }
  25.  
  26. @Override
  27. public String convertToString(Map context, Object o) {
  28. // TODO Auto-generated method stub
  29. Point point=(Point)o;
  30. return "("+point.getX()+","+point.getY()+")";
  31. }
  32.  
  33. }

  

  struts.xml

  

  1. <?xml version="1.0" encoding="UTF-8"?>
  2.  
  3. <!DOCTYPE struts PUBLIC
  4. "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
  5. "struts-2.0.dtd">
  6.  
  7. <struts>
  8. <package name="struts2" extends="struts-default" namespace="">
  9. <action name="point" class="com.ahd.action.PointAction">
  10. <result>/success.jsp</result>
  11. <result name="input">/input.jsp</result>
  12. </action>
  13. </package>
  14. </struts>

struts.xml

  

  web.xml

  

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
  3. <web-app id="WebApp_ID">
  4. <display-name>struts2_02_modelDrive</display-name>
  5.  
  6. <filter>
  7. <filter-name>struts2</filter-name>
  8. <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
  9. </filter>
  10. <filter-mapping>
  11. <filter-name>struts2</filter-name>
  12. <url-pattern>/*</url-pattern>
  13. </filter-mapping>
  14.  
  15. <welcome-file-list>
  16. <welcome-file>index.html</welcome-file>
  17. <welcome-file>index.htm</welcome-file>
  18. <welcome-file>index.jsp</welcome-file>
  19. <welcome-file>default.html</welcome-file>
  20. <welcome-file>default.htm</welcome-file>
  21. <welcome-file>default.jsp</welcome-file>
  22. </welcome-file-list>
  23. </web-app>

web.xml

struts2_struts类型转换的更多相关文章

  1. 为C# as 类型转换及Assembly.LoadFrom埋坑!

    背景: 不久前,我发布了一个调试工具:发布:.NET开发人员必备的可视化调试工具(你值的拥有) 效果是这样的: 之后,有小部分用户反映,工具用不了(没反应或有异常)~~~ 然后,建议小部分用户换个电脑 ...

  2. c# 基础 object ,new操作符,类型转换

    参考页面: http://www.yuanjiaocheng.net/webapi/config-webapi.html http://www.yuanjiaocheng.net/webapi/web ...

  3. Struts2日期类型转换

    针对日期类java.util.Date进行类型转换,要求客户端使用"yyyy-MM-dd","yyyy/MM/dd"中的任意一种输入,并以"yyyy- ...

  4. 【.NET深呼吸】基础:自定义类型转换

    照例,老周在开始吹牛之前,先讲讲小故事,这是朋友提出的建议,老TMD写技术有什么了不起的,人人都会写.后来老周想想,也确实,代码谁不会写,能写到有品位有感悟,就不容易做到.于是,老周接受了该朋友的建议 ...

  5. C++四种类型转换方式。

    类型转换有c风格的,当然还有c++风格的.c风格的转换的格式很简单(TYPE)EXPRESSION,但是c风格的类型转换有不少的缺点,有的时候用c风格的转换是不合适的,因为它可以在任意类型之间转换,比 ...

  6. struts2类型转换

    1. Struts2中的类型转换 我们知道通过HTTP提交到后台的数据,都是字符串的形式,而我们需要的数据类型当然不只字符串类型一种.所以,我们需要类型转换! 在Struts2中,类型转换的概念除了用 ...

  7. C++_系列自学课程_第_11_课_类型转换_《C++ Primer 第四版》

    上次说了关于表达式的一些内容,说到还有一些关于数据类型转换的内容,今天我们接着八一八C++中的数据类型转换. 一.隐式类型转换 在表达式中,有些操作符可以对多种类型的操作数进行操作, 例如 + 操作符 ...

  8. Struts2入门(三)——数据类型转换

    一.前言 笔者一直觉得,学习一个知识点,你首先要明白,这东西是什么?有什么用?这样你才能了解.好了,不说废话. 1.1.类型转换为何存在?什么是类型转换? 在MVC框架中,都是属于表示层解决方案,都需 ...

  9. js条件判断时隐式类型转换

    Javascript 中,数字 0 为假,非0 均为真 在条件判断运算 == 中的转换规则是这样的: 如果比较的两者中有布尔值(Boolean),会把 Boolean 先转换为对应的 Number,即 ...

随机推荐

  1. Shader 屏幕后期特效 Shake(震屏)&Wave(波纹)

    震屏效果 Shader: //////////////////////////////////////////// ///// CameraPlay - by VETASOFT 2017 ///// ...

  2. python基础自学 第五天(附带视频和相关资源)

    数据类型 01.列表 List 是 python 中使用最频繁的数据类型,在其他语言中叫做数组 专门用于存储一串信息 列表用 [ ] 定义,数据之间用 , 分隔 列表的索引从 0 开始 补:索引就是数 ...

  3. Firewalld的结构

    原文地址:http://www.excelib.com/article/287/show firewalld简介 Centos7中默认将原来的防火墙iptables升级为了firewalld,fire ...

  4. 背水一战 Windows 10 (114) - 后台任务: 后台任务的 Demo(与 app 不同进程), 后台任务的 Demo(与 app 相同进程)

    [源码下载] 背水一战 Windows 10 (114) - 后台任务: 后台任务的 Demo(与 app 不同进程), 后台任务的 Demo(与 app 相同进程) 作者:webabcd 介绍背水一 ...

  5. 【高速接口-RapidIO】6、Xilinx RapidIO核仿真与包时序分析

    提示:本文的所有图片如果不清晰,请在浏览器的新建标签中打开或保存到本地打开 一.软件平台与硬件平台 软件平台: 操作系统:Windows 8.1 64-bit 开发套件:Vivado2015.4.2 ...

  6. CentOS 7 - 更新JDK,删除旧JDK,安装新JDK

    一,检查是否安装JDK. yum list installed | grep java 二,删除旧JDK. yum -y remove java-1.7.0-openjdk* yum -y remov ...

  7. web前端异步数据交互(长连接)

    Workers异步任务 开始(注册): divobjx=document.getElementsByTagName("div")[0]; var workdong=new Work ...

  8. Hystrix 停止开发。。。Spring Cloud 何去何从?

    栈长得到消息,Hystrix 停止开发了... 大家如果有对 Hystrix 不清楚的,请看下这篇文章:分布式服务防雪崩熔断器,Hystrix理论+实战. 来看下 Hystrix 停止开发官宣: ht ...

  9. 小程序入口构造工具&二维码测试工具

    小程序入口构造工具&二维码测试工具 本文将介绍我们小程序中隐藏的两个工具页面.原理虽不复杂,收益却实实在在,或许也能给诸君带来启发. 入口构造工具 痛点 PM&运营 投放链接 PM&a ...

  10. MYSQL服务器系统变量

    一:查看服务所有变量 MySQL服务器维护许多配置其操作的系统变量.每个系统变量都有一个默认值.可以使用命令行或选项文件中的选项在服务器启动时设置系统变量.其中大多数都可以在运行时使用动态更改 SET ...