Struts2.1笔记(五):Struts2的类型转换

保姆级教程:用STM32CubeMX HAL库搞定ESP8266连接,附串口printf调试全流程 本文提供了一份详细的STM32CubeMX HAL库教程,指导开发者如何实现ESP8266无线模块的连接与调试。从开发环境搭建、串口配置到AT指令通信解析,涵盖了物联网开发中的关键步骤和常见问题解决方案,帮助开发者快速掌握STM32与ESP8266的集成技术。 阅读详情

5.1 struts2内建的类型转化器
以下类型的值可以自动进行转化
boolean、char、int、long、float、double、Date
5.2 自定义类型转换器
通过继承DefaultTypeConverter来实现自定义的类型转换器,然后重写此类的convertValue方法
5.3局部类型转换器
关于类型转化器的注册方式,主要有如下三种。
·注册局部类型转换器:局部转换器仅仅对某个action的属性起作用。
·注册全局类型转换器:全局类型转换器对所有的Action的特定类型的属性都会生效。
·使用JDK1.5的注释来注册类型转换器:通过注释方式生成类型转换器
转换器文件名格式:
actionName-conversion.properties:actionName是需要转换器生效的Action的类名,后面的-conversion.properties为固定的
此文件应该与action类.class放在相同位置。

下面编写一个实例用来转换一个Point类型的值(局部类型转换器)
对于个Point类型的对象转换流程是:
当输入时为String类型
从客户端到服务端类型为Point型
从服务端返回客户端类型为String型

实例:
新建一个Struts2的 Web项目
1.导入相应的Struts2的核心Jar包
2.修改web.xml
3.编写JSP页面 input.jsp 用来输入需要类型转换的值
<%@ page language="java" contentType="text/html; charset=gbk"
    pageEncoding="gbk"%>
    <%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gbk">
<title>Insert title here</title>
</head>
<body>
<s:form action="pointConversion">
<s:textfield name="point" label="point"></s:textfield>
<s:textfield name="name" label="name"></s:textfield>
<s:textfield name="age" label="age"></s:textfield>
<s:submit label="submit"></s:submit>
</s:form>
</body>
</html>

4.编写Point类 com.test.bean.Point
package com.test.bean;

public class Point {
 private int x, 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;
 }
}

5.编写Action类:com.test.action.PointAction
package com.test.action;

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

public class PointAction extends ActionSupport {
 private Point point;
 private String name;
 private int age;

 public Point getPoint() {
  return point;
 }

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

 public String getName() {
  return name;
 }

 public void setName(String name) {
  this.name = name;
 }

 public int getAge() {
  return age;
 }

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

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

}

6.编写Struts.xml
<?xml version="1.0" encoding="GBK"?>
<!-- 指定Struts 2配置文件的DTD信息 -->
<!DOCTYPE struts PUBLIC
 "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN"
 "http://struts.apache.org/dtds/struts-2.1.dtd">
<!-- struts是Struts 2配置文件的根元素 -->
<struts>
 
 <package name="Struts2" extends="struts-default">
  
  <action name="pointConversion" class="com.test.action.PointAction">
   
   <result name="success">/out.jsp</result>
  
  </action>
  

 </package>
</struts>

7.编写类型转化处理类 come.test.converter.PointConverter
package com.test.converter;

import java.util.Map;

import com.test.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();
   String[] str = (String[]) value;
   String[] p = str[0].split(",");
   int x = Integer.parseInt(p[0]);
   int y = Integer.parseInt(p[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;
 }

}

8.编写属性文件 com.test.action.PointAction-conversion.properties
point=com.test.converter.PointConverter

9.编写out.jsp 用于显示类型转化后的值
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
    <%@ taglib prefix="s" uri="/struts-tags" %>
   
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
point:<s:property value="point"/><br>
name:<s:property value="name"/><br>
age:<s:property value="age"/><br>
</body>
</html>

此实例的类型转化流程分析:
1.当提交表单时根据action的值去struts.xml寻找值相等的name属性
2.由class属性值对应的com.test.action.PointAction类去处理请求
3.com.test.action.PointAction类中根据表单中提交过来的属性去调用各自的set方法
4.调用set方法之前会先判断这个属性是否有自定义的一个类型转化文件,如果没有直接调用set方法
如果有就进入此文件(com.test.action.PointAction-conversion.properties)
5.找到相应的属性及转化类后进入此类( come.test.converter.PointConverter)
6.判断转化方向根据转化代码进行转化然后返回给PointAction进行转化后的赋值
7.执行excute方法根据得到的字符串进入相应的处理页面通过调用get方法把具体值显示此页面(out.jsp)
8.如果发现有自定义类型文件则会进入自定义类型转化处理类判断返回的值要转化为什么类型
9.转化后返回到get方法中
10.在页面(out.jsp)显示相应的值。

 

MATLAB 设置legend加标题 x1 = linspace(0,5); y1 = sin(x1/2); plot(x1,y1) hold on x2 = [0 1 2 3 4 5]; y2 = [0.2 0.3 0.6 1 0.7 0.6]; scatter(x2,y2,'filled') hold off legend({'sin(x/2)','2016'},'Location','northwest','Orientation','horizontal')%水平 legend添加标题 lgd = legend; lgd.Fon 阅读详情

相关推荐

用WorkBuddy搭建漫剧AI自动化制作流水线全攻略

在内容创作领域,AI智能体正逐渐从单一工具辅助走向全流程自动化调度。其核心原理是将剧本、分镜、绘图、配音、剪辑等环节拆解为可独立执行的任务单元,由总控系统统一协调,从而大幅降低人力与时间成本。这种模式尤其适用于动态漫画(漫剧)这类环节多、专业度要求高的视频形态。传统制作流程中,角色一致性、配音周期和剪辑返工是公认的效率瓶颈,而借助AI智能体工作台,创作者只需输入故事创意,即可驱动多个数字分身协同完成内容生产。本文以WorkBuddy为例,详细展示如何配置模型、安装技能包并串联五段式流水线,将单集制作成本从万

weixin_28224217的博客 255

struts2自定义类型转换器

为什么需要类型转换器当在表单中输入填入日期时, 格式有很多,比如可以输入1990年1月1日, 也可以填1990-01-01等多种方法, 这时候使用自定义类型的转换器可以将格式进行转化, 变为Action类可读的格式类型转换器的种类1. 基于OGNL的类型转换器要创建基于ognl的类型转换器, 必须实现DefaultTypeConverter 并重写convertValue方法 在入口的jsp页面表

cyh 1626

美团外卖 mtgsig 1.2 逆向工程与补环境实战指南

本文深入解析了美团外卖核心风控参数mtgsig 1.2的生成机制与逆向实战。通过拆解其复杂的JSON结构,揭示了设备指纹、环境信息加密等关键字段。重点阐述了在Node.js中模拟浏览器环境(补环境)的核心方法,包括DOM/BOM对象、本地存储及Canvas/WebGL等高级指纹的模拟技巧,为安全研究和合规自动化测试提供了一套完整的技术指南。

uber9的博客 410

Struts2的类型转换器

Struts2的类型转换器 如何实现Struts2的类型转换器? * 继承StrutsTypeConverter * 覆盖convertFromString和convertToString 注册类型转换器 * 局部类型转换器,局部类型转换器只对当前Action起作用,需要提供如下配置文件: MyActionName-conversion.propertie...

reblue520的专栏 185

Halcon实战:如何快速找到图像中的多个圆并计算圆心距离(附完整代码)

本文详细介绍了Halcon在工业视觉检测中快速定位图像中的多个圆并计算圆心间距离的实战方法。通过两种核心算法(阈值分割和动态阈值)的对比分析,结合完整代码示例和参数调优技巧,帮助开发者高效解决多圆检测问题,提升工业检测精度与效率。

weixin_33701251的博客 317

PX4从放弃到精通(二十一):使用git管理PX4代码

文章目录前言一、设置git密钥二、将代码上传至gitee 前言 Ubuntu 18.04 PX4 1.11.3 由于github有时网速较慢,本文使用gitee。 一、设置git密钥 ssh-keygen -t rsa -C “your_email@youremail.com” your_email@youremail.com为自己注册的gitee账户邮箱.设置路径与密码时,也直接回车不设置,如下图,密钥生成的位置在红框处. 在密钥目录下按Ctrl+H显示隐藏文件,进入.ssh文件夹用gedit打开id

超维空间科技的博客 3480

struts2 converter 之类型转换器

1. 前面讲的自定义类型转换器是基于 OGNL 的 DefaultTypeConverter 类并实现 convertValue() 方法,两个转换方向的逻辑都写在这一个方法中。而 Struts 2 为我们提供了一个 DefaultTypeConverter 的抽象子类 StrutsTypeConverter 来继承,并实现其中两个抽象方法 convertFromString() 和 conver...

xianqi_h的专栏 218

5步上手Quartz.NetUI:.NET Core定时任务的开箱即用解决方案

Quartz.NetUI是一个基于.NET Core + Quartz.NET + Vue + IView的开箱即用的定时任务UI解决方案。它结合了Quartz.NET的强大功能和Vue.js的易用性,提供了一个不依赖数据库、只需在界面进行简单配置即可使用的定时任务管理系统。通过上述步骤,你已经学会了如何使用Quartz.NetUI在.NET Core项目中实现定时任务。Quartz.NetUI不仅功能强大,而且使用简单,非常适合那些需要快速实现定时任务管理的开发者。

java专栏 2408

struts2类型转换器概述

struts2有两种类型转换器:1.自定义局部类型转换器public class DateTypeConverter extends DefaultTypeConverter { @Override public Object convertValue(Map context, Object value,   Class toType) {  SimpleDateFormat dateFormat=new SimpleDateFormat("yyyyMMdd");  try {   if(toType==D

千杯不醉 941

巡检领域红外热成像相机镜头焦距选择方法总结

摘要:巡检机器人红外热成像相机镜头焦距的选择需综合考虑检测距离、视场角、目标分辨率等核心要素。短焦距(4-6mm)适用于室内近距离巡检,中焦距(12-19mm)适合变电站等中等距离场景,长焦距(25-50mm)则用于光伏板等远距离检测。选型需遵循焦距计算公式f=SL×d,确保目标占据≥3×3像元,同时考虑机器人安装空间、环境适应性及软件联动需求。建议通过样机实测或仿真软件验证选型合理性,以实现对设备故障的精准识别。

start_up_go的博客 300

详解Xilinx FPGA高速串行收发器GTX/GTP(1)--SerDes和GTX的关系

详解Xilinx FPGA高速串行收发器GTX/GTP(1)--SerDes和GTX的关系

孤独的单刀 4355

五、Struts2之类型转换

一、Struts2 类型转换介绍   类型转换:解析HTTP请求参数,将Http请求参数赋值给Action的属性;比如:         此处将名为name、password、age的值赋值给Action的属性,类型转换是指这个赋值过程中可能出现的类型不一致问题而做出的转换,因为HTTP参数都是字符串类型的;因此从String类型的age参数传给int

xiazdong 8819

【笔记篇】Davinci Configurator BswM模块

AUTOSAR BSWM模块配置介绍

weixin_47571898的博客 1534

【Struts】:Struts1和Struts2的区别与联系

之前的两篇博文分别介绍了Struts1和Struts2这两个框架的概念和简单的使用流程,但是没有对这个两个框架之间的不同进行详细的说明,接下来就来看看两者到底有哪些不同的地方吧。         区别一:Struts1的Action类必须要继承Action,而Struts2的则可以不继承         在使用Struts1进行开发的时候,必须要继承Struts1的抽象基类Action,并且要

爱技术 爱生活 3463

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Struts2中的类型转换

1.     Struts2中的类型转换<br /> <br />我们知道通过HTTP提交到后台的数据,都是字符串的形式,而我们需要的数据类型当然不只字符串类型一种。所以,我们需要类型转换!<br />在Struts2中,类型转换的概念除了用于将界面传递过来的字符串转换为特定的类型(convertFromString)之外,还可以用于将特定的类型转换为字符串(即当我们在JSP中要把某种类型的对象呈现的时候,要将它转换为字符串来显示)(converterToString)。<br /> <br />在Stru

李腾飞的专栏 1万+

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

五 Struts2之类型转换

五 Struts2之类型转换

dtijcfrhb的博客 157

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Struts2权威指南总结5:Struts2的类型转换

将用户提交的参数(字符串)转换成对应的Java类型。 Struts2的类型转换是基于OGNL表达式的,只要把表单元素的name属性命名为合法的OGNL表达式,就可以充分利用struts2的类型转换机制。 (1)传统的日期转换:字符串àjava.util.Date SimpleDateFormat sdf = newSimpleDateFormat(“yyyy-MM-DD”); Date b

您已进入防沉迷系统... 957

Struts2的类型转换

Struts2系统内建的类型转换器、使用OGNL表达式、类型转换中的异常处理

gzx2080205的专栏 1794

Struts2学习笔记5:Struts2类型转换续二

Struts2学习笔记5:Struts2类型转换续二绑定:struts2-core-2.0.11.2.jar中类的源代码地址E:/Java/struts-2.0.11.2/src/core/src/main/java新建一个版本,并在tomcat的server.xml文件中声明struts" docBase="F:/eclipse/workspace/struts/WebROO

风达的专栏 1537

Struts2 类型转换

一、什么是类型转换 Struts2是一个MVC框架,它需要负责解析HTTP请求参数,而HTTP请求参数全部为字符串,Java为强类型语言,所以必须根据HTTP请求参数将其中的数据转换为需要的数据类型。这个过程便是类型转换。 二、Struts2的类型转换 Struts2中常用的类型转换可以使用OGNL表达式完成,即使用Struts2内建的类型转换器,部分自定义的数据类型有特殊的转换需求时,也可...

renhq 621

Struts2框架(五)——数据转移:OGNL和类型转换

主要内容: ActionCntext  OGNL与struts2 内建类型转换器 自定义类型转换器 ActionContext 在讲解类型转换之前,有必要说一下ActionContext。 ActionContext 包含了框架的请求处理过程可以访问的所有数据,包含内容从应用程序数据到会话作用域或者应用程序域的映射。 下图展示了ActionC

hi! 2195

Struts2之类型转换中的错误

1. 处理类型转换错误 在Web的应用中,表现层主要涉及到数据校验和类型转换,这两个是紧密相关的。在实际中,只有通过了类型转换,下一步才会去实现数据上的校验。那么今天,笔者将向大家介绍关于Struts2的类型转换的应用。主要是通过例子来说明,例子的应用大概是在页面中输入用户名、密码、生日,然后校验通过后才可进入数据校验。 1)        创建一个LoginAction.java,这个Act

owen_william的博客 1965

Struts2笔记——类型转换

概述 *从一个HTML 表单到一个Action 对象, 类型转换是从字符串到非字符串. >HTTP 没有 “类型” 的概念. 每一项表单输入只可能是一个字符串或一个字符串数组. 在服务器端, 必须把 String转换为特定的数据类型 ...

chuanke1344的博客 139

[struts2]类型转换笔记

 很早就接触到了struts框架,但是没有系统的学过这技术,也不太了解,据网上介绍大家都很推崇这项技术,所以学习J2EE的期间,就不得不学习struts框架了。目前struts出了2.1.16版本,其版本已和1.X版本有着本质上的区别,struts2 框架据我目前所知道有以下几下几大好处:类型转换、表单验证、国际化支持、处理表示分开等,当然还有其它很多的好处,这就有待继续学习了。struts2

小书童的专栏 341

Struts 2中输入校验和类型转换的实现 【整理】

文章目录1、简述2、类型转换/输入校验 1、简述 这章感觉不太好整理,我看目录属于了解层面,我偷个懒,推荐以下博客 点击跳转Struts 2学习及问题记录(3)——类型转换及输入校验 2、类型转换/输入校验 struts2的类型转换机制 涉及到的文件 ognl.DefaultTypeConverter org.apache.struts2.util.StrutsTypeConverter 配置文...

超逸の学习技术博客 892

Struts2中的类型转换方法

Jsp页面中的数据传送到服务器端,在进行验证之前会先进行类型转换。类型转换成功之后再进行验证,如果类型转换不成功,当然也就没有必要进行数据验证了。今天我们就来学习一下Struts2中的数据类型转换。 为什么要进行数据类型转换呢?jsp页面中的数据传送到服务器端,都是String类型,而Java类中可能会有int,double,date,还有对象类型等等,这就造成了数据类型的不一致,这就是我们要进...

风萧萧兮易水寒,壮士一去兮不复还 361
上一篇: Struts2.1笔记(四):深入Struts2
下一篇: Struts2.1笔记(六):Struts2的 类型转换(续)
不善^
博客等级 码龄18年 635粉丝 235原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值