黑马程序员技术交流社区

标题: 【南京校区】SSH阶段复习总结 [打印本页]

作者: 大蓝鲸小蟀锅    时间: 2018-8-12 13:50
标题: 【南京校区】SSH阶段复习总结
结束了紧张的框架学习  
在复习的同时把复习笔记整理一波
贴给大家 温故而知新 共同学习 共同进步
Hibernate POJO类规范?
        1.声明无参公共的构造方法         
        2.提供用于作为OID的标识属性                  
        3.为所有属性提供getter与setter方法         
        注意 该类不能用final修饰 因为hibernate懒加载生成代理对象的时候用的是cglib代理
Hibernate查询的三种方法
        1.session.createQuery("hql");  hql查询  hibernate特有 hql语句不能有任何表中的字段
        2.session.createCriteria(clazz);hibernate特有的无语句查询 传一个calss对象调用方法完成查询
        3.session.createSQLQuery("sql');原生sql查询
        总结:一般的话复杂查询还是用原生sql简单查询用HQL或者是Criteria
Struts2常量配置生效顺序
        (与我们无关)struts-default.xml:该文件保存在struts2-core-2.1.2.jar文件中
        (与我们无关)struts-plugin.xml:该文件保存在struts2-Xxx-2.1.2.jar灯Struts2插件jar文件中
        struts.xml:该文件是web应用默认的Struts2的配置文件
        struts.properties:该文件是struts2的默认配置文件
        web.xml:该文件是web的配置文件
hibernate.cfg.xml中的配置(所有配置都是在hibernate核心<session-factory>标签内)
     必选配置 4+1
        方言配置                hibernate.dialect
        数据库驱动配置        hibernate.connection.driver_class
                        hibernate.connection.url
                        hibernate.connection.username
                        hibernate.connection.password
     可选配置 4
        打印sql                hibernate.show_sql       
        控制台格式化sql        hibernate.format_sql
        自动创建表        hibernate.hbm2ddl.auto
        引入ORM元数据         <mapping resource="com/itheima/domain/User.hbm.xml" />
Struts2框架名称空间是哪个属性? namespace属性
Struts2框架的访问路径?<package namespace=""/>的值+<action name=""/>的值
        <package name="" extends="" namespace="">
                <action name="" class="">
                </action>
        </package>
hibernate    cascade属性和inverse属性
      inverse属性
        多对一关系或者是多对一关系中 默认 inverse=false(默认双方都持有对外键维护的权利)
        这个时候一的一方可以放弃(可以不放弃)外键维护(设置 inverse=true)多的一方不可以放弃这个权利
      cascade属性
        级联操作 功能 只是节省几行代码操作("能不用就不用 要用也只用save-update")
依赖注入的方式
        set方法注入<property name="" value=""/> name:属性名 value:属性值 必须在bean中提供该属性名对应的共有set方法
        构造函数注入<constructor-arg  name="" value=""  index="" /> index:构造函数参数的索引从0开始
        p名称空间注入(了解)
        spel注入(了解)
hibernate一级缓存
        快照区保存了与一级缓存相对应的数据,但是并不是真正的对象
        刷新一级缓存时,执行SQL语句的判定标准为数据区与快照区的数据是否相同
        执行查询时,查询数据封装为对象保存在一级缓存数据区,同时将查询数据快照信息保存到快照区
有关值栈中 root对象栈数据操作?
                valueStack.push(obj)将指定的对象压入栈顶         
                在jsp页面,可以使用<s:property/> 获得栈顶的数据         
            通过valueStack.getRoot()获取对象栈         
                在jsp页面,可以使用<s:property value="name"/> 获得对象栈中name属性的值         
在struts2使用servlet原生APi
                可以通过ActionContext操作servlet的三个作用域         
                ServletActionContext提供了访问servlet常用对象的方法。例如:getServletContext( )等         
                struts提供若干接口直接给action注入相应的对象。例如:ServletContextAware可以给当前action注入ServletContext对象         
                ServletActionContext.getRequest() 可以获得HttpServletRequest对象。
struts2与spring整合(加载spring容器)
                1.导包         插件包struts2-spring-plugin-2.3.3.jar
                2.把Action交给spring管理 注意:Action是多例 要添加属性scope="prototype"
                spring整合struts2有两种方式:
                        一是spring管理action 用@Controller注解声明这个类被spring管理 struts2中不用配置
                        二是struts2创建action 配置全类名(不推荐)                  
hibernate与spring整合(加载spring容器)
                hibernate的sessionFactory交给spring管理
                在Dao层继承HibernateDaoSupport 并且提供set方法 注入并设置父类的sessionFactory
关于spring的切点表达式
                execution(modifiers-pattern?         ret-type-pattern         declaring-type-pattern?                                 name-pattern        (param-pattern)         throws-pattern?)
               
                execution(<修饰符>?                         <返回类型>                         <类路径> ?                                                                <方法名>                (<参数列表>)                 <异常模式>? )
               
                execution(public                                 void                                 cn.itheima.service.UserServiceImpl.                pay                                ()                                                )
最终演化为
                execution(                                             *                                         cn.itheima.service.*ServiceImpl.                *                                (..)                                                )
                execution(* cn.itheima.service.*ServiceImpl.*(..))

项目整合配置 一般来说
ssh框架整合 注意Action注解 默认扫描在struts,action包下面  hibernate 实体的JAP注解要开启注解扫描
        web.xml  spring的监听器 *ContextLoaderListener
                         设置spring配置文件的位置 key contextConfigLocation value classpath:applicationContext.xml  类路径src下
                       
                         struts2的过滤器 StrutsPrepareAndExecuteFilter
                         扩大session作用范围的过滤器 OpenSessionInViewFilter (注意 所有的过滤器 都要放在struts2的过滤器之前  因为struts2的过滤器中没有放行代码)
        applicationContext.xml
                1.  dataSource  <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
                                属性: 1.driverClass
                                          2.jdbcUrl
                                          3.user
                                          4.password
                2.         hibernate的sessionFactory
                                属性:1. dataSource 需要一个连接池
                                         2. hibernateProperties  显示SQL语句,生成表结构,格式化,数据库方言
                                         3. <property name="packagesToScan" value="com.itheima.domain"/>  hibernate注解扫描
                                                <property name="mappingDirectoryLocations" value="classpath:com/itheima/domain" />  加载配置文件(到目录)
                3.         注解扫描 <context:component-scan base-package="com.itheima"/>
                4.        核心事务管理器
                        <bean id="transactionManager"  class="org.springframework.orm.hibernate5.HibernateTransactionManager">
                                <property name="sessionFactory" ref="sessionFactory"/>
                        </bean>
                5.        开启事务注解 <tx:annotation-driven transaction-manager="transactionManager"/>
                6.        读取配置文件 <context:property-placeholder location="classpath:db.properties" />







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2