Struts2之类型转换器的使用
一、学习案例:通过在输入页面(input.jsp)用同一个输入框同一时候输入username和password,通过类型转换器在输出页面(output.jsp)分别输出username和password。
二、
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) 不要钻牛角尖,比方说某些同学对一些不是必需的。相关性不大的问题死扣究竟。有时候实在搞不清的问题,就放放。在以后假设越到同类问题,非常easy就能解决。原因就是刚開始学习的人一些专业知识积累的不够,当知识积累到一定程度,像这些专业性的问题,一看就行明确。
b) 类型转换器事实上在实际项目开发中用到的不是特别大。反正在我开发自己站点的一年时间里是没怎么用到,仅仅是有些地方的日期格式控制能用到。
c) 学软件开发这一行,不要思维定式。更不要用感情的思维方式去解决这个问题,我们开发面对的是 机器,用的是机器语言。我们应该学会用机器的思维方式去解决这个问题。比方类型转换。我们在设计表单页面时,全然可通过页面设计上的优势杜绝使用类型转换。好比,日期输入,我们全然能够用插件取代,不让人工输入。
四、案例项目:http://download.csdn.net/detail/u011638419/8173841
五、每日一乐:
一天我和同事一起值班,聊了一会天。
结果他想起一点事,要出去。
我看同事要走,说:“哎哎哎,别走啊,再吹会牛B呗。”
他什么也没说,走到我的面前。
对着我的耳朵,轻轻的吹了一口气,头也不回的走了。
终于解释权归爱尚合伙人全部,转载请注明出处。
Struts2之类型转换器的使用的更多相关文章
- struts2学习笔记之十一:struts2的类型转换器
Struts2的类型转换器 如何实现Struts2的类型转换器? * 继承StrutsTypeConverter * 覆盖convertFromString和convertToString 注 ...
- struts2自定义类型转换器
首先,何为struts2的类型转换器? 类型转换器的作用是将请求中的字符串或字符串数组参数与action中的对象进行相互转换. 一.大部分时候,使用struts2提供的类型转换器以及OGNL类型转换机 ...
- Struts2的类型转换器
Struts2的类型转换器 如何实现Struts2的类型转换器? * 继承StrutsTypeConverter * 覆盖convertFromString和convertToString 注册类型转 ...
- Struts2初学 struts2自定义类型转换器
一.问题的引出 Struts2的类型转换是基于OGNL表达式的,由于请求的参数都是字符串,而JAVA 本身属于强类型的的语言,这样就需要把请求参数字符串转换成其他类型. Struts ...
- [JavaWeb基础] 013.Struts2 自定义类型转换器
很多时候,我们在做web开发的时候经常要用到时间的转换器,Struts2给我们提供了一种类型转换器的接口.下面我们讲讲怎么实现吧. 1.首先我们要定义一个类型转换的类,继承自com.babybus.s ...
- Struts2:类型转换器
常规的String,int能自动转换,但是,有些类型不是这么简单,比如输入字符串,但需要Date.自定义类型,因此需要自定义类型转换类型转换器分全局和局部按惯例,局部的优先级高于全局 需求: 1.输入 ...
- Struts2之类型转换器
一.类型转换器的应用场景 类型转换是OGNL的一部分,默认的八种基本类型.String.Date会使用类型转换,但是更复杂的类型转换就需要我们自定义了(虽然这个东西一般根本用不到),OGNL可以应用在 ...
- Struts2之自定义类型转换器
Struts2自定义类型转换器分为局部类型转换器和全局类型转换器 (1)局部类型转换器 如果页面传来一个参数reg.action?birthday=2010-11-12到后台action,然后属性用d ...
- struts2 笔记02 文件上传、文件下载、类型转换器、国际化的支持
Struts2的上传 1. Struts2默认采用了apache commons-fileupload 2. Struts2支持三种类型的上传组件 3. 需要引入commons-fileupload ...
随机推荐
- Lazarus 字符集转换 Utf8ToAnsi,UTF8ToWinCP,UTF8ToSys,UTF8ToConsole
由于Lazarus从1.2版开始默认字符集就是UTF8,如果要转到系统正常显示或文本保存,就必须对字符集进行转换.Lazarus提供了很多函数.如题. 那么这里面有什么关系呢? UTF8ToSys 需 ...
- POJ_2536_Gopher II
题意:n只地鼠,m个地鼠洞,地鼠必须以v的速度在s秒内钻进洞且每个洞仅能容纳一只地鼠,问最少有几只地鼠会被老鹰吃掉. 分析:最大匹配问题,将s秒内地鼠能够跑到的洞与该地鼠连成一条边,在最后得到的图中使 ...
- 【windows】自动化测试持续集成(CI)环境部署
1. 环境准备 1.1 我的环境 1.Win10 64位 2.JDK 1.8.0_121 3.Tomcat 7.0.92 4. Jenkins 2.24 5.SVN-Server 3.8.1 1.2 ...
- PHP 加密:Password Hashing API
PHP 5.5 之后引入 Password hashing API 用于创建和校验哈希密码,它属于内核自带,无需进行任何扩展安装和配置.它主要提供了四个函数以供使用: password_hash(): ...
- 【maven】Description Resource Path Location Type An error occurred while filtering resources TESTVIDEO line
在maven中构建项目的时候发现了如下错误: Description Resource Path Location Type An error occurred while filtering res ...
- Java笔记——String、StringBuffer和StringBuilder类
String类是不可变类,即一旦一个String对象被创建以后,包含在这个对象中的字符串序列是不可改变的,直至这个对象被销毁. StringBuffer对象则代表一个字符序列可变的字符串,当一个S ...
- 'dict' object is not callable
今天学py的map函数时,由于在上面定义了一个dict类型的变量(取的名是map),所以编译后报了这么一个错,哎,以后学py命名要小心了
- 使用vuex实现父组件调用子组件方法
曲线救国. 核心原理就是父子共用一个vuex对象,且看代码: 父组件parent.vue <template> <div class="wrap"> < ...
- vue api
1. vue.config.silent = true 取消 Vue 所有的日志与警告. 2.vue.config.productionTip= false 设置为 false 以阻止 vue 在启动 ...
- 【Codeforces 1037D】Valid BFS?
[链接] 我是链接,点我呀:) [题意] 让你判断一个序列是否可能为一个bfs的序列 [题解] 先dfs出来每一层有多少个点,以及每个点是属于哪一层的. 每一层的bfs如果有先后顺序的话,下一层的节点 ...