Struts2之类型转换器的使用

一、学习案例:通过在输入页面(input.jsp)用同一个输入框同时输入用户名和密码,通过类型转换器在输出页面(output.jsp)分别输出用户名和密码。

二、

a)类型转换是发生在页面数据提交之后,Action接收之前的。

b)对于8个原生数据类型以及Date,String。Struts2都能自动转换。所以我们只有在某些特定需求的情况下才会用到。

c)类型转换器,一听这个名字,我们首先会想到得有这么个类(没想到的等明天再想吧,继续看)。所以我们先创建一个名为UserConverter的类。当它继承StrutsTypeConverter之后,这就是个类型转换器。也不继承DefaultTypeConverter,不过不推荐。StrutsTypeConverter的父类就是DefaultTypeConverter,所以推荐使用StrutsTypeConverter。

d)StrutsTypeConverter把逻辑语句分为了convertFromString和convertToString,重写即可。前者是前台到后台,后者是从后台向前台转换。

代码:

	@Override
	public Object convertFromString(Map arg0, String[] arg1, Class arg2) {
		String str = arg1[0];
		StringTokenizer token = new StringTokenizer(str, ";");
		String username = token.nextToken();
		String password = token.nextToken();
		User user = new User();
		user.setUsername(username);
		user.setPassword(password);
		return user;
	}

	@Override
	public String convertToString(Map arg0, Object arg1) {
		User user = (User)arg1;
		String str = "username="+user.getUsername()+"   password="+user.getPassword();
		return str;
	}

e)类型转换器有了,struts2怎么才能知道我们重写了呢,换句话就是struts2怎么知道有UserConverter的存在呢?所以我们要在UserAction中配置连接文件,即:UserAction-conversion.properties,UserAction同action名称相同,后面是官方规定,必须这么写。内容为action中用到的属性名和转换器。

代码:user=com.almostman.converter.UserConverter。

这样当前台传输数据到action时,会先检测属性名user是否使用类型转换器,如果使用则启动类型转换器。这样类型转换器才能正常运行。

三、经验之谈:

a) 不要钻牛角尖,比如说某些同学对一些没必要的,相关性不大的问题死扣到底。有时候实在搞不清的问题,就放放,在以后如果越到同类问题,很容易就能解决。原因就是初学者一些专业知识积累的不够,当知识积累到一定程度,像这些专业性的问题,一看就能够明白。

b) 类型转换器其实在实际项目开发中用到的不是特别大。反正在我开发自己网站的一年时间里是没怎么用到,只是有些地方的日期格式控制能用到。

c) 学软件开发这一行,不要思维定式。更不要用感情的思维方式去解决问题,我们开发面对的是 机器,用的是机器语言,我们应该学会用机器的思维方式去解决问题。比如类型转换,我们在设计表单页面时,完全可通过页面设计上的优势杜绝使用类型转换。好比,日期输入,我们完全可以用插件代替,不让人工输入。

四、每日一乐:

一天我和同事一起值班,聊了一会天。

结果他想起一点事,要出去。

我看同事要走,说:“哎哎哎,别走啊,再吹会牛B呗。”

他什么也没说,走到我的面前。

对着我的耳朵,轻轻的吹了一口气,头也不回的走了!

最终解释权归爱尚合伙人所有,转载请注明出处。

时间: 2024-10-16 18:20:10

Struts2之类型转换器的使用的相关文章

struts2自定义类型转换器

首先,何为struts2的类型转换器? 类型转换器的作用是将请求中的字符串或字符串数组参数与action中的对象进行相互转换. 一.大部分时候,使用struts2提供的类型转换器以及OGNL类型转换机制即可满足大部分类型转换需求.如: 类User.java package models; public class User { private String username; private String password; public String getUsername() { retur

Struts2 自定义类型转换器

Struts2自定义类型转换器分为局部类型转换器和全局类型转换器 (1)局部类型转换器 如果页面传来一个参数reg.action?birthday=2010-11-12到后台action,然后属性 用date类型是可以接收到的,但是如果传的是20101112这样类型的字符串,用date类型是获取不到,并且会出现错误的,struts2提供了一 种类型转换器供我们使用. 以下为局部类型转换器的开发步骤a.首先要写一个类来继承DefaultTypeConverterb.然后覆盖convertValue

struts2学习笔记之十一:struts2的类型转换器

Struts2的类型转换器 如何实现Struts2的类型转换器? * 继承StrutsTypeConverter * 覆盖convertFromString和convertToString 注册类型转换器 * 局部类型转换器,局部类型转换器只对当前Action起作用,需要提供如下配置文件: MyActionName-conversion.properties,MyActionName指需要使用转换器的Action名称 "-conversion.properties"固定字符串,不能修改

Struts2之类型转换器

一.类型转换器的应用场景 类型转换是OGNL的一部分,默认的八种基本类型.String.Date会使用类型转换,但是更复杂的类型转换就需要我们自定义了(虽然这个东西一般根本用不到),OGNL可以应用在很多领域,但是在web领域,因为在客户端到服务器端传输的只是字符串,所以这里就有一个需求收缩,我们的需求就变为完成String和复杂对象之间的互相转换.在Struts2中的类型转换则是在客户端的请求参数往Action的成员属性中设置的时候会被调用. 二.如何使用? 1.理论部分 所有的类型转换器都要

JAVAWEB开发之Struts2详解(二)——Action接受请求参数、类型转换器、使用Struts2的输入校验、以及遵守约定规则实现Struts2的零配置

Action接受请求参数 作为MVC框架,必须要负责解析HTTP请求参数,并将其封装到Model对象中 Struts2提供了非常强大的类型转换机制用于请求数据 到 model对象的封装 Struts2和MVC定义关系 StrutsPrepareAndExecuteFilter:控制器 在Struts2中action是什么?(Struts2是一个MVC框架) V:jsp M:action C:action StrutsPrepareAndExecuteFilter Struts2提供了三种数据封装

Struts2基础学习(四)—类型转换器

一.自定义转换器 1.概述      Struts2提供了常规类型转换器,可以用于常用数据类型的转换,但如果目标类型是一个特殊类型,则需要自定义转换器.Struts2 类型转换器实际上都是基于OGNL实现的,在OGNL项目中,有一个TypeConverter接口,自定义类型转换器必须实现 ongl.TypeConverter.        2.编写类型转换器 (1)实现TypeConverter接口,实现一个方法 public Object convertValue(Map<String, O

Struts2之自定义类型转换器

Struts2自定义类型转换器分为局部类型转换器和全局类型转换器 (1)局部类型转换器 如果页面传来一个参数reg.action?birthday=2010-11-12到后台action,然后属性用date类型是可以接收到的,但是如果传的是20101112这样类型的字符串,用date类型是获取不到,并且会出现错误的,struts2提供了一种类型转换器供我们使用. 以下为局部类型转换器的开发步骤a.首先要写一个类来继承DefaultTypeConverterb.然后覆盖convertValue这个

笔记02 文件上传、文件下载、类型转换器、国际化的支持

Struts2的上传 1. Struts2默认采用了apache commons-fileupload  2. Struts2支持三种类型的上传组件 3. 需要引入commons-fileupload相关依赖包 * commons-io-1.3.2.jar * commons-fileupload-1.2.1.jar 4. 表单中需要采用POST提交方式,编码类型需要使用:multipart/form-data 5. Struts2的Action     取得文件名称->>规则:输入域的名称+

Struts 2 之类型转换器

Struts2自定义类型转换器分为局部类型转换器和全局类型转换器 (1)局部类型转换器 如果页面传来一个参数reg.action?birthday=2010-11-12到后台action,然后属性用date类型是可以接收到的,但是如果传的是20101112这样类型的字符串,用date类型是获取不到,并且会出现错误的,struts2提供了一种类型转换器供我们使用. 以下为局部类型转换器的开发步骤 a.首先要写一个类来继承DefaultTypeConverter b.然后覆盖convertValue