今天在看李兴华《JavaWeb实战经典》时候,看到了用JSP+DAO整合起来做了一个数据库的增删改查操作。程序不难,但是具备借鉴意义。一般来说javaweb项目主要操作就是操作数据库,其本质也就是操作数据库。什么mvc,javabean从某种角度都是多余的,如果用户会写sql,那要View干什么,直接数据库查找不就好了?
一般来说可以实现一个最简单BS项目,可以有这么几个模式:
1 JSP + JDBC 这样写jsp里面全是java代码,很不利于维护与扩展。
2 JSP + DAO 这样业务逻辑还是写在jsp里面了
3 JSP + Servlet + JDBC(MVC) 这样好处是可以在跳转servlet时候调用下层服务,也就是业务逻辑。(JSP页面美观化可以使用EL,JSTL)
4 各种框架组合。Spring,Struts,Hibernate。Spring是接管所有层的框架。Struts是web层的框架,Hibernate是持久层框架。据我所知,持久层成熟产品很多,单就数据连接池这里有C3P0,Apache 的DBCP,Alibaba Druid(号称世界上最快的连接池),总之java世界里,只要想不到,没有实现不了的。
5 以上只是单机情况下的框架,如果到了分布式环境以及高并发环境下,设计的复杂程度将跨越一个数量级。分布式环境下的session,cookies怎么放?怎么设计分布式session框架?JVM怎么调优?I/O读取?.....暂时没研究。
画了一章李兴华老师书里案例的调用关系图:
例子虽然不难,但是用了两个Java设计模式以及接口解耦,还用了J2ee设计模式:有DAO模式,还有VO模式(其实就是JavaBean,传对象可以减少网络开销)。觉得案例很不错。也明白了为什么在相邻JSP跳转的时候必须经过一个servlet,而这是这个servlet调用了下层服务。远比JSP里面调用要方便和更具备模块化。
后面又把图修改了下:
可以看出,分层思想在其中起到核心作用。每一层做自己职责内的事情,多管闲事带来程序复杂度提高。业务一复杂就界面感觉很乱。其实分层是种抽象,逻辑上的分层,实际上就是多写了几个JSP和Java文件而已么。
这个程序虽然不难,但是这么一个程序里面的设计思想以及设计模式很值得思考。Java中有GOF23设计模式,在J2ee中也有21种设计模式,两大设计模式派系。
有图为证:
看来我又要荐书了:
又看到几张好图:
睡了,好累!
写了这么久,才1000字,晕!