多数人JavaWeb的入门是学习SSH:struts+spring+hibernate;我在十年前(2006年)学习的,那时火的是struts1.x ,struts2还没诞生。
 
这三个框架组合,我用了大概有5年时间。现在回想起来,用这三大框架做项目真是痛苦不堪;但那时也没别的选择,一律的MVC框架;相比纯Servlet与JSP已经是有很大的进步
 
所谓的痛苦主要来源于控制层,视图,及数据查询。在3年前我就不再采用struts与hibernate框架,有很多功能用不上,因为都只是做小项目,数据表基本不超200张。
 
struts的JSP标签真是不好用,包括其他的JSP标签;
MVC框架对request,session,response 验证器,拦截器的封装与抽象会让初级开发者在里面绕不出来,建议初学者先把servlet学透了再学SSH,不然你会看不到技术的本质。struts只是servlet的一个外壳、一件衣服;你谈个对象,不会是想研究她的衣服是怎么做的吧?
 
hibernate的自动生成Bean,让初学者眼前一亮,原来数据库操作就这么简单、这么方便。看似方便实是画地为牢,get一条记录真需要把所有字段都提出来吗?如果多查其他表的一个字段呢?HQL的兼容多数据库有用过吗?强行OO等于困在hql中,把简单的问题复杂化了;犹如种田带手拷,各种不自由。
 
spring是我一直推崇的。它的对象管理、ioc、配置管理、事务、调度真在是太实用了;至今我的任何项目都有spring身影。
 
其实我想说的是,芝麻大的小项目你分那么多层有鸟用?实现一个功能得建个view、action、service、dao,真有按严格意义上的分层吗?我曾经看到一个电信外包项目在增加一个简单的查询,需要创建9个类或配置文件,那个项目只能用一个乱字来形容,一群人围着这项目瞎扯腾,实际上已经没有一个人掌握,举步维艰。
 
到了现在我变成了只写JSP,我是分为view与handler。数据交互多用ajax,数据格式是JSON
 
handler.jsp
String cmd=request.getParameter("c");
ApplicationContext spring = WebApplicationContextUtils.getRequiredWebApplicationContext(request.getSession().getServletContext());
JdbcTemplate jdbc=spring.getBean("jdbcTemplate",JdbcTemplate.class);
UserBean userBean=(UserBean)session.getAttribute(Constants.SESSION_USER);
Map<String,Object> ret=new HashMap<String,Object>();
ret.put("success", true);
ret.put("code", 1);
ret.put("message", "操作成功");
java.text.SimpleDateFormat sdf=new java.text.SimpleDateFormat("yyyyMM");

if("getJobList".equals(cmd)){
	List<Map<String,Object>> list=jdbc.queryForList(sql);
	for(Map<String,Object> map:list){
		String c=colors[random.nextInt(colors.length)];
		map.put("bordercolor", c);
		map.put("bgcolor", c);
	}
	out.println(JSON.toJSONString(list));
}else if("drop".equals(cmd)){
	String id=request.getParameter("id");
	String stime=request.getParameter("stime");
	String etime=request.getParameter("etime");
	jdbc.update("update toa_onduty set stime=?,etime=? where id=?",stime,etime,id);
	out.println(JSON.toJSONString(ret));
}else if("editable".equals(cmd)){

	String stime=request.getParameter("stime");
	String etime=request.getParameter("etime");
	//ret.put("editable",gridService.isEditAble(userBean.getId(), stime, etime));
	out.println(JSON.toJSONString(ret));
}else{
	System.out.println("参数c的值["+cmd+"]有误,system/workflow/manager/handler.jsp");
	out.println(JSON.toJSONString(ret));
}

view.jsp

function reload(id,type){
    cache={id:id,type:type};
      $("#calendar").fullCalendar('removeEvents');
      $.post(handlerJsp,{c:"getJobList",id:id,type:type},function(data){
          if(data.length==0){lgxInfo("没有排班数据");}else{
              alert("有"+data.length+"条排班记录");
          }
          for(var i=0;i<data.length;i++) {
              var obj = new Object();
              obj.id = data[i].id;
              obj.title = data[i].title;
              obj.start = parseDate( data[i].stime );
              obj.end = parseDate( data[i].etime );
             // obj.description = data[i].description;
              obj.backgroundColor=data[i].bgcolor;
              obj.borderColor=data[i].bordercolor;
              obj.allDay =false;
//               if(data[i].allday==1){
//                   obj.allDay =true;
//               }else{
//                   obj.allDay =false;
//               }
              $("#calendar").fullCalendar('renderEvent',obj,true);
          }
      },"JSON");
}

总体上我还是使用平台来开发;用平台来把控全局,只是在局部功能采用这样的写法。复杂的业务逻辑我也会面向接口编程写个Service,让Spring统一管理;

以这样的写法来方现一般的小操作,如行云流水、简单快捷。

个人对JAVA的SSH三大框架组合的偏见的更多相关文章

  1. ssh三大框架的认识

    一.SSH三大框架的概述 ssh为 struts+spring+hibernate的一个集成框架,是目前较流行的一种Web应用程序开源框架.  集成SSH框架的系统从职责上分为四层:表示层.业务逻辑层 ...

  2. eclipse中SSH三大框架环境搭建<三>

    相关链接: eclipse中SSH三大框架环境搭建<一> eclipse中SSH三大框架环境搭建<二> 引言:通过上两篇文章我们已经可以掌握struts2和spring的环境的 ...

  3. eclipse中SSH三大框架环境搭建<二>

    通过上一篇博客我们可以轻松搭建strtus2的环境,接下来由我来继续介绍spring的环境搭建以及spring注入的简单使用 相关链接:eclipse中SSH三大k框架环境搭建<一> ec ...

  4. eclipse中SSH三大框架环境搭建<一>

    这里先简单介绍一下我用的三大框架版本以及下载地址 相关链接:eclipse中SSH三大框架环境搭建<二> eclipse中SSH三大框架环境搭建<三> struts-2.3.3 ...

  5. SSH三大框架合辑的搭建步骤

    v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VM ...

  6. SSH三大框架整合案例

    SSH三大框架的整合   SSH三个框架的知识点 一.Hibernate框架 1. Hibernate的核心配置文件 1.1 数据库信息.连接池配置 1.2 Hibernate信息 1.3 映射配置 ...

  7. SSH三大框架的整合

    SSH三个框架的知识点 一.Hibernate框架 1. Hibernate的核心配置文件 1.1 数据库信息.连接池配置 1.2 Hibernate信息 1.3 映射配置 1.4 Hibernate ...

  8. java的老说三大框架

    一直不明白java的老说三大框架,怎么就一个SSH,今天终于有了一点点的了解. 三大框架就是Spring框架,Struts框架,Hibernate框架. Spring提供了管理业务对象的一致方法并且鼓 ...

  9. Maven SSH三大框架整合的加载流程

    <Maven精品教程视频\day02视频\03ssh配置文件加载过程.avi;> 此课程中讲 SSH三大框架整合的加载流程,还可以,初步接触的朋友可以听一听. < \day02视频\ ...

随机推荐

  1. poj 1035 纯正的字符串水

    Spell checker Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 22673   Accepted: 8258 De ...

  2. ES6 Destructuring Assignment All In One

    ES6 Destructuring Assignment All In One ES6 & Destructuring Assignment Axios, vue https://develo ...

  3. Struts1 生成Action请求的几种方式分析

    1 直接硬编码 <a href="/Lesson14_Struts1_Demo1//user/regUserDo.do">注册</a><br/> ...

  4. P4342 [IOI1998]Polygon

    题意翻译 题目可能有些许修改,但大意一致 多边形是一个玩家在一个有n个顶点的多边形上的游戏,如图所示,其中n=4.每个顶点用整数标记,每个边用符号+(加)或符号*(乘积)标记. 第一步,删除其中一条边 ...

  5. 2151: 种树 - BZOJ

    Description A城市有一个巨大的圆形广场,为了绿化环境和净化空气,市政府决定沿圆形广场外圈种一圈树.园林部门得到指令后,初步规划出n个种树的位置,顺时针编号1到n.并且每个位置都有一个美观度 ...

  6. [洛谷P3509][POI2010]ZAB-Frog

    题目大意:有$n$个点,每个点有一个距离(从小到大给出),从第$i$个点跳一次,会跳到距离第$i$个点第$k$远的点上(若有两个点都是第$k$远,就跳到编号小的上).问对于从每个点开始跳,跳$m$次, ...

  7. [luogu3676] 小清新数据结构题 [树链剖分+线段树]

    题面 传送门 思路 本来以为这道题可以LCT维护子树信息直接做的,后来发现这样会因为splay形态改变影响子树权值平方和,是splay本身的局限性导致的 所以只能另辟蹊径 首先,我们考虑询问点都在1的 ...

  8. 以太坊源码分析(52)以太坊fast sync算法

    this PR aggregates a lot of small modifications to core, trie, eth and other packages to collectivel ...

  9. java算法(一) 直接选择排序

    一.基本概念 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置(注:要把最大最小的元素和起始的元素交换), 然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾.以 ...

  10. 结构型设计模式之桥接模式(Bridge)

    结构 意图 将抽象部分与它的实现部分分离,使它们都可以独立地变化. 适用性 你不希望在抽象和它的实现部分之间有一个固定的绑定关系.例如这种情况可能是因为,在程序运行时刻实现部分应可以被选择或者切换. ...