是的,Spring,Mybaties确实给我们带来了方便的轻量级JavaWeb开发,但是,对于大部分中小系统来说,分层,框架,规范,已经成为一种累赘。
实际的程序开发过程中,大部分时间都花在了“架构”上,实际上我们真的需要吗?

-------冷静一下------------
我们先忘掉各种框架,设计模式。想一想一个简单的需求,商品列表查询。
实现这个需求,我们需要什么?
一个客户端浏览器,用来显示界面。
一个数据库,用来存储商品列表。
一段程序,处理客户端浏览器和后台数据库的通信。

程序是什么样的?
我们用到的产品是浏览器和数据库,所以程序需要针对浏览器和数据库来编写逻辑。
浏览器与程序所在服务器的交互方式是HTTP协议,数据库和程序所在服务器的交互方式是SQL。

是的,程序的职能是做HTTP协议和SQL语句的映射

---------说点废话-----------
如果写程序的人不知道自己要解析的协议张什么样,不知道发给数据库的SQL张什么样,其实是沉寂在自己的面向对象的世界里编程。
我需要的只是一个梨,你却给我一车苹果,还要在苹果上加各种接口转化成我想要的梨。
为什么不直接给我一个梨呢?
是的,你会说今天我想要个小号的梨,明天我想要个大号的梨,后天我想要一个小号一个大号的梨。我这一车苹果可以适应你各种变更。

对比
时间成本:
给我一个梨,需要一天完成,给我一车苹果需要一个月完成。

人员成本:
给我一个梨,一个听话的人即可。给我一车苹果需要有经验的有知识的人。

风险:
一车苹果中任意苹果坏掉,都要花时间去调查,修改。接口变更还要考虑苹果的堆放方式是否适合。

-------别吵,再冷静一下,步入正题------------
这么说我们不要考虑扩展,考虑设计模式,考虑业务增长了吗?
需要,需要适当的考虑,需要将这些问题放在软件工程中解决这些问题。
如果大家对业务分析和系统设计做得足够到位,会减少大量的项目成本和项目风险,大大地提高项目质量。

HTTP协议和SQL语句
我们来看一个浏览器请求到显示结果这个过程。
去:浏览器发送HTTP协议-服务器解析HTTP协议,得到页面数据-验证数据的合法性-将数据拼接成SQL-发送SQL给数据库
回:数据库返回查询结果-服务器解析结果转化成页面数据-渲染页面-将渲染后页面发送给浏览器

对于HTTP协议的解析我们可以采用HttpServlet
对于页面的渲染我们可以采用Jsp

//等等,为什么不用Velocity。。。,做页面的人看不懂Java代码。。。
//其实Java代码比Velocity好看多了。
//你要做得是分析分析分析,知道页面上到需要什么程度的后台逻辑,这个我们以后讲。
//上面这些行注释掉

我们还需要如下功能:
验证权限,验证数据,控制事务,控制数据库连接,写日志,拼接SQL,将数据库查询结果转化为页面数据等。

这些功能可以做成组件,或拿一个最好的组件来用。
在以后的章节中,我们将逐一分析并实现这些组件。

最终目的就是让数据从浏览器到服务器的路变得通畅。
让大家的时间集中在业务分析上,让DBA可以清晰地知道数据库要解析的SQL。
去除不必要的数据转换和障碍,风险。
--------------------------------------------------------
是的,我们将一起开发出一个新的框架,一个很简单很简单很实用的框架,让SQL回归数据库

Java Web Without SSM(前言)的更多相关文章

  1. Java WEB框架——SSM之Hello world

    一.建立项目 先搭建一个webapp项目(要选creat from arctype) 起名 选择maven路径,settings.xml那里要选择override才可以在资源管理器中浏览.接下来直接N ...

  2. Java Web 之 SSM笔记

    好久没有写博文了呀呀呀........博客园的MarkDown还是...算了吧 自定义 Restful 风格结果集 参考资料 [SpringBoot专题]统一异常处理和统一数据返回前言实践运行结果 如 ...

  3. Java WEB框架——SSM迈向M之登录

    1.pom.xml 关于pom.xml,<version>等标签先暂时不谈,<dependency> 的作用主要是添加相应的支持包,比如spring,servlet,jdbc等 ...

  4. java web后台开发SSM框架(Spring+SpringMVC+MyBaitis)搭建与优化

    一.ssm框架搭建 1.1创建项目 新建项目后规划好各层的包. 1.2导入包 搭建SSM框架所需包百度云链接:http://pan.baidu.com/s/1cvKjL0 1.3整合spring与my ...

  5. 基于SSM的Java Web应用开发原理初探

    SSM开发Web的框架已经很成熟了,成熟得以至于有点落后了.虽然如今是SOA架构大行其道,微服务铺天盖地的时代,不过因为仍有大量的企业开发依赖于SSM,本文简单对基于SSM的Java开发做一快速入门, ...

  6. 一款基于SSM框架技术的全栈Java web项目(已部署可直接体验)

    概述 此项目基于SSM框架技术的Java Web项目,是全栈项目,涉及前端.后端.插件.上线部署等各个板块,项目所有的代码都是自己编码所得,每一步.部分都有清晰的注释,完全不用担心代码混乱,可以轻松. ...

  7. idea 创建 SSM + maven Java Web 项目流程

    idea 创建 SSM + maven Java Web 项目流程 一.idea 中选择File,New Project 新建项目 二.选择Maven,勾选上面的Create from archety ...

  8. 关于Java Web结构和SSM框架的理解

    Java Web常见的三层结构 表现层:也就是Web层,常见的框架有Spring MVC.Struts2 ,并包括用于展示的界面,如JSP界面:业务层:Service层,专注于业务逻辑的实现:持久层: ...

  9. Java web轻量级开发面试教程的前言

    本文来是从 java web轻量级开发面试教程从摘录的. 为什么要从诸多的Java书籍里选择这本?为什么在当前网络信息量如此大的情况下还要买这本书,而不是自己通过查阅网络资料学习?我已经会开发Java ...

随机推荐

  1. C++实现最小堆及插入,调整顺序,删除堆顶元素的操作

    上次用Java实现了最大堆的封装,这次就来写一下最小堆的实现吧 插入函数的思路: 向堆中插入元素有两种情况,一种是堆为空,那么就让插入值作为根节点即可:另一种是堆不为空,那么此时就要进行判断当前节点与 ...

  2. Redis简介 Linux安装Redis Redis使用

    其他一些操作(包括 APPEND.GETRANGE.MSET 和 STRLENGTH 也可用于字符串.请参见http://doc.redisfans.com/string/index.html ) 使 ...

  3. python的sorted

    读入后,要进行组内排序,按groupseq字段排序后,然后统计前后两个项的个数,累加到全局. sorted函数使用如下: def sortlist(alllist):     sorted_key1_ ...

  4. javascript语法之函数案例练习

    需求:文本框内输入月份,弹窗提示本月天数. 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&qu ...

  5. 高性能C++网络库libtnet实现:http

    HTTP libtnet提供了简单的http支持,使用也很简单. 一个简单的http server: void onHandler(const HttpConnectionPtr_t& con ...

  6. 《高效能程序员的修炼》读后感 By Yong Zhang

    想不到我工作中经常GOOGLE搜寻技术问题的stack overflow网站的创办人竟然是<高效能程序员的修炼>一书的作者!看了一遍全书,果然名不虚传. 本书更多的从人文角度而非技术角度去 ...

  7. 怎样使用projectproperty sheet(.vsprops)来管理工程

    怎样使用projectproperty sheet(.vsprops)来管理工程 IDE:VS2005 前言 Project Property Sheet的意思是项目属性表,在大型项目中基本上都会使用 ...

  8. kettle简介(整体架构,运行方式,使用方法)

    项目负责人Matt的说法:把各种数据放到一个壶里,然后呢,以一种你希望的格式流出.呵呵,外国人都很有联想力.看了提供的文档,然后对发布程序的简单试用后,可以很清楚得看到Kettle的四大块: Chef ...

  9. SpriteBuilder中音频波长超过Timeline结尾的情况

    见如下图: 注意最后一个音频波长延续到Timeline结尾之后.表明这个音频文件播放长度超过Timeline(动画)播放的长度.这是否成为一个问题要视情况而定.而在这里无所谓. 如果节点所拥有的Tim ...

  10. 高斯混合模型和EM算法

    使用期望最大化算法(Expectation-Maximization)来进行密度估计(density estimation). 与k-means一样,给定的训练样本是,我们将隐含类别标签用表示.与k- ...