SSH分别是指:Struts,Spring,Hibernate
下面是SSH三部分简单主要的知识点:
Sturts:
execute :
execute()方法相当于main()方法,有三种创建模式 :
1 自定义类,类里面不能写main()方法,写个execute方法,返回值为一个字符串,和struts.xml里面的<result name="字符串">对应就行
public String execute() {
return "success";
}
2 实现Action这个接口,并实现execute方法,这里的返回值可以是action接口里面的预定义的常量,当然,如果struts.xml里面的<result name="字符串">这里设置不是预定义里面的,这里就不能写常量,因为这几个常量是底层实现了的,别的还是要自己写字符串,和xml对应上
public String execute() throws Exception {
return SUCCESS;//写成 SUCCESS常量也可以
}
3 推荐 : 继承ActionSupport这个类,并覆写execute方法,和第一种的写法一样,但是推荐使用这个,因为这个类写了很多方法,方便我们使用
public String execute() throws Exception {
return "success";
}
//充血 贫血 模型 :
把增删改查的方法写在实体类里面,就是充血模型
不写在这里面,就是贫血模型
pojo:就是一个实体类
//拦截器调用 : 调用拦截器
先从最近的模块找 模块(包:com.jaovo...xx).xml ---> struts.xml ---> default.xml ---> web.xml;
一直到找到,都找不到就报错
//后台设置的东西,在Action中设置request和httprequest的区别
<!--
后台设置的东西,在Action中设置request和httprequest的区别
在前台通过request,session,aplication可以去得到
在后台设置的request全部复制到了HttpRequest中去
jsp页面中的是HttpRequest(request)
-->
<s:property value="#request.request_"/> | <%=request.getAttribute("request_") %>//前者是获得Action里面的 后者是获得request里面的(原生)
request : //每次请求,都会创建一个新的request对象
session : //只要在同一个浏览器,就只创建一次,作用域是整个浏览器,关闭浏览器,session也随之消失,如果没有,就会创建,如果有,就不会创建
application : //只创建一次,可以跨浏览器使用,如果没有就会创建,如果有就不会创建
Spring:
1 控制反转 IOC : 控制类的实例化,以及他们的调用关系
2 动态代理 AOP : 主要是事务机制的控制
四种方式读取属性 四种读取属性的方式:
1 DOM : //把所有属性都弄到文档对象中,全部读取 一个报错,全部不读取
2 JDOM : //把所有属性都弄到文档对象中,全部读取 一个报错,全部不读取
3 DOM4J : //把所有属性都弄到文档对象中,全部读取 一个报错,全部不读取
4 SAX : //用IO流,一个一个读取,读取一个,放进去一个 哪里报错,报错处往后就不读取,前面读取
DOM : == Document Object Model : 文档对象模型
SAX : 基于事件和流的方式解析xml
sax,DOM : 这两种已经加入java的核心包,不再需要第三方宝
JDOM : 是DOM的一种增强版本
DOM4J : JDOM的一个子项目
//解析XML文件,解析XML文件的方式都大同小异 :
1 获得根节点
2 遍历根节点里面的子节点
3 获取子节点里面的属性
4 遍历节点里面的内部(子节点)节点
Hibernate:
操作数据库7步骤 :
1 创建一个SessionFactory对象
2 创建Session对象
3 开启事务Transaction : hibernate中,然后数据库操作,都必须是事务的,哪怕是查询
4 执行数据保存操作(必须提交,才会执行对应的操作方法)
5 提交事务
6 关闭Session
session.close();
getCurrentSession();不需要手动关闭,opensession需要手动关闭
7 关闭SessionFactory对象
//三种状态 :
瞬时状态(临时状态)--->持久状态(保存到数据库)--->游离状态(保存完成后关闭session对象 (session.close()))
//三种状态的区分关键在于
1 有没有ID
2 ID在数据库中有没有
3 内存中有没有(session缓存)
Transient :
Transient(瞬时状态) : 内存中一个实体类对象,没有ID,缓存中也没有
//实例化实体类的时候,就是瞬时状态
Persistent :
Persistent(持久状态) : 内存中有,缓存中有,数据库中有(ID)
//保存到数据库中,就是持久状态
Detached :
Detached(游离状态) : 内存有,缓存没有,数据库有,ID
//关闭session对象之后(session.close()),就是游离状态
//这三种状态需要关注的问题是在该状态下,如果进行数据库操作会发生什么结果,比如改变属性的值会不会发出update语句
瞬时状态 : 不会发出update语句
持久状态 和 游离状态 都会发出update语句