`
zhaolianyang
  • 浏览: 97424 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

阅读更多
struts2中的局部类型转换

其中一个主要的就是使用逗号将点的两个坐标分隔开:

一、创建一个输入页面input.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'input.jsp' starting page</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->

  </head>
  
  <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>
</html>

二、在src下面新建一个包com.test.bean,在这个包中创建一个类Point.java类:
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;
	}
}

三、在src下创建一个包com.test.converter,在这个包下创建一个类PointConverter.java要继承DefaultTypeConverter类,用于Point的类型转换:
package com.test.converter;

import java.util.Map;

import com.test.bean.Point;

import ognl.DefaultTypeConverter;

public class PointConverter extends DefaultTypeConverter 
{

	@Override
	public Object convertValue(Map context, Object value, Class toType) 
	{
		// 从字符串数组到Point类型的转换,返回一个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;
		}
		// 从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;
	}
}

四、在src的com.test.action的包下创建一个Action类PointAction.java继承自ActionSupport:
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;
	}
}

五、在struts.xml中再创建一个Action,用于处理input.jsp发送过来的请求:
<action name="pointConverter" class="com.test.action.PointAction">
		<result name="success">/output.jsp</result>
	</action>

六、创建output.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"/>
  </body>

七、需要创建定义一个属性文件,用来让struts2来知道所要使用的转换类PointAction在哪里,同时也是创建在同一个包com.test.action的目录下(注意:这个属性文件的命名是有规范的PointAction-conversion.properties,前面是要对哪个Action类里面的属性进行转换,后面的是固定的名称):
point=com.test.converter.PointConverter


类型转换效果图:
未输入之前:


输入时:


结果页面:


  • 大小: 51.1 KB
  • 大小: 53.2 KB
  • 大小: 44.3 KB
2
1
分享到:
评论

相关推荐

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

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

    struts2学习笔记十(第10讲.Struts2的核心 拦截器)

    Struts2是一个强大的Java web开发框架,它极大地简化了基于MVC模式的应用程序构建过程。在Struts2中,拦截器扮演着至关重要的角色,它们是实现业务逻辑和控制流程分离开来的重要组件。本篇将深入探讨Struts2的核心...

    Struts2学习笔记2012

    ### Struts2学习笔记2012 #### 一、建立一个Struts2工程 **步骤详解:** 1. **创建Web项目:** - 在MyEclipse中选择“File” &gt; “New” &gt; “Dynamic Web Project”,创建一个新的Web项目。 2. **解压并配置...

    struts2.2学习笔记

    本笔记主要探讨了Struts2.2的核心概念,包括Action、拦截器、过滤器、国际化以及struts.xml配置文件的解析,尤其是类型转换的细节。 在Struts2.2中,每个HTTP请求都会创建一个Action对象,与Servlet不同,Servlet在...

    struts2.0学习笔记

    在第三节,我们讨论了自定义类型转换。当用户提交的数据需要转换成特定类型时,Struts2允许我们在Action类中或通过`.properties`文件定义转换规则。在Action类中,你可以覆盖`setters`方法来实现自定义类型转换,...

    SSH项目(spring+hibernate+struts2)

    SSH项目是一种经典的Java Web开发框架组合,由Spring、Hibernate和Struts2三个开源框架组成。这个项目示例提供了一个基于这些技术的简单应用,帮助开发者理解如何将它们整合在一起进行实际开发。 **Spring框架**是...

    马士兵hibernate学习笔记.docx

    《马士兵Hibernate学习笔记》是一份详尽的教程,涵盖了Hibernate框架的核心概念和技术要点。Hibernate作为Java领域中广泛使用的对象关系映射(ORM)框架,它有效地解决了Java应用程序与数据库之间的数据交互问题,...

    java常用框架学习笔记

    ### Java常用框架学习笔记 #### Hibernate ##### 1.1 Hibernate 实现数据库操作步骤 - **导入所需的Jar包**:为了使用Hibernate框架,首先需要在项目中导入Hibernate库。这通常意味着添加一系列与Hibernate相关的...

    韩顺平java从入门到精通视频教程(全94讲)学习笔记整理(齐全).docx(446页那个)

    2. **编译源文件**:使用`javac`命令将源文件转换为.class字节码文件。 3. **运行程序**:使用`java`命令执行字节码文件。 **环境变量配置** 在Windows系统中,需要配置JDK的环境变量,特别是PATH变量,以便系统能...

    Struts2.1讲义

    #### 第3章:Struts 2的核心技术 - **3.1 使用web.xml配置Struts 2实现Web项目** - **配置前端过滤器**:通过在`web.xml`中配置Struts 2的前端过滤器`FilterDispatcher`,确保所有请求都经过Struts 2处理。 - **...

    Java学习笔记-个人整理的

    {12.11.2}intersect与minus}{166}{subsection.12.11.2} {12.11.3}join}{166}{subsection.12.11.3} {12.11.3.1}cross join}{166}{subsubsection.12.11.3.1} {12.11.3.2}inner join}{167}{subsubsection.12.11.3.2...

    java基础学习笔记

    ### Java基础学习笔记知识点 #### 一、Java学习路线概览 Java学习通常分为几个阶段,从基础到高级,逐步深化。以下是对给定文件中提到的学习路线的详细解析: ##### 第一阶段:Java基础 - **JAVASE**:Java标准版...

    整理后java开发全套达内学习笔记(含练习)

    注意:默认类型转换(自动类型提升)会丢失精度,但只有三种情况: int&gt;float; long&gt;float; long&gt;double. 看一下他们的有效位就明白。 二进制是无法精确的表示 0.1 的。 进行高精度运算可以用java.math包中...

    FreeMark学习笔记

    ${week[2]} //输出第三个集合元素 此外,FreeMarker还支持返回集合的子集合,如果需要返回集合的子集合,则可以使用如下语法: week[3..5] //返回week集合的子集合,子集合中的元素是week集合中的第4-6个元素 3,输出Map...

    JavaEE学习实战笔记心得

    - **Jar包配置**:在项目中引入必要的Hibernate及第三方依赖Jar包。 #### Struts2 - **配置文件**:`struts.xml`文件用于配置Action映射、拦截器等信息。 - **Jar包管理**:列出项目所需的所有Struts2相关Jar包,...

    webwork学习笔记

    ### WebWork学习笔记知识点 #### 一、WebWork框架简介 - **定义**: WebWork是一个由OpenSymphony组织开发的MVC(Model-View-Controller)框架,专注于组件化和代码重用,适用于J2EE应用程序开发。 - **最新版本**:...

Global site tag (gtag.js) - Google Analytics