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语句