多数人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. kafak基本操作

    创建topic bin/kafka-topics.sh --create --zookeeper 192.168.1.81:2181 --replication-factor 3 -partition ...

  2. SQLSTATE[HY000] [2003] Can't connect to MySQL server on 'XXX' (13)

    SQLSTATE[HY000] [2003] Can't connect to MySQL server on 'XXX' (13) 我可以真见识了 SELinux 的利害了, 这个问题让我找了好长时 ...

  3. gulp技巧总结

    1. gulp.dest 会自动创建目录 gulp.dest(dir),若dir不存在,gulp会自动创建它 2. gulp.src copy具名路径(即不子目录**的路径)的文件,不会保留文件夹路径 ...

  4. jenkins 自定义主题

    一.概述 jenkins更新后,页面css布局都已改变,我现在用的jenkins.css, ( png图片需自定义) #page-body { background-image:url(http:// ...

  5. ztree 2.0 节点搜索

    最近做了一个简单的功能,树节点的搜索.ztree的版本的2.0,3.X以上的版本请百度解决办法. 1.在setting中增加 function getFontCss(treeId, treeNode) ...

  6. foj Problem 2107 Hua Rong Dao

    Problem 2107 Hua Rong Dao Accept: 503    Submit: 1054Time Limit: 1000 mSec    Memory Limit : 32768 K ...

  7. linux下scp

    scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的.可能会稍微影响一下速度.当你服务器 ...

  8. [ CodeVS冲杯之路 ] P3027

    不充钱,你怎么AC? 题目:http://codevs.cn/problem/3027/ 显然是DP题,先按线段的右端点升序排序 设 f[i] 为dp到第 i 个线段时最大的价值 目标状态为 max( ...

  9. greasemonkey

    Greasemonkey Hacks/Getting Started < Greasemonkey Hacks Greasemonkey Hacks Foreword Credits Prefa ...

  10. Git 的使用教程

    Git是一个开源的分布式版本控制系统,用以有效.高速的处理从很小到非常大的项目版本管理. 安装Git 1.方法一:安装homebrew,然后通过homebrew安装Git. 第一步:在终端输入如下命令 ...