JAVAEE学习路线分享
【SSM 1】SpringMVC、Spring和Struts的区别
Java Web J2EE下的两大框架SSH和SSM对比
初学JavaWeb需要知道的目录结构与配置
j2ee项目就是web项目。Web服务是总体概念,J2EE是一种实现方式,还有.NET版、PHP版等不同的实现方式,Web服务器是指能处理Http协议请求开放了某些服务端口的机器.比如OS+IIS,OS+Apach.
作为JavaWeb开发,Servlet才是核心,Tomcat便是servlet容器。
前端web:HTML、CSS、Javascript、javascript框架Jquery。
数据库:Oracle、Mysql和PostgreSQL之类的关系型数据库、Hadoop
框架:SSH、SSM
服务器:tomcat、jboss、weblogic及websphere、Nginx
核心语言:java;
核心框架:spring;
持久层框架:mybatis;
数据库连接池:Alibaba Drui;
日志管理:Log4j;
jar包管理:maven;
测试工具:Junit;
版本管理工具:SVN
SSH:spring+Struts2+hibernate
SSM:Spring+SpringMVC+MyBaitis
两个框架都是IoC容器+MVC框架+ORM框架。
IoC的意思是控制反转,意思是把创建和查找依赖对象的控制权交给容器而不是自己实例化对象;
MVC框架采用MVC分层,模型层处理数据逻辑,通常是模型对象在数据库存取数据,视图层处理数据显示,控制器层处理用户交互,通常从视图读取数据,控制用户输入,并向模型发送数据;
ORM框架即对象-关系映射模型,在数据库表和持久化对象间进行映射,这样在操作数据库时只需要对对象操作。
在IoC容器方面,SSH和SSM都是使用Spring。
Spring是轻量级的IoC和AOP容器。IoC容器是Spring的核心,负责创建对象,管理对象,装配对象,配置对象,并且管理这些对象的整个生命周期。管理对象动态向某个对象提供其他对象,通过依赖注入来实现,Spring有三种注入方式:接口注入、Set注入和构造注入。Spring AOP即面向切面编程,可以用在日志和事务管理等方面。
MVC整合框架两者分别使用的是Struts2和SpringMVC。
两者的区别:
1.Struts2是类级别的拦截,一个类对应一个request上下文,SpringMVC是方法级别的拦截,一个方法对应一个request上下文,因此容易实现restful API;
2.Struts2是多例的,每次请求都创建一个Action,类属性被方法共享,而SpringMVC是单例的,只有一个实例,方法之间变量不共享;
3.Struts2的核心控制器是Filter,SpringMVC的核心控制器是Servlet;
4.拦截器方面,Struts2有自己的interceptor机制,SpringMVC用的是独立的AOP方式;
5.SpringMVC是Spring的一个模块,项目管理和安全性比Struts2好,配置文件少,并且集成了Ajax,处理ajax请求,直接通过返回数据,方法中使用注解@ResponseBody,能自动将对象转换为JSON数据。
ORM框架分别用的是Hibernate和MyBaitis。
MyBatis的sql语句是手动编写的,可以进行更为细致的SQL优化,可以减少查询字段,具有高度灵活,可优化,易维护的特点。但需要维护SQL和结果映射,工作量大。
Hibernate面向对象查询,以对象化的思维操作数据库,hql与具体的数据库无关,移植性更好。Hibernate无需编写SQL,映射的规则也可以由IDE生成,提高了开发效率,还提供了缓存、日志、级联等强大功能。但是对于多表关联复杂SQL、数据系统权限限制、根据条件编写SQL、存储过程等十分不便,性能难以通过SQL优化。
Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。
SpringMVC是Spring实现的一个Web层,相当于Struts的框架,但是比Struts更加灵活和强大!
spring mvc需要有spring的架包作为支撑才能跑起来
可以把spring看成是一个工具箱,里面有各种工具,springmvc只是其中的一把扳手。
spring和SpringMVC是一种父子关系。SpringMVC是spring扩展出的一个应用于web端的框架。
spring主要的作用是黏合其他模块组件,进行统一管理,springmvc则主要是负责web端。
首先,如果说项目中使用了spring,那么还是使用SpringMVC吧,因为相对于融合Struts来说,spring和SpringMVC是非常完美的无缝链接。
其次,SpringMVC的拦截粒度是方法,而Struts的粒度是类
然后,入口不同,SpringMVC的入口是servlet,而Struts是filter
最后,如果使用注解的话,SpringMVC基本上是零配置,而Struts需要配置很多。
备注:想说一点的是:在Struts中可以配置开发者模式,就是说当修改了一个URL访问,可以不用重启工程。但是SpringMVC需要重启。
abatis英 [‘æbətɪs] 铁丝网
Mybatis是 一个持久层的框架,在使用上相比Hibernate更加灵活,可以控制sql的编写,使用 XML或注解进行相关的配置
MyBatis 本是apache的一个开源项目iBatis,
2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。
2013年11月迁移到Github。
iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。
iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAOs)
英 [ˈhaɪbəneɪt] (某些动物)冬眠,蛰伏,休眠模式; 休眠状态; 持久层框架
Hibernate是一个开放源代码的对象关系映射框架,
它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,
hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,
最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。
Mybatis优势
MyBatis可以进行更为细致的SQL优化,可以减少查询字段。
MyBatis容易掌握,而Hibernate门槛较高。
Hibernate优势
Hibernate的DAO层开发比MyBatis简单,Mybatis需要维护SQL和结果映射。
Hibernate对对象的维护和缓存要比MyBatis好,对增删改查的对象的维护要方便。
Hibernate数据库移植性很好,MyBatis的数据库移植性不好,不同的数据库需要写不同SQL。
Hibernate有更好的二级缓存机制,可以使用第三方缓存。MyBatis本身提供的缓存机制不佳。