整合示例
SSM整合思路
三个框架对应三层架构的三层,SpringMVC对应视图层,Spring对应业务层,Mybatis对应持久层。
SSM整合,把对象交给容器,让容器去创建项目中要使用的java对象。
Spring容器:Spring管理service和dao层等对象的,是业务层的容器。
SpringMVC:管理控制器对象,是视图层对象
SSM整合就是把对象交给容器管理,两个容器共存,各自管理不同的对象,把对象声明到配置文件中,spring创建service,dao;springmvc创建controlled。
容器的创建
spring容器创建:在web.xml声明ContextLoaderListener,框架已经写好,功能是创建spring的容器对象webApplicationContext。在创建webApplicationContext时候,读取spring配置文件。遇到bean标签或注解时创建对应的对象放到容器中
spring容器创建:在web.xml声明DispatcherServlet,在Servlet的init()方法中创建了容器对象webApplicationContext。在创建webApplicationContext时候,读取spring配置文件。创建对应的对象放到容器中。
在创建webApplicationContext时候,读取spring配置文件。遇到@Controller时创建对应的对象放到容器中。
相当于内存中创建对象
WebApplicationContext spring=new WebApplicationContext();
WebApplicationContext springmvc=new WebApplicationContext();
SpringMVC容器与Spring容器关系:在设计上SpringMVC容器是Sping容器的子容器。
相当于继承关系。
SSM整合开发步骤
1.使用数据库表
2.创建maven web项目
3.修改pom.xml依赖:spring、springmvc、mybatis、jackson…。
4.写web.xml:声明容器对象
1)声明spring的监听器:ContextLoaderListener:创建spring的容器对象。
2)声明springmvc的中央调度器DispatcherServlet:创建springmvc的容器对象。
3)声明字符集过滤器CharacterEncodingFilter,解决post请求乱码问题
5.创建包
6.写三个框架的配置文件
7.写java代码
8.创建视图文件
相对路径问题
<a href="ssm1/addStu.do">没有"/" 开头</>
<a href="/ssm1/addStu.do">有"/" 开头</>
<a href="https://www.baidu.com">协议开头</a>
协议开头是绝对地址,可以直接访问。
没有协议开头的是相对地址,需要与参考地址组合在一起,表示完整地址才能访问。
有"/“和没有”/“的参考地址是不同的
1)没有”/"开头的地址:参考地址+当前的相对地址组成访问地址。
1.可以使用
p
a
g
e
C
o
n
t
e
x
t
.
r
e
q
u
e
s
t
.
c
o
n
t
e
x
t
P
a
t
h
补
全
访
问
路
径
2.
使
用
b
a
s
e
标
签
固
定
参
考
地
址
2
)
有
"
/
"
开
头
的
地
址
:
参
考
地
址
是
服
务
器
地
址
+
当
前
地
址
组
成
访
问
地
址
使
用
{pageContext.request.contextPath}补全访问路径 2.使用base标签 固定参考地址 2)有"/"开头的地址:参考地址是服务器地址+当前地址组成访问地址 使用
pageContext.request.contextPath补全访问路径2.使用base标签固定参考地址2)有"/"开头的地址:参考地址是服务器地址+当前地址组成访问地址使用{pageContext.request.contextPath}+当前地址 解决