收藏 分销(赏)

SSM框架下各个层的解释说明.doc

上传人:知****运 文档编号:11590399 上传时间:2025-07-31 格式:DOC 页数:20 大小:83.51KB 下载积分:10 金币
下载 相关 举报
SSM框架下各个层的解释说明.doc_第1页
第1页 / 共20页
SSM框架下各个层的解释说明.doc_第2页
第2页 / 共20页


点击查看更多>>
资源描述
持久层: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"?> <configuration> <!--配置别名--> <typeAliases><!--批量扫描别名--> <packagename=/> </typeAliases> </configuration> · 1 · 2 · 3 · 4 · 5 · 6 · 7 · 8 · 9 Spring配置文件 applicationContext-dao.xml § 主要配置内容  § 数据源 § SqlSessionFactory § mapper扫描器  § 这里使用sqlSessionFactoryBeanName属性是因为如果配置的是sqlSessionFactory属性,将不会先加载数据库配置文件及数据源配置 <beansxmlns= xmlns:xsi=xmlns:mvc= xmlns:context= xmlns:aop=xmlns:tx= xsi:schemaLocation= > <!--加载db.properties文件中的内容,db.properties文件中key命名要有一定的特殊规则--> <context:property-placeholderlocation="classpath:db.properties"/> <!--配置数据源,dbcp--> <beanid="dataSource"class=destroy-method="close"> <propertyname="driverClassName"value="${jdbc.driver}"/> <propertyname="url"value="${jdbc.url}"/> <propertyname="username"value="${jdbc.username}"/> <propertyname="password"value="${jdbc.password}"/> <propertyname="maxActive"value="30"/> <propertyname="maxIdle"value="5"/> </bean> <!--sqlSessionFactory--> <beanid="sqlSessionFactory"class=> <!--数据库连接池--> <propertyname="dataSource"ref="dataSource"/> <!--加载mybatis的全局配置文件--> <propertyname="configLocation"value="classpath:mybatis/sqlMapConfig.xml"/> </bean> <!--mapper扫描器--> <beanclass=> <!--扫描包路径,如果需要扫描多个包,中间使用半角逗号隔开--> <propertyname="basePackage"value=></property> <propertyname="sqlSessionFactoryBeanName"value="sqlSessionFactory"/> </bean> </beans> · 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<ItemsCustom>findItemsList(ItemsQueryVoitemsQueryVo)throwsException; } · 1 · 2 · 3 创建POJO类对应的mapper.xml <mappernamespace=> <selectid="findItemsList"parameterTyep=resultType=> selectitems.*fromitems whereitems.namelike'%${itemsCustom.name}%' · 1 · 2 · 3 · 4 整合service层 § 目标:让spring管理service接口。 定义service接口 § 一般在ssm.service包下定义接口eg:ItemsService publicinterfaeItemsService{ publicList<ItemsCustom>findItemsList(ItemsQueryVoitemsQueryVo)throwsException; } · 1 · 2 · 3 定义ServiceImpl实现类 § 因为在applicationContext-dao.xml中已经使用了mapper扫描器,这里可以直接通过注解的方式将itemsMapperCustom自动注入。 publicclassItemsServiceImplimplementsItemsService{ @Autowired privateItemsMapperCustomitemsMapperCustom; @Override publicList<ItemsCustom>findItemsList(ItemsQueryVoitemsQueryVo)throwsException{ returnitemsMapperCustom.findItemsList(itemsQueryVo); } } · 1 · 2 · 3 · 4 · 5 · 6 · 7 · 8 · 9 · 10 在spring容器配置service § applicationContext-service.xml在此文件中配置service。 <beanid="itemsService"class=/> · 1 事物控制(不够熟悉) § 在applicationContext-transaction.xml中使用spring声明式事务控制方法 § 对mybatis操作数据库事物控制,spring使用jdbc的事物控制类是DataSourceTransactionManager § 因为操作了数据库需要事物控制,所以需要配置数据源 § 定义了切面 <beansxmlns= xmlns:xsi=xmlns:mvc= xmlns:context= xmlns:aop=xmlns:tx= xsi:schemaLocation= > <!--事务管理器对mybatis操作数据库事务控制,spring使用jdbc的事务控制类--> <beanid="transactionManager"class=> <!--数据源在dataSource在applicationContext-dao.xml中已经配置--> <propertyname="dataSource"ref="dataSource"/> </bean> <!--通知--> <tx:adviceid="txAdvice"transaction-manager="transactionManager"> <tx:attributes> <!--传播行为--> <tx:methodname="save*"propagation="REQUIRED"/> <tx:methodname="delete*"propagation="REQUIRED"/> <tx:methodname="insert*"propagation="REQUIRED"/> <tx:methodname="update*"propagation="REQUIRED"/> <tx:methodname="find*"propagation="SUPPORTS"read-only="true"/> <tx:methodname="get*"propagation="SUPPORTS"read-only="true"/> <tx:methodname="select*"propagation="SUPPORTS"read-only="true"/> </tx:attributes> </tx:advice> <!--aop--> <aop:config> <aop:advisoradvice-ref="txAdvice"pointcut=/> </aop:config> </beans> · 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文件,配置处理器映射器、适配器、视图解析器 <context:component-scanbase-package=></context:component-scan> <!--使用mvc:annotation-driven加载注解映射器和注解适配器配置--> <mvc:annotation-driven></mvc:annotation-driven> <!--视图解析器解析jsp解析,默认使用jstl标签,classpath下的得有jstl的包 --> <beanclass=> <!--配置jsp路径的前缀--> <propertyname="prefix"value="/WEB-INF/jsp/"/> <!--配置jsp路径的后缀--> <propertyname="suffix"value=".jsp"/> </bean> · 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前端控制器--> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class></servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring/springmvc.xml</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>*.action</url-pattern> </servlet-mapping> · 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<ItemsCustom>itemsList=itemsService.findItemsList(null); //返回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页面 <c:forEachitems="${itemsList}"var="item"> <tr> <td>${item.name}</td> <td>${item.price}</td> <td><fmt:formatDatevalue="${item.createtime}"pattern="yyyy-MM-ddHH:mm:ss"/></td> <td>${item.detail}</td> <td><ahref=>修改</a></td> </tr> </c:forEach> · 1 · 2 · 3 · 4 · 5 · 6 · 7 · 8 · 9 · 10 · 11 加载spring容器 § 在web.xml中,添加spring容器监听器,加载spring容器 <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/classes/spring/applicationContext-*.xml</param-value> </context-param> <listener> <listener-class></listener-class> <listener> · 1 · 2 · 3 · 4 · 5 · 6 · 7 · 8
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服