【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

相关文章

idea maven编译报错Java heap space的解决方法

《ideamaven编译报错Javaheapspace的解决方法》这篇文章主要为大家详细介绍了ideamaven编译报错Javaheapspace的相关解决方法,文中的示例代码讲解详细,感兴趣的... 目录1.增加 Maven 编译的堆内存2. 增加 IntelliJ IDEA 的堆内存3. 优化 Mave

Java String字符串的常用使用方法

《JavaString字符串的常用使用方法》String是JDK提供的一个类,是引用类型,并不是基本的数据类型,String用于字符串操作,在之前学习c语言的时候,对于一些字符串,会初始化字符数组表... 目录一、什么是String二、如何定义一个String1. 用双引号定义2. 通过构造函数定义三、St

springboot filter实现请求响应全链路拦截

《springbootfilter实现请求响应全链路拦截》这篇文章主要为大家详细介绍了SpringBoot如何结合Filter同时拦截请求和响应,从而实现​​日志采集自动化,感兴趣的小伙伴可以跟随小... 目录一、为什么你需要这个过滤器?​​​二、核心实现:一个Filter搞定双向数据流​​​​三、完整代码

SpringBoot利用@Validated注解优雅实现参数校验

《SpringBoot利用@Validated注解优雅实现参数校验》在开发Web应用时,用户输入的合法性校验是保障系统稳定性的基础,​SpringBoot的@Validated注解提供了一种更优雅的解... 目录​一、为什么需要参数校验二、Validated 的核心用法​1. 基础校验2. php分组校验3

Java Predicate接口定义详解

《JavaPredicate接口定义详解》Predicate是Java中的一个函数式接口,它代表一个判断逻辑,接收一个输入参数,返回一个布尔值,:本文主要介绍JavaPredicate接口的定义... 目录Java Predicate接口Java lamda表达式 Predicate<T>、BiFuncti

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA

Spring Security方法级安全控制@PreAuthorize注解的灵活运用小结

《SpringSecurity方法级安全控制@PreAuthorize注解的灵活运用小结》本文将带着大家讲解@PreAuthorize注解的核心原理、SpEL表达式机制,并通过的示例代码演示如... 目录1. 前言2. @PreAuthorize 注解简介3. @PreAuthorize 核心原理解析拦截与

一文详解JavaScript中的fetch方法

《一文详解JavaScript中的fetch方法》fetch函数是一个用于在JavaScript中执行HTTP请求的现代API,它提供了一种更简洁、更强大的方式来处理网络请求,:本文主要介绍Jav... 目录前言什么是 fetch 方法基本语法简单的 GET 请求示例代码解释发送 POST 请求示例代码解释

Java图片压缩三种高效压缩方案详细解析

《Java图片压缩三种高效压缩方案详细解析》图片压缩通常涉及减少图片的尺寸缩放、调整图片的质量(针对JPEG、PNG等)、使用特定的算法来减少图片的数据量等,:本文主要介绍Java图片压缩三种高效... 目录一、基于OpenCV的智能尺寸压缩技术亮点:适用场景:二、JPEG质量参数压缩关键技术:压缩效果对比

Java调用C++动态库超详细步骤讲解(附源码)

《Java调用C++动态库超详细步骤讲解(附源码)》C语言因其高效和接近硬件的特性,时常会被用在性能要求较高或者需要直接操作硬件的场合,:本文主要介绍Java调用C++动态库的相关资料,文中通过代... 目录一、直接调用C++库第一步:动态库生成(vs2017+qt5.12.10)第二步:Java调用C++