如果用servlet和jsp做了一个小的Web项目,如果有人让你再做一个类似的系统,会怎么办?
大多数人会说,直接把现有的代码复制一下。
如果有十个八个类似的项目呢?
那么可以把其中重复的东西抽取出来,形成可以复用的东西
比如说URL与业务代码的映射,比如www.xxx.com?action=login ,在后台的Servlet中阶段,如果action为login,就把userName等从表单中提取出来,执行登录代码。
我们需要写很多的if else才能支持不同的的业务逻辑
如果能把 url和java类直接映射起来就好了。
再比如数据验证,登录的时候用户名或者密码出问题,需要在浏览器端显示错误信息,错误提示的字体、颜色、图标、位置太难搞。
访问数据库也是大问题,写很多的SQL只是为了把数据从数据库中取出来,放到java对象里面取。
这里面需要注意很多的细节问题,比如关闭连接、处理异常。
如果把业务逻辑都写到Servlet中去,中间还掺杂着页面控制和跳转,像意大利面条一样。
其实你这些问题我们的前辈早就遇到了, 他们也苦苦探索, 不断寻找好的实现方式, 找到以后就把各种经验给固化下来, 称为**最佳实践**
比如在 Web 开发中 MVC,就是针对业务逻辑和页面控制混在一起提出的解决办法。 这个实践会强烈的建议你把数据模型、页面展示、页面跳转控制分开来写, 防止搅成一团。”
再比如说利用XML或者Java 注解来描述URL与Java类之间的关系,只需要声明一下,背后的操作就交给框架处理了。
还有就是Java对象和数据库表的对应关系,只需要声明一下,框架就可以帮你取出来,填充到Java对象里面去
框架就像一个模板, 里边已经预置了一些公认的最佳实践,我要是想用的话, 把我项目相关的东西填充进去就可以了
框架像个半成品, 是无法独立运行的,必须由开发人员按照它定义的规则,把项目的代码放置到指定的地方, 由框架整合起来,这才是一个完整的应用程序