长沙java培训
达内长沙芙蓉路中心

18487146383

热门课程

Java框架还能这么玩?(下)

  • 时间:2016-10-08
  • 发布:长沙Java培训
  • 来源:sdk

2.反射+声明+约定

前面达内长沙java培训所说的方法看起来很美,但是有个巨大的问题,就是对客户侵入性太强。表现在两个方面:

(1)子类(业务类)很不自由,被迫继承一个它不想继承的类

(2)难于做单元测试,你也许注意到了,AbstractAction其实是依赖HttpRequest,和HttpResponse的,这两个对象一般需要web容器跑起来才能得到。

如果达内长沙java培训不说,估计你会以为这是一个普通的java class,实际上,它就是一个普通java class。

它虽然叫做LoginAction,但是和框架一毛钱关系也没有,毕竟它啥也没有继承,你的框架怎么知道它就是一个潜在的Action类?

这时候需要一点点声明性的工作,告诉框架,这是一个Action类,声明可以用xml,也可以用注解。这时候框架通过解析XML就会知道:奥,这是一个Action类,让我把它创建起来吧!

怎么创建?没看到配置文件中的类名吗,java反射出马,轻松搞定。接下来的问题是:怎么把Http Reqeust中的参数怎么传递给这个类?  

还是用反射!看到LoginAction的setUsername和setPassword没有, 框架和使用者约定好这么办:如果从浏览器传递到服务器的的参数是username=liuxin&password=123456,那你框架应该做的事情就是调用setUsername("liuxin") , setPassword("123456")

框架和使用者还可以再增加一个约定:调用了setXXX方法以后,就去调用exectue方法,这是个真正的业务方法。

如果你讨厌繁琐的xml,现在Java提供了另外一种强大的武器:Java注解。Java注解能够让你在源代码中添加一些“元数据”, 为一个类或者方法的增加一些“额外”的信息。

@Action用来表明这是一个Action类

@RequestMapping表明如果用户通过浏览器访问/login ,那这个excute方法就会被执行。

还要加上这么一个约定:如果用户访问的是/login?username=liuxin&password=123456的话那么execute方法的username和password两个参数将会绑定到值“liuxin"和"123456"

有了这些注解和约定,你的框架就能找到程序员写的Action类,并且直到如何调用方法, 如何传递参数了。

上一篇:Java框架还能这么玩?(上)
下一篇:管用的10条Java编程技巧(一)

达内长沙Java培训教你阅读GC日志

spring注入配置文件属性到java类

Java中Vector和ArrayList的区别

达内长沙Java培训详解volatile关键字

选择城市和中心
贵州省

广西省

海南省

扫一扫

了解更多干货