- 浏览: 250561 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (179)
- Spring3.0 (28)
- HIbernate3.5.6 (35)
- Struts2.1.8 (42)
- JSP (1)
- Servlet (0)
- JAVASE (16)
- JavaWeb (1)
- javaEE (0)
- SSH2整合 (0)
- EJB (0)
- Oracle (7)
- Ajax (7)
- Quartz作业调度框架 (6)
- jsValidationFramework (1)
- FCKeditor (1)
- ExtJS (29)
- JSF (0)
- JPA (0)
- JBoss Seam (0)
- JSON (0)
- Webservice (0)
- JQuery (1)
- Javascript (1)
- Css+DIV (0)
- Lunch (0)
- Linux (0)
- PHP (0)
- XML (1)
- Ibatis (0)
- DWR (0)
- DWZ (0)
最新评论
-
Nabulio:
good
Spring配置SessionFactory -
唤流年:
[color=red][/color] ...
Spring配置SessionFactory -
wangcl011:
Oracle通过数据泵网络导入另一个数据库,不生成DMP文件, ...
oracle命令导入dmp文件 -
rochou:
第一个Hibernate实现CRUD -
ningwuyu:
Entity 类是那个jar里面的
PropertyUtils MethodUtils用法
这里用一个例子介绍局部类型转换:
1.先在MyEclipse里面新建一个WebApp文件,我这里取名为:struts_converter
2.导入struts2的jar包
3.配置web.xml过滤器Filter
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <filter> <filter-name>struts</filter-name> <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> </filter> <filter-mapping> <filter-name>struts</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>
4.新建一个input.jsp文件
<body> <h3>使用逗号将点的两个坐标分开</h3> <s:form method="post" action="pointConverter.action" > <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="birthday" label="Birthday"></s:textfield> <s:submit label="SUBMIT"/> </s:form> </body>
5.新建一个PointAction类
public class PointAction extends ActionSupport { private static final long serialVersionUID = 5497987645500599609L; private Point point; private int age; private Date birthday; private String username; //getter()和setter() }
6.新建一个Point类
package com.zchen.struts.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; } }
7.写一个Converter类
package com.zchen.struts.converter; import java.util.Map; import com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter; import com.zchen.struts.bean.Point; public class PointConverter extends DefaultTypeConverter { @Override public Object convertValue(Map<String, Object> context, Object value, Class toType) { 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.com.zchen.struts.action包下面建一个"PointAction-conversion.properties"也就是和PointAction类在同一个目录下。
在文件里面写: point=com.zchen.struts.converter.PointConverter
6.配置struts.xml文件
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <constant name="struts.devMode" value="true" /> <package name="login" extends="struts-default" > <action name="pointConverter" class="com.zchen.struts.action.PointAction"> <result name="success">/output.jsp</result> </action> </package> </struts>
7.新建一个跳转页面
<body> point:<s:property value="point"/><br> age:<s:property value="age"/><br> username:<s:property value="username"/><br> birthday:<s:property value="birthday"/><br> </body>
这里简要概述一下运行流程:
1.tomcat在运行过程中先根据input.jsp页面的action判断确认运行的是struts,找到web.xml—Filter—struts.xml
2.在struts.xml中找出要跳转到的类:PointAction
3.根据set方法自动将jsp页面的表单属性name值赋值给对应的setter方法(所以命名要规范)
4.发现有对象的时候Point,找出有没有对应的Converter即根据properties配置文件找到PointConverter类。
5.DefaultTypeConverter判断目标类型是哪一种,由于jsp页面所填的都是String类型所以在这里调用的是if (Point.class == toType)方法,将字符串转换成Point对象并return point对象。
6.再次就已经将jsp页面的属性全部给队员的属性赋值。
7.调用execute()方法返回SUCCESS
8.struts.xml根据返回类型跳转到:output.jsp页面
9.输出显示(在栈中查找<s:dubug>模式可以看到)
10.当遇到对象类型的时候,重复第4步调用if(String.class == toType){}方法
11.将对象类型转换成String
说明:struts内置的转换器会将String转换成int date...类型所以不必写转换器。
发表评论
-
得到一个数值循环它的次数
2012-03-16 10:01 917<s:set name="number&quo ... -
Struts2中常量配置default.properties默认配置文件详解
2011-01-01 09:40 2317struts.configuration 该属性指定 ... -
Struts2中Action类的三种定义方式
2011-01-01 09:22 12881.重写execute方法 package com.z ... -
Struts2处理用户输入信息的三种方式
2011-01-01 09:06 832<form action="logi ... -
权限过滤器
2010-12-08 22:09 1235在网页制作中往往有些 ... -
定义一个中文字符过滤器
2010-12-08 20:45 1007package com.zchen.util; impo ... -
struts表单属性简单标签
2010-12-04 09:57 1085<body> <h1>登 ... -
Annotation配置Interceptor
2010-12-04 08:11 1689利用注解配置拦截器: 在xwork包下有: com.ope ... -
声名式异常处理
2010-11-30 19:38 946新建一个登录页面: <body> < ... -
struts自带的转换类——StrutsTypeConverter
2010-11-30 15:05 1492在实际开发中其实我们很少去使用DefaultTypeConve ... -
全局类型转换——Point
2010-11-30 14:36 1036与局部类型转换对应的是全局类型转换: 当一个jsp文件要输入 ... -
表单基本验证(1)
2010-11-30 12:47 885package com.zchen.struts.action ... -
第一个struts2程序
2010-11-30 12:26 8301.新建webapp: struts ... -
Struts配置文件的优先级——常量配置
2010-11-30 11:13 1479struts的常量配置可以在struts.xml、web.xm ... -
表单重复提交
2010-11-30 09:34 910<body> <form acti ... -
自定义拦截器
2010-11-30 09:26 943package com.zchen.interceptor; ... -
转换器
2010-11-30 08:42 761一、概述 在B/S应用中,将字符串请求参数转换为相应 ... -
OGNL
2010-11-30 08:30 918<body> <ol> &l ... -
动态结果类型
2010-11-30 07:09 881package com.zchen.struts2.user. ... -
全局结果类型
2010-11-30 07:05 808<?xml version="1.0" ...
相关推荐
传统的深度学习方法多依赖于将3D数据转换为网格或图像表示,但这样的预处理步骤可能导致信息损失。PointNet则首次提出了一种端到端的学习模型,能够直接处理不规则的3D点集,具有对输入点顺序不变性的优点。 Point...
- C#支持隐式类型转换(自动类型提升,如从小范围类型到大范围类型)和显式类型转换(强制类型转换,如从大范围类型到小范围类型,可能需要使用`Convert`类或类型名后跟`( )`进行转换)。 6. **变量的作用域** - ...
综上所述,“Force at a point in the interior of a semi-infinite solid”这一主题涉及到了经典固体力学中非常重要的问题——即如何在半无限大固体内部施加集中力时准确计算其产生的应力和位移分布。通过对Mindlin...
通常,卷积运算可以被理解为一种特殊的矩阵乘法——称为互换乘法(Matrix-Vector Multiplication,MVM)。这个过程可以有效地实现并优化,特别是在大规模的数据处理中。 在传统的矩阵乘法中,我们有两个矩阵A和B,...
在PCL(Point Cloud Library)的学习过程中,Normal Estimation是一个重要的环节,特别是在自动驾驶和无人驾驶领域。这个过程主要是为了计算点云数据中每个点的法向量,这些法向量提供了表面的方向信息,对于后续的...
针对现有方法在牙齿边缘区域分割不准确的问题,本文提出了一种新的分割网络——基于局部注意力机制的三维牙齿模型分割网络。该网络的主要特点如下: 1. **多尺度局部空间区域构建**:通过三维网格数据形式构建多...
- **类型转换**:在不同数据类型之间转换。 - **Integer Promotion**:某些情况下自动提升较小的整数类型到int。 - **Usual Arithmetic Conversion**:在算术运算中发生的标准类型转换规则。 **16. 运算符详解** - ...
- **类型转换**: 详述不同类型间的转换规则。 3. **运算符详解** - **位运算**: 讲解按位与、或、异或、取反、移位等运算。 - **其他运算符**: 介绍复合赋值、条件、逗号等运算符。 - **SideEffect与Sequence...
局部类型转换** - 在某些情况下,可能需要自定义类型转换器来处理特定类型的转换。 - **示例**:假设我们需要创建一个`HelloAction`类,并且需要一个转换器`HelloConverter`。 - 创建`HelloAction`类,并在`...
44. LVDT —— 线性位移差动转换器 (Linear Variable Differential Transformer):一种用于测量位移的传感器。 45. UMS —— 机组主控顺序 (Unit Main Control Sequence):控制机组启动、运行和停机的顺序。 46. ...
主函数中创建了多个 `ClassA` 类型的对象,并尝试进行类型转换。 **解析**:在这个例子中,我们需要考虑 Java 中的类型转换规则。Java 支持向上转型,即子类对象可以赋值给父类引用;但向下转型需要确保子类对象...
- **复合数据类型——结构体**:一种数据类型,可以包含不同类型的数据项。 - **数据抽象**:隐藏数据实现细节的过程,只暴露必要的接口。 - **数据类型标志**:用于描述数据类型的属性,如大小、对齐方式等。 - **...
的知识产权(取自并转换为点云)。 描述 Point-cloud-donkey 是一个基于点云分类的可定制管道。 开发始于将隐式形状模型 (ISM) [1] 算法应用于点云数据。 代码中仍然有很多对 ISM 的引用。 随着时间的推移,该框架...
- **复合数据类型——结构体**: 介绍结构体的定义及其成员变量的访问方法。 - **数据抽象**: 探讨数据隐藏的重要性及其实现机制。 - **数据类型标志**: 分析不同类型标志的用途。 - **嵌套结构体**: 展示结构体内...
- **编译器如何处理类型转换**:说明编译器在处理类型转换时的策略。 #### 16. 运算符详解 - **位运算** - **按位与、或、异或、取反运算**:介绍位运算符的使用方法。 - **移位运算**:解释左移和右移运算符的...