【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中流式并行操作parallelStream的原理和使用方法

《Java中流式并行操作parallelStream的原理和使用方法》本文详细介绍了Java中的并行流(parallelStream)的原理、正确使用方法以及在实际业务中的应用案例,并指出在使用并行流... 目录Java中流式并行操作parallelStream0. 问题的产生1. 什么是parallelS

Java中Redisson 的原理深度解析

《Java中Redisson的原理深度解析》Redisson是一个高性能的Redis客户端,它通过将Redis数据结构映射为Java对象和分布式对象,实现了在Java应用中方便地使用Redis,本文... 目录前言一、核心设计理念二、核心架构与通信层1. 基于 Netty 的异步非阻塞通信2. 编解码器三、

SpringBoot基于注解实现数据库字段回填的完整方案

《SpringBoot基于注解实现数据库字段回填的完整方案》这篇文章主要为大家详细介绍了SpringBoot如何基于注解实现数据库字段回填的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以了解... 目录数据库表pom.XMLRelationFieldRelationFieldMapping基础的一些代

一篇文章彻底搞懂macOS如何决定java环境

《一篇文章彻底搞懂macOS如何决定java环境》MacOS作为一个功能强大的操作系统,为开发者提供了丰富的开发工具和框架,下面:本文主要介绍macOS如何决定java环境的相关资料,文中通过代码... 目录方法一:使用 which命令方法二:使用 Java_home工具(Apple 官方推荐)那问题来了,

Java HashMap的底层实现原理深度解析

《JavaHashMap的底层实现原理深度解析》HashMap基于数组+链表+红黑树结构,通过哈希算法和扩容机制优化性能,负载因子与树化阈值平衡效率,是Java开发必备的高效数据结构,本文给大家介绍... 目录一、概述:HashMap的宏观结构二、核心数据结构解析1. 数组(桶数组)2. 链表节点(Node

Java AOP面向切面编程的概念和实现方式

《JavaAOP面向切面编程的概念和实现方式》AOP是面向切面编程,通过动态代理将横切关注点(如日志、事务)与核心业务逻辑分离,提升代码复用性和可维护性,本文给大家介绍JavaAOP面向切面编程的概... 目录一、AOP 是什么?二、AOP 的核心概念与实现方式核心概念实现方式三、Spring AOP 的关

详解SpringBoot+Ehcache使用示例

《详解SpringBoot+Ehcache使用示例》本文介绍了SpringBoot中配置Ehcache、自定义get/set方式,并实际使用缓存的过程,文中通过示例代码介绍的非常详细,对大家的学习或者... 目录摘要概念内存与磁盘持久化存储:配置灵活性:编码示例引入依赖:配置ehcache.XML文件:配置

Java 虚拟线程的创建与使用深度解析

《Java虚拟线程的创建与使用深度解析》虚拟线程是Java19中以预览特性形式引入,Java21起正式发布的轻量级线程,本文给大家介绍Java虚拟线程的创建与使用,感兴趣的朋友一起看看吧... 目录一、虚拟线程简介1.1 什么是虚拟线程?1.2 为什么需要虚拟线程?二、虚拟线程与平台线程对比代码对比示例:三

vite搭建vue3项目的搭建步骤

《vite搭建vue3项目的搭建步骤》本文主要介绍了vite搭建vue3项目的搭建步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录1.确保Nodejs环境2.使用vite-cli工具3.进入项目安装依赖1.确保Nodejs环境

Nginx搭建前端本地预览环境的完整步骤教学

《Nginx搭建前端本地预览环境的完整步骤教学》这篇文章主要为大家详细介绍了Nginx搭建前端本地预览环境的完整步骤教学,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录项目目录结构核心配置文件:nginx.conf脚本化操作:nginx.shnpm 脚本集成总结:对前端的意义很多