各大框架,jsp笔记篇

jsp执行原理和顺序

  1. jsp全称为java server page
    当用户发起请求,由tomcat容器接住处理,先翻译jsp为java文件
    ,然后编译class(该翻译编译过程为第一次请求才做的)执行java代码.
  2. java代码执行完成后,把静态内容和java执行的结果一并响应给
    到客户端浏览器.
  3. 浏览器再从上往下执行静态内容(html,css,js)

. servlet的声明周期,是否安全

  1. 用户在第一次请求的时候,或容器启动的时候(需配置loadOnStartup为非负数,越小优先级越高),服务器或容器会创建servlet对象,并且只创建这一次,servlet是一个单例的.
  2. 执行init方法完成初始化
  3. 执行service方法,根据请求方式进入doget/dopost/doput/do…方法.
  4. 当服务器或容器关闭的时候,会执行destroy方法.完成 销毁工作.
    servlet既然是单例的,那么它是否是线程安全的?
    servlet本身不存在线程安全的问题. 但是要注意共享变量的定义范围,程序员的不当编写可能会 造成线程不安全.比如多个线程访问了servlet的同一个实例变量.

struts2运行原理

  1. 用户发送请求到容器,容器经过web.xml中的核心过滤器
    StrutsPrepareAndExecuteFilter,看是否符合过滤条件,
    ,然后去struts.xml中查找匹配的package和action.
    然后进入struts2的一系列的拦截器栈后进入我们的action的
    execute方法.执行完成后,返回字符串,匹配struts配置文件
    中的result,然后跳转到视图.
  2. struts获取数据方法
    属性驱动和模型驱动
  3. struts2是基于拦截器+反射实现的

7. hibernate

  1. hibernate运行流程
    1). 读取hibernate.cfg.xml核心配置
    2). 创建sessionFactory对象
    3). 创建session
    4). 创建Transaction
    5). 提交/回滚事务
    6). 关闭资源

  2. 什么是事务的ACID特性
    1). 原子性 一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。
    2). 一致性 事务必须是使数据库从一个一致性状态变到另一个一致性状态。
    3). 隔离性 每个事务之间相互不影响
    4). 持久性 事务一旦完成,那么数据的存储是持久的

  3. 一级缓存和二级缓存
    1). 一级缓存又称为session级别缓存,默认已打开
    2). 二级缓存称为sessionFactory级别缓存,多个session共享.
    hibernate二级缓存需要手动开启.一般使用ehcache第三方缓存.
    经常修改的数据不适合放入二级缓存,因为可能造成脏读,
    或者频繁修改二级缓存. 不经常修改的数据,但是经常查询
    的数据,可以放入二级缓存…使用了二级缓存,那么修改数据
    最好也同步到二级缓存.

  4. hibernate三态
    1). 瞬时态 程序实例化的对象,session和DB中不存在
    2). 持久态 执行get,load,save,update等方法后,对象会缓存到
    session和持久化到数据库,此时对象为持久态.
    对持久态的对象进行修改,最终会影响到session缓存和数据库.
    3). 游离态 调用session的evict,clear,close等方法,对象进入
    游离态或脱管态. 此时对象不受session管理.但数据库中有对应
    的数据.

  5. 什么是延迟加载? load和get的区别?
    1). 延迟加载也称懒加载,指不直接访问数据库,
    而是待具体访问对象的属性的时候,才去查询数据库.
    做到提升或优化性能的作用.
    2). get 是即时加载, 即立即访问数据库查询(会先查12缓存).没有数据
    返回null
    3). load称为"支持延迟加载", 当启用了延迟加载的时候,
    就实现了延迟加载. 如果不启用,那么也会立即加载.
    并且load返回的是代理对象,查询不到数据会抛出异常.

  6. 什么是悲观锁和乐观锁
    1). 悲观锁使用数据库的锁机制(在sql后面加for update),影响性能.
    2). 乐观锁是逻辑层面的锁,应用通过版本号来控制并发操作.
    一般给数据添加版本号或时间戳的方式来实现.

  7. 什么是ORM
    1). Object Relational Mapping 对象关系映射
    2). 类名对应表名
    3). 字段名对应数据库列名
    4). 对象对应一行数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值