一、学习案例:通过在输入页面(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呗。”

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

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

终于解释权归爱尚合伙人全部,转载请注明出处。

最新文章

  1. Django补遗(一)
  2. codeforces 723D(DFS)
  3. Java + eclipse + awt 编写锻炼打字小软件(未完成)
  4. iOS利用HealthKit框架从健康app中获取步数信息
  5. 转:zookeeper3.4.5安装笔记
  6. Linux系统中如何添加自己的库文件路径
  7. 如何把 excel 的数据导入到数据库里面去
  8. 轻量级IOC框架Guice
  9. iOS开发——设计模式那点事
  10. Linux 虚拟机忘记root密码
  11. 解决 RecyclerView 在Android Studio已经导入情况下还无法实例引用问题
  12. 十分钟了解ZAB(Zookeeper Atomic Broadcast)协议
  13. Matlab函数
  14. 【javascript】您好, 您要的ECMAScript6速记套餐到了 (一)
  15. robot framework + python实现http接口自动化测试框架
  16. gradle build scan
  17. Spring Security构建Rest服务-0702-个性化用户认证流程2
  18. C# Visual 快捷键
  19. javadoc生成word接口文档
  20. React Native 系列(三)

热门文章

  1. linux gcc编译protocol
  2. netstat查看服务器连接数端口并发数
  3. 在PL/SQL DEV里面有把锁一样的按钮,点击它会跳出“these query result are not updateable,include the ROWID to get updateab
  4. ERROR: Field 'PostId' doesn't have a default value Exception in thread "main" org.hibernate.exception.GenericJDBCException: could not execute statement
  5. ZOJ - 3985 - String of CCPC (思维 + 暴力)
  6. bootstrap中栅格系统的原理
  7. sublime 使用笔记
  8. 完美解决在Servlet中出现一个输出中文乱码的问题
  9. How to automate PowerPoint using VB
  10. 产品需求分析神器:KANO模型分析法