最近一周接触了一个Java EE的B/S项目,里面用到了SSH,部分持久层用的是ibatis,接触完后觉得有收获,于是把认识到的记录下来。同时欢迎高手拍砖。
现在终于知道所谓的三层框架(视图层,业务逻辑,持久层)和MVC框架的联系了,MVC框架是针对三层框架的视图层的细分
上图的主要内容是这样的:
用户的请求是通过URL发送到视图层中的C。Java中的controller一般是Sevrlet,Sevrlet把对应的把请求再发送到相应的Action,Action处理完后把数据显示在相应的View上,Java中的BS架构的View一般是JSP,JSP中的EL表达式和JSTL表达式解决了我以前处理BS架构程序的一个难题,就是服务端的数据如何能方便快捷地传到页面中,以前就是JSON序列化,到了页面又去解序列,现在不用了,复杂的对象或者数组一样可以传递。然后这些URL,Action,JSP之间的对应关系是由Struts去统筹的。
发送到Action的请求中,如果是实体相关的数据则会封装到Model中,其他的则用其他Java中的数据类型去表示,经常还会用到Map去做键值映射。
然后数据一般都是通过实体和其他Java数据类型去传递了,也就是常见的函数参数调用和函数返回值。从Action到Service(Manager)到DAO中,再沿原路返回。于是这里面又有Action,Manager,Dao之间的对应关系了,以前的做法是在Action中new Manager实例,在Manager中new dao实例,于是它们之间就会有依赖。Spring就改变了这种传统的依赖关系,而是在Action中声明一个getManager的方法,让Manager去注入到Action中。Manager和Dao之间也同样处理。
这一周接触的项目部分持久层用的是ibatis,很轻量级的一个框架,看看实例和文档就能学懂的,就不细说了。都是通过一个Mapper文件去映射和规定数据库操作。
以上是我自己的理解,不知道有无错漏。
另外我觉得JSP中包含的东西是比较多,
和Java相关的有,EL/Jstl
还有和Java无关的HTML/CSS/javascript 等,它们之间应该也需要一个东西去统筹,这样项目的思路就会非常清晰。