多数人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. django之HTTPResponse和JsonResponse详解

    HttpResponse对象 Django服务器接收到客户端发送过来的请求后,会将提交上来的这些数据封装成一个HttpRequest对象传给视图函数.那么视图函数在处理完相关的逻辑后,也需要返回一个响 ...

  2. linux configuration

    sudo vi /etc/profile export JAVA_HOME=/usr/bin/jdk1.8.0_40export JRE_HOME=${JAVA_HOME}/jre  export C ...

  3. maven中mapper.xml不发布的问题

    在自定义的包中定义了mapper.xml然后利用mybatis的扫描包形式来动态创建mapper 开启工程报错: 说无效的绑定 原因: 发布的war中,工程包中的mapper根本就没有出现在class ...

  4. 使用Bootstrap框架的HTML5页面模板

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. vue.$refs 的用法

    官网给出的解释是: 被用来给元素或子组件注册引用信息.引用信息将会注册在父组件的 $refs 对象上. 1.如果在普通的 DOM 元素上使用,引用指向的就是 DOM 元素; 2.如果用在子组件上,引用 ...

  6. BZOJ 1912:[Apio2010]patrol 巡逻(树直径)

    1912: [Apio2010]patrol 巡逻 Input 第一行包含两个整数 n, K(1 ≤ K ≤ 2).接下来 n – 1行,每行两个整数 a, b, 表示村庄a与b之间有一条道路(1 ≤ ...

  7. Android初学者必知会的编程规范

    在安卓学习中,我们首先需要掌握的就是Android编程的一些规范,只有掌握了这些规范,后面的深入学习才能开展.今天小编在一个Android培训网站上搜罗了一些,Android初学者不得不知的开发规范, ...

  8. 关系、关系模式、关系模型blablabla...

    好久没碰<数据库系统概论>了,最近翻了翻发现好多专业名词都忘记了, 现在有空特地记录下. 名词解释 数据:数据就是数据库中存储的基本数据,比如学生的学号.学生的班级数据库:存放数据的仓库数 ...

  9. A公司 推荐算法大赛 总结

    一.介绍 ♦通过用户前四个月(04.15~08.15)的用户行为预测用户第五个月(08.15~09.15)将会购买的品牌.用户共有四种行为(type)分别是:点击(0).购买(1).购物车(2).收藏 ...

  10. [LOJ#6259]「CodePlus 2017 12 月赛」白金元首与独舞

    [LOJ#6259]「CodePlus 2017 12 月赛」白金元首与独舞 试题描述 到河北省 见斯大林 / 在月光下 你的背影 / 让我们一起跳舞吧 うそだよ~ 河北省怎么可能有 Stalin. ...