1.搭建web运行环境
javax.servlet javax.servlet-api 3.1.0 provided javax.servlet jstl 1.2 javax.servlet.jsp javax.servlet.jsp-api 2.3.1 provided org.springframework spring-web 5.1.14.RELEASE org.springframework spring-core 5.1.14.RELEASE org.springframework spring-beans 5.1.14.RELEASE org.springframework spring-tx 5.1.14.RELEASE org.springframework spring-context 5.1.14.RELEASE org.springframework spring-webmvc 5.1.14.RELEASE org.slf4j slf4j-log4j12 1.7.25 log4j log4j 1.2.17 junit junit mysql mysql-connector-java 5.1.49 org.mybatis mybatis 3.4.6 org.springframework spring-jdbc 5.1.14.RELEASE org.mybatis mybatis-spring 2.0.2 com.alibaba druid 1.1.18 junit junit 4.12 test org.springframework spring-aop 5.1.14.RELEASE org.aspectj aspectjrt 1.8.8 org.aspectj aspectjweaver 1.8.3 org.projectlombok lombok 1.18.12 compile junit junit 4.11 test
2.为什么要整合MVC框架
1.MVC框架提供了控制器(Controller)调用Service 2.请求相应的处理 3.接受请求参数 4.控制程序运行流程 5.试图解析(JSP JSON Freemarker Thyemeleaf)
3.Spring可以整合哪些MVC框架
1.struts1
2.webwork
3.jsf
4.struts2
5.springMVC
4.Spring整合MVC框架的核心思路
(1)准备工厂
1.Web开发过程中如何创建工厂
ApplicationContext ctx = new ClassPathXmlApplicationContext("/applicationContext.xml");
new WebXmlApplicationContext();
2.如何保证工厂唯一同时被公用
被公用:Web request|session|ServletContext(application)
工厂存储在ServletContext这个作用域中ServletContext.setAttribut("xxx",ctx);
唯一:ServletContext对象 创建的同时--->ApplicationContext ctx = new ClassPathXmlApplicationContext("/applicationContext.xml");
ServletContextListener --->Application ctx =new ClassPathXmlApplicationContext("/applicationContext.xml");
ServletContextListener 在ServlContext对象创建的同时,被调用(只会被调用一次),把工程创建的代码,写在ServletContextListener中,也会保证只调用一次,最终工厂就保证了唯一性
3.总结
ServletContextListener(唯一)
ApplicationContext ctx =new ClassPathXmlApplicationContext("/applicationContext.xml");
ServletContext.setAttribute("xxx",ctx); (公用)
4.Spring封装了一个ContextLoaderListener
1)创建工厂
2)把工厂存在ServletContext中
ContextLoaderListener使用方式 Web.xmlorg.springframework.web.context.ContextLoaderListener contextConfigLocation classpath:applicationContext.xml
(2)代码整合
二、Spring与Struts2框架整合依赖注入:把Service对象注入给控制器对象
1.Spring与Struts2整合思路分析
Struts2中的Action需要通过Spring的依赖注入获得Service对象。
2.Spring与Struts2整合的编码实现
-
搭建开发环境
- 引入相关jar(Spring Struts2)
org.apache.struts struts2-spring-plugin 2.3.8 - 引入对应的配置文件
(1)applicationContext.xml
(2)struts.xml
(3)log4j.properties - 初始化配置
Spring —ContextLoaderListener -> web.xml
Struts2—filter -> web.xml
org.springframework.web.context.ContextLoaderListener contextConfigLocation classpath:applicationContext.xml struts2 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter struts2 /* -
编码
- 开发service对象
最终在Spring配置文件中创建Service对象
- 开发Action对象
(1)开发类public class RegAction implements Action { private UserService userService; public UserService getUserService() { return userService; } public void setUserService(UserService userService) { this.userService = userService; } @Override public String execute() throws Exception { userService.register(); return Action.SUCCESS; } }(2)Spring(appicationContext.xml)
(3)Struts2(struts.xml)url reg.action --->会接受到用户的请求后,创建RegAction这个类的对象 进行相应的处理 /index.jsp
- 开发service对象
3.Spring+Struts2+Mybatis整合
1.思路分析
SSM = Spring + Struts2 Spring+Mybatis
2.整合编码
-
搭建开发环境
- 引入相关jar(Spring Struts2 Mybatis)
org.apache.struts struts2-spring-plugin 2.3.8 javax.servlet javax.servlet-api 3.1.0 provided javax.servlet jstl 1.2 javax.servlet.jsp javax.servlet.jsp-api 2.3.1 provided org.springframework spring-web ${spring.version} org.springframework spring-core ${spring.version} org.springframework spring-beans ${spring.version} org.springframework spring-tx ${spring.version} org.springframework spring-context ${spring.version} org.springframework spring-webmvc ${spring.version} org.slf4j slf4j-log4j12 1.7.25 log4j log4j 1.2.17 junit junit mysql mysql-connector-java 5.1.49 org.mybatis mybatis 3.4.6 org.springframework spring-jdbc ${spring.version} org.mybatis mybatis-spring 2.0.2 com.alibaba druid 1.1.18 junit junit 4.12 test org.springframework spring-aop ${spring.version} org.aspectj aspectjrt 1.8.8 org.aspectj aspectjweaver 1.8.3 org.projectlombok lombok 1.18.12 compile junit junit 4.11 test
- 引入对应的配置文件
(1)applicationContext.xml
(2)struts.xml
(3)log4j.properties
(4)xxxMapper.xml - 初始化配置
Spring —ContextLoaderListener -> web.xml
Struts2—filter -> web.xml
org.springframework.web.context.ContextLoaderListener contextConfigLocation classpath:applicationContext.xml struts2 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter struts2 /* - 引入相关jar(Spring Struts2 Mybatis)
-
编码
- DAO(Spring+Mybatis)
1.配置文件的配置 (1).DataSource (2).SqlSessionFactory --->SqlSessionFactoryBean 1>.dataSource 2>.typeAliasesPackage 3>.mapperLocations (3).MapperScannerConfigur --->DAO接口实现类 2.编码 (1).entity (2).table数据库表 (3).DAO接口 (4).实现Mapper
- Service(Spring添加事务)
1.原始对象 ---->注入DAO 2.额外功能 ---->DataSourceTransactionManager --->dataSource 3.切入点 + 事务属性 @Transactional(propagation,redOnly...) 4.组装切面
- Controller(Spring+Struts2)
1.开发控制器 impliements Action 注入Service 2.Spring的配置文件 (1).注入Service (2).scope=prototype 3.struts.xml
- DAO(Spring+Mybatis)
Spring会根据需要,把配置信息分门别类的放置在多个配置文件中,便于后续的管理及维护。
DAO -------------application-dao.xml
Service -------------application-service.xml
Action -------------application-action.xml
注意:虽然提供了多个配置文件,但是后续应用的过程中,还要进行整合
- 通配符方式
1.非web环境
ApplicationContext ctx = new ClassPathXmlApplicationContext("/application-*.xml")
2.web环境
contextConfigLocation
classpath:applicationContext-*.xml
- import标签
applicationContext.xml 目的 整合其他配置内容四、Spring+SpringMVC+Mybatis编码整合1.非web环境 ApplicationContext ctx = new ClassPathXmlApplicationContext("/application.xml") 2.web环境 contextConfigLocation classpath:applicationContext.xml
待完结。。。。



