文档章节

ssh整合

lf20101072
 lf20101072
发布于 2017/04/26 19:24
字数 1046
阅读 3
收藏 0

Struts2

MVC框架, 取代servlet的操作, action作为核心控制层

1.1 核心组件

1. StrutsPrepareAndExecuteFilter(在web.xml中配置)
加载struts.xml, 对于request请求转发到对应的action

2. action
封装请求参数(参数自动绑定), 调用service
继承ActionSupport, 可以实现校验方法validate()

3. interceptor拦截器
对action请求的预处理和后处理

 

1.2 资源文件

让所有的文本信息都放在配置文件中, 统一管理

2种方式:

1. action: getText

 

1.3 Struts标签库

<s:debug>

 

1.4 struts的请求流程

request --> filter(struts核心过滤器) --> interceptor拦截器(前置方法) --> action --> interceptor拦截器(后置方法) --> jsp

 

hibernate3

持久层的框架, ORM框架. 取代JDBC的操作, 简化与数据库的交互过程.

2.1 核心接口

1. Configuration
加载hibernate.cfg.xml配置文件

2. sessionFactory
创建session

3. session
相当于数据库的连接
可以通过这个接口进行增(save)改(update)删(delete)查(get, load)

创建Query对象, createQuery(hql)

4. Query
执行HQL语句
list()   获取一个集合, 数据条数没有限制
uniqueResult()   获取一个对象, 数据必须<=1条

参数绑定: 参数位置(?), 参数名(:name)

设置分页: setFirstResult, setMaxResult

5. Transaction
对于事务的管理

 

2.2 实体类的3种状态

临时, 游离, 持久

 

持久态的2大特性:

1. 数据自动同步

2. 缓存, 基于session的缓存(一级缓存)

 

2.3 HQL

面向对象的查询语言

HQL中用的都是类名和属性名(区分大小写)

 

2.4 关联关系

一对一, 一对多, 多对一, 多对多

 

注解中的2个关键属性:

1. mappedBy: 关联关系要交给对方去维护

2. fetch: 指定数据加载的方式, LAZY(一对多, 多对多), EAGER(一对一, 多对一)

 

spring

IOC和AOP

 

3.1 IOC

创建对象的过程交给spring容器去做.

好处: 系统更加灵活, 扩展更加方便

 

3.1.1 bean的作用范围

scope=singleton(单例)

prototype(多例)

 

3.1.2 bean的生命周期

调用默认无参的构造器 --> 属性赋值 --> init方法 --> 正常使用 --> destroy方法(spring容器销毁的时候)

 

3.1.3 获取bean的2种方式

按id获取

 

按类型去获取: 好处返回的对象就是对应类型的对象, 不需要强制转换.

缺点: 如果存在多个相同类型的bean, 则会报错

 

3.1.4 基于注解配置方法

1. 包扫描的路径(引入context命名空间)

2. 给需要由spring管理的bean类增加相关的注解

a) 类上的注解: @Controller, @Service, @Repository, @Component

b) 属性的注入: @Resource, @Autowired

 

3.2 AOP

面向切面编程

3.2.1 基于AOP的事务管理

步骤:

配置: 事务管理器(transactionManager), 事务注解驱动(引用事务管理器, 支持@Transactional)

 

3.3 struts2和spring整合

1. web项目自动加载spring配置, listener监听器

2. struts2引入插件包struts2-spring-plugin
主要是为了action的创建过程交给spring容器

3. 在action中增加@Controller

 

3.4 hibernate和spring的整合

hibernate.cfg.xml的配置转移到spring中

 

2个核心配置:

1. 数据源

2. sessionFactory

3. hibernateTemplate
增删改查都是跟session接口的用法是一致的
find(HQL, param...), 只能根据参数的位置来绑定, 都是返回一个集合

bulkUpdate(HQL, param...) 只能根据参数的位置来绑定
分页: executeFind(匿名内部类), 如果需要引用外部的变量, 外部的变量需要增加final

 

 

 

书城项目重构

1. servlet

a) 新增一个action类

b) service是通过spring注入

c) 变成struts的action(配置在struts.xml)

d) 返回值:  原先的页面路径 --> result的名字

2. service

a) dao的创建 --> spring注入

3. dao

a) queryRunner --> hibernateTemplate

b) SQL --> HQL

 

 

 

相对路径和绝对路径

1.1 原则

能用绝对路径的尽量用绝对路径, 因为相对路径是相对于你当前访问的URL路径来的, 所以当你访问的URL路径发生变化时, 容易出错.

 

1.2 需要加项目路径的地方

在html中

a标签的href属性

form的action属性

JavaScript中的location.href的赋值

1.3 不需要加项目路径的地方

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

© 著作权归作者所有

上一篇: springMVC
下一篇: hibernate
lf20101072
粉丝 0
博文 116
码字总数 18583
作品 0
孝感
私信 提问

暂无文章

聊聊中国的通信行业:从“七国八制”到“中华”脊梁

本期文章和大家一起来聊一聊我曾经从事过的通信行业吧。最近各方面信息的泛滥,包括和华为的同学聊天,自己确实也感慨颇多。想想我自己本科主修通信工程,研究生再修信息与通信工程,从本科开...

CodeSheep
今天
4
0
MDK:ARM M451M:exceed the range of code meory, continue to erase or not?

问题: 代码空间超限 几天前就遇到:exceed the range of code meory, continue to erase or not? 如下所示: 解决过程 开始以为中MDK软件的128KB限制,如是就不能生成HEX文件,应该链接时有提...

SamXIAO
今天
1
1
OSChina 周六乱弹 —— 因违反《中华人民共和国治安管理处罚法》第四十四条之规定

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @xiaoshiyue :#今日歌曲推荐# 惊艳分享谷微的单曲《安守本份》(@网易云音乐) 《安守本份》- 谷微 手机党少年们想听歌,请使劲儿戳(这里) ...

小小编辑
今天
367
9
Angular 英雄编辑器

应用程序现在有了基本的标题。 接下来你要创建一个新的组件来显示英雄信息并且把这个组件放到应用程序的外壳里去。 创建英雄组件 使用 Angular CLI 创建一个名为 heroes 的新组件。 ng gener...

honeymoose
今天
8
0
Kernel DMA

为什么会有DMA(直接内存访问)?我们知道通常情况下,内存数据跟外设之间的通信是通过cpu来传递的。cpu运行io指令将数据从内存拷贝到外设的io端口,或者从外设的io端口拷贝到内存。由于外设...

yepanl
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部