我的日常

登录/注册
您现在的位置:论坛 盖世程序员(我猜到了开头 却没有猜到结局) 盖世程序员 > Struts2之类型转换器的使用
总共48086条微博

动态微博

查看: 1163|回复: 0

Struts2之类型转换器的使用

[复制链接]

96

主题

7

听众

406

金钱

四袋长老

该用户从未签到

跳转到指定楼层
楼主
发表于 2014-11-20 20:09:51 |只看该作者 |正序浏览

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

二、

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

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

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

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

  1. @Override
    ; p0 j4 A, [# {! _* t3 w
  2. public Object convertFromString(Map arg0, String[] arg1, Class arg2) {
    ' |9 t+ k* @5 N
  3.     String str = arg1[0];
    . N4 a! j/ N( u
  4.     StringTokenizer token = new StringTokenizer(str, ";");
    : u  u" X4 H* |# s" {% `; [
  5.     String username = token.nextToken();
    4 @. s8 m; V7 [: j( V3 _
  6.     String password = token.nextToken();
    . z' U! ^9 U7 \, p9 f6 H: t- {( {
  7.     User user = new User();
    & w" K9 t$ p/ X9 e! C/ O0 s6 N3 e
  8.     user.setUsername(username);
    " s- F$ f. W) `  f" B( d
  9.     user.setPassword(password);
    : ?+ x) n7 g" R- X3 d
  10.     return user;
    2 k# s8 V0 t! r. l1 u, L( |* ^
  11. }
    + x8 S) U: h% j! w, ?

  12. . P6 L. ~7 Y& r2 {' ]8 g" l
  13. @Override
    " ?* ], \, x6 G7 }" }% F( d8 w0 S- r1 n+ K
  14. public String convertToString(Map arg0, Object arg1) {
    2 O! B$ W, X' H) H; B" [
  15.     User user = (User)arg1;
    # Q; n! v- a1 K9 {
  16.     String str = "username="+user.getUsername()+"   password="+user.getPassword();; E/ W+ f+ `9 C4 t3 N, \8 T" `" ^
  17.     return str;
    6 m; y# q4 o& `
  18. }9 l  T& H1 ^# d) i( w# T
复制代码

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

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

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


1 ^( L7 p! N/ J; z

三、经验之谈:

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

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

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


+ {$ f, I6 j" f' B; j1 u/ L8 I8 Y

四、案例项目:http://download.csdn.net/detail/u011638419/8173841

* n$ ~0 s9 f6 b  Q

五、每日一乐:

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

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

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

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

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

* ]+ ~2 W: d/ L% ^
* P5 i2 [  Y/ N

科帮网 1、本主题所有言论和图片纯属会员个人意见,与本社区立场无关
2、本站所有主题由该帖子作者发表,该帖子作者与科帮网享有帖子相关版权
3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和科帮网的同意
4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
7、科帮网管理员和版主有权不事先通知发贴者而删除本文


JAVA爱好者①群:JAVA爱好者① JAVA爱好者②群:JAVA爱好者② JAVA爱好者③ : JAVA爱好者③

相关帖子
    快速回复
    您需要登录后才可以回帖 登录 | 立即注册

       

    关闭

    站长推荐上一条 /1 下一条

    发布主题 快速回复 返回列表 联系我们 官方QQ群 科帮网手机客户端
    快速回复 返回顶部 返回列表