SSM框架详细阐述.docx
- 文档编号:4818489
- 上传时间:2022-12-09
- 格式:DOCX
- 页数:15
- 大小:22.64KB
SSM框架详细阐述.docx
《SSM框架详细阐述.docx》由会员分享,可在线阅读,更多相关《SSM框架详细阐述.docx(15页珍藏版)》请在冰豆网上搜索。
SSM框架详细阐述
持久层:
DAO层(mapper)
▪DAO层:
DAO层主要是做数据持久层的工作,负责与数据库进行联络的一些任务都封装在此,
▪DAO层的设计首先是设计DAO的接口,
▪然后在Spring的配置文件中定义此接口的实现类,
▪然后就可在模块中调用此接口来进行数据业务的处理,而不用关心此接口的具体实现类是哪个类,显得结构非常清晰,
▪DAO层的数据源配置,以及有关数据库连接的参数都在Spring的配置文件中进行配置。
业务层:
Service层
▪Service层:
Service层主要负责业务模块的逻辑应用设计。
▪首先设计接口,再设计其实现的类
▪接着再在Spring的配置文件中配置其实现的关联。
这样我们就可以在应用中调用Service接口来进行业务处理。
▪Service层的业务实现,具体要调用到已定义的DAO层的接口,
▪封装Service层的业务逻辑有利于通用的业务逻辑的独立性和重复利用性,程序显得非常简洁。
表现层:
Controller层(Handler层)
▪Controller层:
Controller层负责具体的业务模块流程的控制,
▪在此层里面要调用Service层的接口来控制业务流程,
▪控制的配置也同样是在Spring的配置文件里面进行,针对具体的业务流程,会有不同的控制器,我们具体的设计过程中可以将流程进行抽象归纳,设计出可以重复利用的子单元流程模块,这样不仅使程序结构变得清晰,也大大减少了代码量。
View层
▪View层此层与控制层结合比较紧密,需要二者结合起来协同工发。
View层主要负责前台jsp页面的表示.
各层联系
▪DAO层,Service层这两个层次都可以单独开发,互相的耦合度很低,完全可以独立进行,这样的一种模式在开发大项目的过程中尤其有优势
▪Controller,View层因为耦合度比较高,因而要结合在一起开发,但是也可以看作一个整体独立于前两个层进行开发。
这样,在层与层之前我们只需要知道接口的定义,调用接口即可完成所需要的逻辑单元应用,一切显得非常清晰简单。
▪Service逻辑层设计
▪Service层是建立在DAO层之上的,建立了DAO层后才可以建立Service层,而Service层又是在Controller层之下的,因而Service层应该既调用DAO层的接口,又要提供接口给Controller层的类来进行调用,它刚好处于一个中间层的位置。
每个模型都有一个Service接口,每个接口分别封装各自的业务处理方法。
SSM框架整合说明
整合Dao层
MyBatis配置文件 sqlMapConfig.xml
▪配置别名:
用于批量扫描Pojo包
▪不需要配置mappers标签,但一定要保证mapper.java文件与mapper.xml文件同名。
xmlversion="1.0"encoding="UTF-8"?
>
DOCTYPEconfigurationPUBLIC"-//mybatis.org//DTDConfig3.0//EN""http:
//mybatis.org/dtd/mybatis-3-config.dtd">
--配置别名-->
--批量扫描别名-->
∙1
∙2
∙3
∙4
∙5
∙6
∙7
∙8
∙9
Spring配置文件 applicationContext-dao.xml
▪主要配置内容
▪数据源
▪SqlSessionFactory
▪mapper扫描器
▪这里使用sqlSessionFactoryBeanName属性是因为如果配置的是sqlSessionFactory属性,将不会先加载数据库配置文件及数据源配置
//www.springframework.org/schema/beans" xmlns: xsi="http: //www.w3.org/2001/XMLSchema-instance"xmlns: mvc="http: //www.springframework.org/schema/mvc" xmlns: context="http: //www.springframework.org/schema/context" xmlns: aop="http: //www.springframework.org/schema/aop"xmlns: tx="http: //www.springframework.org/schema/tx" xsi: schemaLocation="http: //www.springframework.org/schema/beans http: //www.springframework.org/schema/beans/spring-beans-3.2.xsd http: //www.springframework.org/schema/mvc http: //www.springframework.org/schema/mvc/spring-mvc-3.2.xsd http: //www.springframework.org/schema/context http: //www.springframework.org/schema/context/spring-context-3.2.xsd http: //www.springframework.org/schema/aop http: //www.springframework.org/schema/aop/spring-aop-3.2.xsd http: //www.springframework.org/schema/tx http: //www.springframework.org/schema/tx/spring-tx-3.2.xsd"> --加载db.properties文件中的内容,db.properties文件中key命名要有一定的特殊规则--> property-placeholderlocation="classpath: db.properties"/> --配置数据源,dbcp--> --sqlSessionFactory--> --数据库连接池--> --加载mybatis的全局配置文件--> mybatis/sqlMapConfig.xml"/> --mapper扫描器--> --扫描包路径,如果需要扫描多个包,中间使用半角逗号隔开--> ∙1 ∙2 ∙3 ∙4 ∙5 ∙6 ∙7 ∙8 ∙9 ∙10 ∙11 ∙12 ∙13 ∙14 ∙15 ∙16 ∙17 ∙18 ∙19 ∙20 ∙21 ∙22 ∙23 ∙24 ∙25 ∙26 ∙27 ∙28 ∙29 ∙30 ∙31 ∙32 ∙33 ∙34 ∙35 ∙36 ∙37 ∙38 ∙39 ∙40 ∙41 ∙42 ∙43 ∙44 创建所需的Mapper.java ▪一般不动原始生成的po类,而是将原始类进行集成vo类 publicinterfaceItemsMappperCustom{ publicList } ∙1 ∙2 ∙3 创建POJO类对应的mapper.xml selectitems.*fromitems whereitems.namelike'%${itemsCustom.name}%' ∙1 ∙2 ∙3 ∙4 整合service层 ▪目标: 让spring管理service接口。 定义service接口 ▪一般在ssm.service包下定义接口eg: ItemsService publicinterfaeItemsService{ publicList } ∙1 ∙2 ∙3 定义ServiceImpl实现类 ▪因为在applicationContext-dao.xml中已经使用了mapper扫描器,这里可以直接通过注解的方式将itemsMapperCustom自动注入。 publicclassItemsServiceImplimplementsItemsService{ @Autowired privateItemsMapperCustomitemsMapperCustom; @Override publicList returnitemsMapperCustom.findItemsList(itemsQueryVo); } } ∙1 ∙2 ∙3 ∙4 ∙5 ∙6 ∙7 ∙8 ∙9 ∙10 在spring容器配置service ▪applicationContext-service.xml在此文件中配置service。 ∙1 事物控制(不够熟悉) ▪在applicationContext-transaction.xml中使用spring声明式事务控制方法 ▪对mybatis操作数据库事物控制,spring使用jdbc的事物控制类是DataSourceTransactionManager ▪因为操作了数据库需要事物控制,所以需要配置数据源 ▪定义了切面 //www.springframework.org/schema/beans" xmlns: xsi="http: //www.w3.org/2001/XMLSchema-instance"xmlns: mvc="http: //www.springframework.org/schema/mvc" xmlns: context="http: //www.springframework.org/schema/context" xmlns: aop="http: //www.springframework.org/schema/aop"xmlns: tx="http: //www.springframework.org/schema/tx" xsi: schemaLocation="http: //www.springframework.org/schema/beans http: //www.springframework.org/schema/beans/spring-beans-3.2.xsd http: //www.springframework.org/schema/mvc http: //www.springframework.org/schema/mvc/spring-mvc-3.2.xsd http: //www.springframework.org/schema/context http: //www.springframework.org/schema/context/spring-context-3.2.xsd http: //www.springframework.org/schema/aop http: //www.springframework.org/schema/aop/spring-aop-3.2.xsd http: //www.springframework.org/schema/tx http: //www.springframework.org/schema/tx/spring-tx-3.2.xsd"> --事务管理器对mybatis操作数据库事务控制,spring使用jdbc的事务控制类--> --数据源在dataSource在applicationContext-dao.xml中已经配置--> --通知--> adviceid="txAdvice"transaction-manager="transactionManager"> attributes> --传播行为--> methodname="save*"propagation="REQUIRED"/> methodname="delete*"propagation="REQUIRED"/> methodname="insert*"propagation="REQUIRED"/> methodname="update*"propagation="REQUIRED"/> methodname="find*"propagation="SUPPORTS"read-only="true"/> methodname="get*"propagation="SUPPORTS"read-only="true"/> methodname="select*"propagation="SUPPORTS"read-only="true"/> attributes> advice> --aop--> config> advisoradvice-ref="txAdvice"pointcut="execution(*cn.itcast.ssm.service.impl.*.*(..))"/> config> ∙1 ∙2 ∙3 ∙4 ∙5 ∙6 ∙7 ∙8 ∙9 ∙10 ∙11 ∙12 ∙13 ∙14 ∙15 ∙16 ∙17 ∙18 ∙19 ∙20 ∙21 ∙22 ∙23 ∙24 ∙25 ∙26 ∙27 ∙28 ∙29 ∙30 ∙31 ∙32 ∙33 ∙34 ∙35 ∙36 ∙37 ∙38 ∙39 ∙40 整合springmvc ▪创建springmvc.xml文件,配置处理器映射器、适配器、视图解析器 component-scanbase-package="cn.itcast.ssm.controller"> component-scan> --使用mvc: annotation-driven加载注解映射器和注解适配器配置--> annotation-driven> annotation-driven> --视图解析器解析jsp解析,默认使用jstl标签,classpath下的得有jstl的包 --> --配置jsp路径的前缀--> --配置jsp路径的后缀--> ∙1 ∙2 ∙3 ∙4 ∙5 ∙6 ∙7 ∙8 ∙9 ∙10 ∙11 ∙12 ∙13 配置前端控制器 ▪在web.xml中加入如下内容 ▪contextConfigLocation配置springmvc加载的配置文件(配置处理器映射器、适配器等等) ▪如果不配置contextConfigLocation,默认加载的是/WEB-INF/servlet名称-serlvet.xml(springmvc-servlet.xml) ▪在url-pattern中 ▪填入*.action,表示访问以.action结尾由DispatcherServlet进行解析 ▪填入/,所有访问的地址都由DispatcherServlet进行解析,对于静态文件的解析需要配置不让DispatcherServlet进行解析,使用此种方式可以实现RESTful风格的url --springmvc前端控制器--> spring/springmvc.xml ∙1 ∙2 ∙3 ∙4 ∙5 ∙6 ∙7 ∙8 ∙9 ∙10 ∙11 ∙12 ∙13 ∙14 ∙15 编写Controller(Handler) @Congtroller @RequestMapping("/items")//窄化路径 publicclassItemsController{ @Autowired privateItemsServiceitemsService; //商品查询 @RequestMapping("/queryItems")//实际网址后面跟了.action publicModelAndViewqueryItems(HttpServletRequestrequest)throwsException{ List //返回ModelAndView ModelAndViewmodelAndView=newModelAndView(); //相当于request的setAttribute,在jsp页面中通过itemsList取数据 modelAndView.addObject("itemsList",itemsList); returnmodelAndView; } } ∙1 ∙2 ∙3 ∙4 ∙5 ∙6 ∙7 ∙8 ∙9 ∙10 ∙11 ∙12 ∙13 ∙14 ∙15 ∙16 ∙17 ∙18 ∙19 ∙20 ∙21 编写JSP页面 forEachitems="${itemsList}"var="item"> formatDatevalue="${item.createtime}"pattern="yyyy 如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。 copyright@ 2008-2022 冰点文档网站版权所有 经营许可证编号:鄂ICP备2022015515号-1${item.name} ${item.price}