多数人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. 爬虫:Scrapy10 - Link Extractors

    Link Extractors 适用于从网页(scrapy.http.Response)中抽取会被 follow 的链接的对象. Scrapy 默认提供 2 种可用的 Link Extractor,但 ...

  2. Dev express 笔记

    1.设置treelist不同行的颜色 void treeList1_CustomDrawNodeCell(object sender, DevExpress.XtraTreeList.CustomDr ...

  3. [洛谷P4630][APIO2018] Duathlon 铁人两项

    题目大意:给一张无向图,求三元组$(u,v,w)$满足$u->v->w$为简单路径,求个数 题解:圆方树,缩点后$DP$,因为同一个点双中的点一定地位相同 卡点:1.$father$数组开 ...

  4. BZOJ3631 [JLOI2014]松鼠的新家 【树上差分】

    题目 松鼠的新家是一棵树,前几天刚刚装修了新家,新家有n个房间,并且有n-1根树枝连接,每个房间都可以相互到达,且俩个房间之间的路线都是唯一的.天哪,他居然真的住在"树"上.松鼠想 ...

  5. mdadm使用详解

    ★mdadm是multiple devices admin的简称,它是Linux下的一款标准的软件 RAID 管理工具,作者是Neil Brown 我们知道raidtools是Linux下一款经典的用 ...

  6. "todoList妙味"学习总结

    1.v-bind  主要用于属性绑定 :class="{completed: item.isChecked}",它会将{}里面的内容解析为js表达式   2.vue提供了一组方法, ...

  7. 【Android开发日记】之入门篇(十)——Android应用配置文件解析

    在Android基于组件的应用设计架构中,配置文件是一个很重要的元素.它将应用所包含的组件.各组件的能力和配置以及应用环境介绍给Android框架层的各个服务,让Android知道如何去调度应用中的各 ...

  8. artTemplate 动态加载模版

    问题 之前项目中一直有用到artDialog对话框组件,作者后期又发布了js模版引擎,使用过几次,效果感觉还挺好.当自己想把模版放在html之外时,遇到了一点问题. 作者介绍的方式,是在js文件中,通 ...

  9. Access数据库 INSERT INTO 失败

    一次操作Access数据库,插入一条数据,总是失败,如下: 通过赋值,一个字段一个字段的排查,最终确定是UserAge字段处有问题. 最初,UserAge字段是 %d 类型的,赋值20,可成功插入数据 ...

  10. (转)python 模块安装包 制作

    转自: http://testerhome.com/topics/539 用过python的同学对于python setup.py install肯定不会陌生.那么我们自己如果封装了很多的方法怎么很好 ...