A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

水晶小橘

初级黑马

  • 黑马币:22

  • 帖子:7

  • 精华:0

© 水晶小橘 初级黑马   /  2018-8-14 22:40  /  770 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

javaEE开发框架其实也是jar类库,大部分是对原生方法得封装。目的很简单,就是为了简化咱们开发人员的工作
规范开发过程,我认为这极大得方便了不同开发人员对项目得维护。那么学习框架到底是为了学习什么呢?
我觉得是学习他的核心原理和配置。虽然Java得框架五花八门,但是万变不离其宗,只有真正掌握了SSH框架
得核心机制和设计理念才能轻松的学好其他得框架。
先说说hibernate,
hibernate是一个ORM框架,是对JDBC的一个封装。目的也是很明显,就是为了简化对数据表访问得一个操作。
ORM得意思是对象关系映射,通过实体类与数据表建立映射,就可以通过持久层操作来代替SQL语句访问数据库。
hibernate得核心原理是就是ORM,通过JAVA反射机制来实现。
java反射机制是在运行状态中,对于任意一个类,都能够知道这个类得所有属性和方法;对于任意一个对象,
都能够调用它的任意一个方法和属性;这种动态得获取信息以及动态调用对象的方法得功能就是java得反射机制.
说了核心原理 接下来说配置文件.
配置文件包括:
hibernate.cfg.xml 用来存储连接数据库得信息(包括要指定连接数据库用的驱动,常用的Oracle,MySQL,sqlserver;分别对应得
是oracle.jdbc.driver,com.mysql.jdbc.Driver,com.microsoft.sqlserver.jdbc.SQLServerDriver.加载好驱动后设置路径,端口号分别是1521,3306,1433,接下里就是数据库得用户名和密码)
如果用注解得话就可以直接在实体类中@Entity @Table @Id等直接映射数据库表
否则得话就得用一个XML来配置一下,tablename.hbm.xml配置实体类和数据表得关联关系.
hibernate得核心类
Session接口:负责持久化对象得CRUD操作(也就是增删改查)
SessionFactory接口:负责初始化Hibernate
configuration接口:负责配置并启动Hibernate
Transcation接口: 负责事务
query接口和criteria接口:负责执行各种查询
接下来说一下对象得几个状态:
第一种 和数据库表建立好关系得 也就是持久化状态
第二章 没有建立好关系得,瞬时状态。
第三章 因为某种操作 数据库没有了想对象得表,但是已经进行过持久化,那么这个时候就是游离状态
说完了hibernate 谈一谈STRUTS2
它是一个MVC框架,它得核心控制器filterDispatch充当了一个控制器的角色
相对于struts1来说,2得框架结构变化非常大。1是对原生servlet得封装,而2是对webwork得改进和封装.webwork得实质就是一个拦截器.所以2得核心机制就是拦截器原理,也是基于反射机制的实现
通过url解析出action名和方法名,检索并执行处相应得action类以及拦截器.
它得配置文件为stauts.xml名字必须这么叫,不能更改.
创建好它之后一定要去配置web.xml 把下面这段话粘贴进去

struts2
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
<filter-mapping>    <filter-name>struts2</filter-name>    <url-pattern>/*</url-pattern>  

核心类
一个请求在struts2框架中得处理是到底是什么样子呢?
1.客户端初始化一个指向servlet容器(我到现在为止就用过tomcat)得请求;
2.这个请求先经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp得可选过滤器,这个过滤器对于STRUS2和其他框架得集中很有帮助)
3.接着FilterDispatchar被调用,它会询问ActionMapper来决定这个请求是否需要调用某个Action;
4.如果ActionMaper决定需要调用某个Action,它会吧请求得处理交给ActionProxy代理类,然后这个类通过询问配置文件找到需要调用的Action类;
5.ActionProxy会创建一个ActionInvocation得实例。这个实例是用命名模式来调用,在条用Action得过程前后会涉及到相关的Intercepter得调用.
6.一点Action执行完毕,ActionInvocation负责跟进配置文件找到相应得返回结果。通常都是JSP,当然也可以是另外一个Action。
对于Struts2得了解我就知道这么多了。
该spring了。
Spring是一个免费开源得容器框架,它得两大核心思想;IOC 和AOP
IOC称为控制反转,也叫依赖注入.其实不管什么叫什么,他们都可以这样理解:当某个Java实例需要另一个Java实例时,在传统的程序设计过程中,通常有调用者来创建被调用者得实例。但是在IOC模式下,创建被调用者得工作不再是调用者来完成,而是由Spring容器来完成,然后注入调用者。
注入方式有三种:使用属性的setter方法来注入被依赖的实例和使用构造器来注入被依赖的实例.以及我现在常用得注解进行注入。
IOC容器有3个基本要点:第一个就是程序得各个组件面向接口编程。这样可以将各个组件的耦合提升到接口层次,从而有利于项目后期得扩展。
第二个就是程序得各组件不再有程序主动产生,而是由Spring容器来负责产生,并初始化。
第三个Spring采用配置文件,或者注解来关联Bean得实现类和依赖关系
AOP 面向切面编程。
我的理解是这样得,比如说你每做一次对数据库操作,都要生成一句日志。如果你对数据库得操作有很多,那你每一类中都要写关于日志的方法。但是如果你用AOP,那么你就可以写一个方法,在这个方法用写有关于数据库操作得方法,每一次调用这个方法得时候,就加上生成日志的操作。
直白点说就是实现调用某个方法之前或/和之后,自动执行一系列自定义的语句
那么 SSH得设计理念到底是什么呢?我认为他就是帮助开发人员在短期内搭建结构清晰、可复用性好、维护方便的Web应用程序。那么 SSH得业务到底是个什么样子的?使用Struts2作为系统的整体基础架构,负责MVC的分离,在Struts框架的模型部分,控制业务跳转,利用Hibernate框架对持久层提供支持,Spring做管理,管理struts2和hibernate。具体做法是:用面向对象的分析方法根据需求提出一些模型,将这些模型实现为基本的Java对象,然后编写基本的DAO接口,并给出Hibernate的DAO实现,采用Hibernate架构实现的DAO类来实现Java类与数据库之间的转换和访问,最后由Spring做管理,管理struts和hibernate。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马