【MarketAnalysis总结】2.0搭建Spirng框架、SpringMVC框架以及对SSH框架的集成

本文主要是介绍【MarketAnalysis总结】2.0搭建Spirng框架、SpringMVC框架以及对SSH框架的集成,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

首先我先来介绍一下Spring框架,SpringMVC框架以及它们在本项目中的使用,再对搭建SSH框架的详细过程进行说明。


1)   介绍Spring框架以及在本项目的使用

Spring是一个轻量级的应用开发框架,它帮我们管理对象及其依赖关系,还提供像通用日志记录、性能统计、安全控制、异常处理等面向切面的能力。它提供了与第三方数据访问框架(如Hibernate)无缝集成以及一套Spring MVC框架,来方便web搭建 。在此,本项目采用的是SSH(SpringMVC、Spring、Hibernate)集成框架。

Spring框架的组成如下图2.1,


图2.1 Spring框架组成

Spring的关键模块主要是Ioc容器的依赖注入,以及Aop的面向切面模块。

  • Ioc容器负责实例化、定位、配置应用程序中的对象及建立这些对象间的依赖,把依赖关系、逻辑关系、配置等等,和类的具体实现分隔开来,前者对应xml文件,后者对应Java文件。
  • AOP 模块能够将那些与业务无关,却为业务模块所共同调用的逻辑或责任,例如事务处理、日志管理、权限控制等,封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可操作性和可维护性。

在本项目中,主要应用了Spring的Ioc容器、DAO、以及MVC。Ioc容器是Spring的核心,该容器里存放着一个个Bean,本项目通过该容器把DAO、Hibernate以及Service层的依赖关系都集成于此。此外Hibernate是指对数据库访问控制进行集成的一个框架,由于不是我主负责这部分,在此不赘述。

2)   介绍SpringMVC框架以及在本项目中的使用

A.   SpringMVC框架是Spring提供的一个强大而灵活的web框架,它对应着本项目中的controller层。SpringMVC主要由DispatcherServlet、处理器映射、处理器(控制器)、视图解析器、拦截器。它的三个核心是:

  • 处理器映射:选择使用哪个控制器来处理请求,分发请求到某一个方法中去。
  • 视图解析器:选择结果应该如何渲染,可控制页面跳转。
  • 拦截器:对前端请求进行权限校验、身份校验、合法性检查、避免过量请求涌入等操作。

B.   此外,Spring的运行原理如下图2.10


图2.10 SpringMVC运行原理示意图

A.   在本项目中的运行步骤如下:

a)   首先用户发送请求url,web容器根据“/”路径映射到DispatcherServlet(因为url-pattern为/)进行处理;

b)   对springMVC-servlet.xml进行初始化,检查会不会被拦截器拦截下来;若被拦截,对请求进行预处理,处理完过后决定对该请求是否放行,即是否让该请求到达controller;

c)   通过component-scan来对controller的包进行注解扫描,以及DefaultAnnotationHandlerMapping与AnnotationMethodHandlerAdapter进行启动注解功能,对controller进行扫描,找到url对应的控制器;

d)   根据url映射到controller对应的方法进行处理;

e)   处理完毕后,通过视图解析器,根据路径找到要返回的视图,渲染并返回。

B.   对SpringMVC配置xml文件后面会有论述,这里介绍一下前端的请求url怎么配置才能映射到对应处理该请求的控制器。这里有两种配置方法,分为注解法和非注解法:

  • 注解法

配置如图2.11,@Controller写在控制器对应的类的上方,即可表明该类为控制器,@RequestMapping的value属性用来配置某url要映射的方法,如下图,处理“/login”这个url请求对应的方法即为login();


图2.11 注解法配置

每一个注解实则是一个bean,使用注解的优点是可以自动实现bean的依赖注入,无需手动配置bean,使用方便。缺点是不利于代码解耦,耦合度较高,而且会降低代码与依赖关系的可读性。

  • 非注解法

配置如图2.12,这种方法其实更接近本质,它其实是对上一种更深一步解析,因为每一个注解都对应着一个bean。而在这种方法中,就还原了这个bean,每一个url通过bean name来映射到class类中的方法。


图2.12 非注解法配置

这种方法的优点是有利于代码解耦,降低耦合度,主张配置与代码分离,增加了依赖关系的可读性,便于理解项目整体架构。缺点显而易见,就是配置可能会比较繁琐,使用起来没有上一种方法方便。

在本项目中使用了第一种方法,即注解法。

3)   搭建SSH(SpringMVC+Spring+Hibernate)框架过程

搭建此SSH框架最关键是对三个配置文件进行配置,如下图2.2的web.xml、applicationContext.xml、springMVC-servlet.xml。

图2.2 SSH框架配置图

a)   web.xml

在此配置文件中,主要是对spring框架配置监听器以及Controller层的集中统一分发的分发器对每一个url请求都进行统一的分发。它的配置如图2.3,


图2.3 web.xml配置

监听器、分发器分别对应这上图的1、2+3。

b)   applicationContext.xml

该配置文件是spring框架的核心配置文件,主要用来配置Ioc容器的bean之间的依赖关系,进行依赖注入,每一个bean都对应这上面所陈述的一个类。

  • 集成hibernate

使用了两个bean,如下图2.4,


图2.4 Ioc容器中的hibernate配置

主要使用了dataSource与sessionFactory两个bean,把对数据库连接等操作的依赖关系都集成于此。

  • 集成DAO

配置如下图2.5,


图2.5 DAO层的bean配置

这四个bean分别对应着DAO层的增删改查的依赖。

  • 集成Service服务

这里主要对所有Service层提供的服务进行集成,以便Controller使用Service层的服务时,可以从该容器中拿到对应的bean来获取对应的服务。部分Service的bean配置如下图2.6:


图2.6 部分Service层的bean配置

c)   springMVC-servlet.xml

该配置文件主要是对SpringMVC框架进行配置的核心文件,对应着Controller层,主要是对controller和interceptor进行配置;

  • 配置注解扫描器

该配置主要是让controller层接收来自前端的url请求,映射到对应的处理函数中,配置如图2.7所示。


图2.7 注解扫描器配置

  • 配置视图解析器

视图解析器主要是为了controller层能控制页面跳转而使用的,只要为其配置所需跳转页面的路径即可,如图2.8。


图2.8 视图解析器配置

配置拦截器

拦截器主要对应controller的interceptor层,这里的配置所起作用是配置拦截器所要拦截的url,以及对拦截的这些url配置对应的类来处理,部分拦截器配置如图2.9。


图2.9 拦截器部分配置
























这篇关于【MarketAnalysis总结】2.0搭建Spirng框架、SpringMVC框架以及对SSH框架的集成的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/838599

相关文章

Java实现字节字符转bcd编码

《Java实现字节字符转bcd编码》BCD是一种将十进制数字编码为二进制的表示方式,常用于数字显示和存储,本文将介绍如何在Java中实现字节字符转BCD码的过程,需要的小伙伴可以了解下... 目录前言BCD码是什么Java实现字节转bcd编码方法补充总结前言BCD码(Binary-Coded Decima

SpringBoot全局域名替换的实现

《SpringBoot全局域名替换的实现》本文主要介绍了SpringBoot全局域名替换的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录 项目结构⚙️ 配置文件application.yml️ 配置类AppProperties.Ja

Java使用Javassist动态生成HelloWorld类

《Java使用Javassist动态生成HelloWorld类》Javassist是一个非常强大的字节码操作和定义库,它允许开发者在运行时创建新的类或者修改现有的类,本文将简单介绍如何使用Javass... 目录1. Javassist简介2. 环境准备3. 动态生成HelloWorld类3.1 创建CtC

JavaScript中的高级调试方法全攻略指南

《JavaScript中的高级调试方法全攻略指南》什么是高级JavaScript调试技巧,它比console.log有何优势,如何使用断点调试定位问题,通过本文,我们将深入解答这些问题,带您从理论到实... 目录观点与案例结合观点1观点2观点3观点4观点5高级调试技巧详解实战案例断点调试:定位变量错误性能分

Java实现将HTML文件与字符串转换为图片

《Java实现将HTML文件与字符串转换为图片》在Java开发中,我们经常会遇到将HTML内容转换为图片的需求,本文小编就来和大家详细讲讲如何使用FreeSpire.DocforJava库来实现这一功... 目录前言核心实现:html 转图片完整代码场景 1:转换本地 HTML 文件为图片场景 2:转换 H

Java使用jar命令配置服务器端口的完整指南

《Java使用jar命令配置服务器端口的完整指南》本文将详细介绍如何使用java-jar命令启动应用,并重点讲解如何配置服务器端口,同时提供一个实用的Web工具来简化这一过程,希望对大家有所帮助... 目录1. Java Jar文件简介1.1 什么是Jar文件1.2 创建可执行Jar文件2. 使用java

SpringBoot实现不同接口指定上传文件大小的具体步骤

《SpringBoot实现不同接口指定上传文件大小的具体步骤》:本文主要介绍在SpringBoot中通过自定义注解、AOP拦截和配置文件实现不同接口上传文件大小限制的方法,强调需设置全局阈值远大于... 目录一  springboot实现不同接口指定文件大小1.1 思路说明1.2 工程启动说明二 具体实施2

Python中logging模块用法示例总结

《Python中logging模块用法示例总结》在Python中logging模块是一个强大的日志记录工具,它允许用户将程序运行期间产生的日志信息输出到控制台或者写入到文件中,:本文主要介绍Pyt... 目录前言一. 基本使用1. 五种日志等级2.  设置报告等级3. 自定义格式4. C语言风格的格式化方法

Java实现在Word文档中添加文本水印和图片水印的操作指南

《Java实现在Word文档中添加文本水印和图片水印的操作指南》在当今数字时代,文档的自动化处理与安全防护变得尤为重要,无论是为了保护版权、推广品牌,还是为了在文档中加入特定的标识,为Word文档添加... 目录引言Spire.Doc for Java:高效Word文档处理的利器代码实战:使用Java为Wo

SpringBoot日志级别与日志分组详解

《SpringBoot日志级别与日志分组详解》文章介绍了日志级别(ALL至OFF)及其作用,说明SpringBoot默认日志级别为INFO,可通过application.properties调整全局或... 目录日志级别1、级别内容2、调整日志级别调整默认日志级别调整指定类的日志级别项目开发过程中,利用日志