精华内容
下载资源
问答
  • ssm框架原理及流程
    千次阅读
    2020-08-08 16:01:57

    SSM框架原理以及流程

    • Spring:spring实现业务对象管理,也是各个组件的粘合剂,可以很好的管理各层之间的框架。

    • SpringMvc:负责请求的转发和视图管理,springmvc是spring的模块之一,所有整合的时候基本上可以实现100%零配置。

    • mybatis:作为数据对象的持久化引擎,用做处理数据交互,对jdbc做了透明化的封装,相比于hibernate这种全自动的框架,mybatis属于半自动化的,程序员可以自己写sql语句,相比于hibernate跟具灵活性。

    • 注意:对于ssm框架的整合,一定要明白SpringMvc的运行流程

    springmvc流程

    1.先由客户端发起一个请求到前端控制器(DispacherServlet)。注:所有的请求都必须经过DispacherServlet。
    2.然后DispacherServlet控制器查询HanderMapping映射,根据请求中的url转发到controller控制器处理。
    3.controller控制器调用业务逻辑层处理业务逻辑,结果返回给ModelAndView,视图处理器渲染视图
    4.DispacherSerclet查询视图解析器,找到ModelAndView指定的视图
    5.视图负责将结果显示到客户端
    在这里插入图片描述

    更多相关内容
  • SSM框架原理以及流程

    千次阅读 2021-08-28 21:57:03
    SSM框架原理以及流程一:原理二:开发流程1.新建maven项目2.配置整合文件2.1 配置pom.xml文件---引入依赖2.2 一:原理 二:开发流程 1.新建maven项目 2.配置整合文件 2.1 配置pom.xml文件—引入依赖 <...

    一:原理

    1.springmvc:
    1).客户端发送请求到DispacherServlet(分发器)

    2).由DispacherServlet控制器查询HanderMapping,找到处理请求的Controller

    3).Controller调用业务逻辑处理后,返回ModelAndView

    4).DispacherSerclet查询视图解析器,找到ModelAndView指定的视图

    5).视图负责将结果显示到客户端

    2.spring

    平时开发接触最多的估计就是IOC容器,它可以装载bean(也就是我们Java中的类,当然也包括service dao里面的),有了这个机制,我们就不用在每次使用这个类的时候为它初始化,很少看到关键字new。另外spring的aop,事务管理等等都是我们经常用到的。

    3.Mybatis

    mybatis是对jdbc的封装,它让数据库底层操作变的透明。mybatis的操作都是围绕一个sqlSessionFactory实例展开的。mybatis通过配置文件关联到各实体类的Mapper文件,Mapper文件中配置了每个类对数据库所需进行的sql语句映射。在每次与数据库交互时,通过sqlSessionFactory拿到一个sqlSession,再执行sql命令。

    4.各项作用:

    SSM框架是spring MVC ,spring和mybatis框架的整合,是标准的MVC模式,将整个系统划分为表现层,controller层,service层,DAO层四层

    使用spring MVC负责请求的转发和视图管理

    spring实现业务对象管理,mybatis作为数据对象的持久化引擎

    二:开发流程

    1.新建maven项目

    在这里插入图片描述

    2.配置整合文件

    2.1 配置pom.xml文件—引入依赖

     <properties>
    		<project.spring.version>5.3.9</project.spring.version>
    	</properties>
    
    
    
    	<dependencies>
    		<dependency>
    			<groupId>org.springframework</groupId>
    			<artifactId>spring-webmvc</artifactId>
    			<version>${project.spring.version}</version>
    		</dependency>
    		<dependency>
    			<groupId>org.springframework</groupId>
    			<artifactId>spring-orm</artifactId>
    			<version>${project.spring.version}</version>
    		</dependency>
    		<dependency>
    			<groupId>org.springframework</groupId>
    			<artifactId>spring-test</artifactId>
    			<version>${project.spring.version}</version>
    			<scope>test</scope>
    		</dependency>
    
    
    		<!-- mybatis -->
    
    
    		<dependency>
    			<groupId>org.mybatis</groupId>
    			<artifactId>mybatis</artifactId>
    			<version>3.5.7</version>
    		</dependency>
    		<dependency>
    			<groupId>mysql</groupId>
    			<artifactId>mysql-connector-java</artifactId>
    			<version>8.0.25</version>
    		</dependency>
    		<dependency>
    			<groupId>com.alibaba</groupId>
    			<artifactId>druid</artifactId>
    			<version>1.2.6</version>
    		</dependency>
    		<dependency>
    			<groupId>log4j</groupId>
    			<artifactId>log4j</artifactId>
    			<version>1.2.17</version>
    		</dependency>
    		<dependency>
    			<groupId>org.slf4j</groupId>
    			<artifactId>slf4j-api</artifactId>
    			<version>1.7.32</version>
    		</dependency>
    		<dependency>
    			<groupId>org.slf4j</groupId>
    			<artifactId>slf4j-log4j12</artifactId>
    			<version>1.7.32</version>
    		</dependency>
    		<dependency>
    			<groupId>org.mybatis</groupId>
    			<artifactId>mybatis-spring</artifactId>
    			<version>2.0.6</version>
    		</dependency>
    
    		<dependency>
    			<groupId>junit</groupId>
    			<artifactId>junit</artifactId>
    			<version>4.12</version>
    			<scope>test</scope>
    		</dependency>
    		<dependency>
    			<groupId>org.projectlombok</groupId>
    			<artifactId>lombok</artifactId>
    			<version>1.18.20</version>
    		</dependency>
    		<dependency>
    			<groupId>com.fasterxml.jackson.core</groupId>
    			<artifactId>jackson-databind</artifactId>
    			<version>2.12.4</version>
    		</dependency>
    	</dependencies>
    

    2.2 配置web.xml文件

    在这里插入图片描述

     
    	<context-param>
    		<param-name>contextConfigLocation</param-name>
    		<param-value>classpath:spring/mybatis/spring-*.xml</param-value>
    	</context-param>
    
    	<!-- 启动业务loc容器 -->
    	<listener>
    		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    	</listener>
      
      
      
      
         <!-- 启动mvc容器 -->
    	<servlet>
    		<servlet-name>springDispatcherServlet</servlet-name>
    		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    		<init-param>
    			<param-name>contextConfigLocation</param-name>
    			<!-- springmvc文件位置 -->
    			<param-value>classpath:spring/mvc/springmvc-*.xml</param-value>
    		</init-param>
    		<load-on-startup>1</load-on-startup>
    	</servlet>
    
    	<servlet-mapping>
    		<servlet-name>springDispatcherServlet</servlet-name>
    		<url-pattern>/*</url-pattern>
    	</servlet-mapping>
    

    2.3 配置springmvc

    在这里插入图片描述

      <!-- 扫描位置 -->
         <context:component-scan base-package="com.dyit.ssm.entity"/>
         <!-- 静态资源放行 -->
          <mvc:resources location="static/" mapping="static/**"/>
          <!-- 驱动注解 -->
          <mvc:annotation-driven/>
    

    2.4 配置mybatis

    1).配置spring-mybatis.xml
    在这里插入图片描述

       <!-- 管理范围 -->
          <context:component-scan base-package="com.dyit.ssm">
             <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>      
          </context:component-scan>
          
         <context:property-placeholder location="classpath:spring/mybatis/druid/druid.properties"/>
         
         <!-- 数据源 -->
         <bean id="dataSource"
    		class="com.alibaba.druid.pool.DruidDataSource">
    		<property name="url" value="${druid.url}" />
    		<property name="username" value="${druid.username}" />
    		<property name="password" value="${druid.password}" />
    		<property name="driverClassName" value="${druid.driver}" />
    	</bean>
    	
    	<!-- 容器创建SqlSessionFactory -->
    	<bean id="sqlSessionFactory"
    		class="org.mybatis.spring.SqlSessionFactoryBean">
    		<property name="dataSource" ref="dataSource" />
    		<property name="typeAliasesPackage" value="com.dyit.ssm.entity"/>
    		<property name="mapperLocations" value="classpath:spring/mybatis/mapper/*.mapper.xml"/>
    	</bean>
         
         <!-- 配置接口 -->
         <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    		<property name="basePackage" value="com.dyit.ssm.mapper"/>
    		<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
    	</bean>
    	
    	<!-- 事务 -->
    	<bean id="txManger" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    		<property name="dataSource" ref="dataSource"/>
    	</bean>
    	<!-- 让spring管理起来 -->
    	<tx:annotation-driven transaction-manager="txManger"/>
    

    2).配置druid.properties 数据源(数据库相关配置)
    在这里插入图片描述

    druid.url=jdbc:mysql://192.168.1.8:3306/book_db?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
    druid.username=root
    druid.password=12345
    druid.driver=com.mysql.cj.jdbc.Driver
    

    3.配置Book.mapper.xml(数据库的映射类)

    在此我以数据库的 增删改查 为例
    在这里插入图片描述

    <mapper namespace="com.dyit.ssm.mapper.IBookMapper">
    
    	<sql id="findAllBook">
    		SELECT * FROM book_tab
    	</sql>
    
    	<resultMap type="Book" id="BookMap">
    		<id property="id" column="book_id" />
    		<result property="title" column="book_title" />
    		<result property="price" column="book_price" />
    		<result property="author" column="book_author" />
    	</resultMap>
    
    
    	<insert id="save">
    		INSERT INTO book_tab(book_title,book_author,book_price)
    		VALUES(#{title},#{author},#{price})
    	</insert>
    	
    	<delete id="deleteById">
    		DELETE FROM book_tab WHERE book_id=#{id}
    	</delete>
    	
    	
    	<insert id="update">
    		UPDATE book_tab SET book_title=#{title},
    		book_author=#{author},
    		
    		book_price=#{price}
    		WHERE book_id=#{id}
    	</insert>
    
    	<select id="findAll" resultMap="BookMap">
    		<include refid="findAllBook" />
    	</select>
    
    
    	
    
    </mapper>
    

    3.java代码—测试

    1)写实体类
    在这里插入图片描述

    @Alias("Book")  //别名
    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    public class Book {
    	
    	private Integer id; //id
    	private String title;  //书名
    	private double price;  //价格
    	private String author;  //作者
    
    }
    

    2)写mapper类–对数据库的操作接口
    在这里插入图片描述

    @Mapper
    public interface IBookMapper {
       
    	void save(Book book);  //添加
    	void deleteById(int id); //根据id删除
    	void update(Book book); //修改
    	List<Book> findAll(); //全查询
    }
    

    3)写service接口
    在这里插入图片描述

    public interface IBookService {
    	
    	void save(Book book);  //添加
    	void deleteById(int id); //根据id删除
    	void update(Book book); //修改
    	List<Book> findAll();
    
    }
    

    4)写service接口的实现类
    在这里插入图片描述

    @Service
    public class BookServiceImpl implements IBookService{
    	@Autowired
    	private IBookMapper mapper; //注入mapper
    	@Override
    	public void save(Book book) { 
    		mapper.save(book);
    		
    	}
    
    	@Override
    	public void deleteById(int id) {
    		mapper.deleteById(id);
    		
    	}
    
    	@Override
    	public void update(Book book) {
    		mapper.update(book);
    		
    	}
    
    	@Override
    	public List<Book> findAll() {
    		
    		return mapper.findAll();
    	}
    
    }
    

    5)写service测试类
    在这里插入图片描述

    @RunWith(SpringJUnit4ClassRunner.class) //测试注解
    @ContextConfiguration(locations = "classpath:spring/mybatis/spring-mybatis.xml") //控制文件路径
    public class ssmTest {
    	
    	@Autowired
    	private IBookService ibs;  //注入service
    
    	@Test
    	public void testSave() {  //添加
    		ibs.save(new Book(4, "西游外传", 66.66, "孙悟空"));
    	}
    
    	@Test
    	public void testDeleteById() {  //删除
    		ibs.deleteById(2);;
    	}
    
    	@Test
    	public void testUpdate() {  //修改
    		ibs.save(new Book(4, "西游前传", 88.66, "唐三藏"));
    	}
    
    	@Test
    	public void testFindAll() {  //全查询
    		System.out.println(ibs.findAll());
    	}
    
    }
    

    6.以添加图书为例查看测试结果展示
    在这里插入图片描述
    注:因没有写日志配置类,故报红
    在这里插入图片描述
    成功添加进数据库

    展开全文
  • SSM框架原理流程及使用方法

    千次阅读 2021-08-12 20:39:48
    SSM框架是spring MVC ,spring和mybatis框架的整合,是标准的MVC模式,将整个系统划分为表现层,controller层,service层,DAO层四层 使用spring MVC负责请求的转发和视图管理 spring实现业务对象管理,mybatis...

    作用:

    ssm框架是spring MVC ,spring和mybatis框架的整合,是标准的MVC模式,将整个系统划分为表现层,controller层,service层,DAO层四层

    使用springMVC负责请求的转发和视图管理

    spring实现业务对象管理,mybatis作为数据对象的持久化引擎


    原理:

     

    SpringMVC:

    1.客户端发送请求到DispacherServlet(分发器)

    2.由DispacherServlet控制器查询HanderMapping,找到处理请求的Controller

    3.Controller调用业务逻辑处理后,返回ModelAndView

    4.DispacherSerclet查询视图解析器,找到ModelAndView指定的视图

    5.视图负责将结果显示到客户端

    Spring:我们平时开发接触最多的估计就是IOC容器,它可以装载bean(也就是我们Java中的类,当然也包括service dao里面的),有了这个机制,我们就不用在每次使用这个类的时候为它初始化,很少看到关键字new。另外spring的aop,事务管理等等都是我们经常用到的。

    Mybatis:mybatis是对jdbc的封装,它让数据库底层操作变的透明。mybatis的操作都是围绕一个sqlSessionFactory实例展开的。mybatis通过配置文件关联到各实体类的Mapper文件,Mapper文件中配置了每个类对数据库所需进行的sql语句映射。在每次与数据库交互时,通过sqlSessionFactory拿到一个sqlSession,再执行sql命令。


    使用方法:

    要完成一个功能:

    先写实体类entity,定义对象的属性,(可以参照数据库中表的字段来设置,数据库的设计应该在所有编码开始之前)。
    写Mapper.xml(Mybatis),其中定义你的功能,对应要对数据库进行的那些操作,比如 insert、selectAll、selectByKey、delete、update等。
    写Mapper.java,将Mapper.xml中的操作按照id映射成Java函数。
    写Service.java,为控制层提供服务,接受控制层的参数,完成相应的功能,并返回给控制层。
    写Controller.java,连接页面请求和服务层,获取页面请求的参数,通过自动装配,映射不同的URL到相应的处理函数,并获取参数,对参数进行处理,之后传给服务层。
    写JSP页面调用,请求哪些参数,需要获取什么数据。
    DataBase ===> Entity ===> Mapper.xml ===> Mapper.Java ===> Service.java ===> Controller.java ===> Jsp.  

    展开全文
  • SSM框架是spring MVC ,spring和mybatis框架的整合,是标准的MVC模式,将整个系统划分为controller层,service层,mapper层三层,通常称为三层架构 使用spring MVC负责请求的转发和视图管理 spring实现业务对象管理...
  • SSM框架原理和运行流程

    万次阅读 多人点赞 2019-06-30 10:27:05
    SSM框架的工作原理及运行流程SSM框架简介springMVCspringmybatis SSM框架简介 SSM(Spring+SpringMVC+MyBatis)框架集由Spring、MyBatis两个开源框架整合而成(SpringMVC是Spring中的部分内容)。SSM常作为数据源...

    SSM框架的工作原理及运行流程

    SSM框架简介

    SSM(Spring+SpringMVC+MyBatis)框架集由Spring、MyBatis两个开源框架整合而成(SpringMVC是Spring中的部分内容)。SSM常作为数据源较简单的web项目的框架。

    SpringMVC

    SpringMVC在项目中拦截用户请求,它的核心Servlet即DispatcherServlet承担中介的职责,将用户请求通过HandlerMapping去匹配Controller,Controller就是具体对应请求所执行的操作。
    SpringMVC框架运行流程

    1. 用户将请求发送至DispatcherServlet;
    2. DispatcherServlet收到请求查询一个或多个HandlerMapping,找到处理该请求的Handler;
    3. HandlerMapping根据请求找到相应的Handler,生成Handler对象返回给DispatcherServlet;
    4. DispatcherServlet通过HandlerAdapter调用Handler;
    5. Handler(Controller)调用业务逻辑(service)进行处理,处理完成返回ModelAndView;
    6. HandlerAdapter将Handler处理结果ModelAndView返回给DispatcherServlet;
    7. DispatcherServlet查询一个或多个ViewReslover(视图解析器),将ModelAndView传给指定的ViewReslover;
    8. ViewReslover解析后返回具体View给DispatcherServlet;
    9. DispatcherServlet对View进行渲染(将模型数据填充至视图中);
    10. DispatcherServlet响应用户,View将结果显示在客户端。
      流程大致如下图:
      在这里插入图片描述
      DispatcherServlet是整个Spring MVC的核心,它负责接收HTTP请求,组织协调Spring MVC的各个组成部分,其主要的工作有以下3项:
      a. 截获符合特定格式的URL请求;
      b. 初始化DispatcherServlet上下文对应的WebApplicationContext,并将其与业务层、持久层的WebApplicationContext建立关联;
      c. 初始化Spring MVC的各个组件,并配装到DispatcherServlet中。

    Spring

    Spring就像是整个项目中装配bean的大工厂,在配置文件中可以指定使用特定的参数去调用实体类的构造方法来实例化对象。也可以称之为项目中的粘合剂。
    Spring的核心思想是IOC(控制反转),即不再需要程序员去显式地new一个对象,而是让Spring框架帮你来完成这一切。IOC容器负责实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。Spring的目的就是让对象与对象(模块与模块)之间的关系没有通过代码来关联,都是通过配置类说明管理的(Spring根据这些配置,内部通过反射去动态的组装对象)。
    IOC容器代表的就是org.springframework.beans包中的BeanFactory接口,其提供了IOC容器的基本功能;而org.springframework.context包下的ApplicationContext接口扩展了BeanFactory,还提供了与Spring AOP集成、国际化处理、事件传播及提供不同层次的context实现。
    简单说,BeanFactory提供了IOC容器最基本功能,而ApplicationContext则增加了更多支持企业级功能支持。ApplicationContext完全继承BeanFactory,因而BeanFactory所具有的语义也适用于ApplicationContext。
    Spring运行流程

    1. 加载配置文件,ApplicationContext接口。配置文件中的bean的信息被加载在HashMap中,一个bean通常包括,id,class,property等,bean的id对应HashMap中的key,HashMap中的value就是bean。
    2. 调用getBean方法,getBean是用来获取applicationContext.xml文件里bean的,参数是bean的id。一般情况都会强制转换成对应的业务层(接口)。
    3. 调用业务层(接口实现)的方法。
      bean中的内容是怎么注入进去的?简单来讲,就是在实例化一个bean时,实际上就实例化了类,它通过反射调用类中set方法将事先保存在HashMap中的类属性注入到类中。这样就回到了我们Java最原始的地方,对象.属性,对象.方法。

    Mybatis

    Mybatis是对jdbc的封装,它让数据库底层操作变的透明。Mybatis的操作都是围绕一个sqlSessionFactory实例展开的。mybatis通过配置文件关联到各实体类的Mapper文件,Mapper文件中配置了每个类对数据库所需进行的sql语句映射。在每次与数据库交互时,通过sqlSessionFactory拿到一个sqlSession,再执行sql命令。
    Mybatis通过MapperProxy动态代理dao,也就是说,当执行自己写的dao里面的方法的时候,其实是对应的MapperProxy在代理。
    Mybatis运行原理

    1. 加载配置文件
      将SQL的配置信息加载成为一个个MappedStatement对象,包括了参数映射配置,执行的SQL语句,结果映射配置,存储在内存中。
    2. SQL解析
      当API接口层接收到调用请求时,会接收到传入SQL的ID和传入对象(可以是Map/JavaBean或者基本数据类型),Mybatis会根据SQL的ID找到对应的MappedStatement,然后根据传入的参数对象MappedStatement进行解析,解析后可以得到最终要执行的SQL语句和参数。
    3. SQL执行
      将最终得到的SQL和参数拿到数据库执行,得到操作数据库的结果。
    4. 结果映射
      将操作数据库的结果按照映射的配置进行转换,可以转换成HashMap/JavaBean或者基本数据类型,并将最终的结果返回。

    参考文章

    https://wenku.baidu.com/view/d482a094b04e852458fb770bf78a6529647d35c1.html
    https://blog.csdn.net/Song_JiangTao/article/details/82252852

    展开全文
  • SSM框架运行原理以及流程

    万次阅读 2017-08-07 10:09:22
    ssm框架:包括,springMVC -- spring -- mybatis springMVC 是基于MVC的框架 属于MVC框架的还有:Struts1 Struts2SpringMVC 获取值得方式: Struts1  actionForm(javabean中继承) ...
  • SSM框架原理及使用方法

    千次阅读 多人点赞 2018-04-03 17:23:55
    SSM框架是spring MVC ,spring和mybatis框架的整合,是标准的MVC模式,将整个系统划分为表现层,controller层,service层,DAO层四层使用spring MVC负责请求的转发和视图管理spring实现业务对象管理,mybatis作为...
  • SSM框架是spring MVC ,spring和mybatis框架的整合,是标准的MVC模式,将整个系统划分为表现层,controller层,service层,DAO层四层 使用spring MVC负责请求的转发和视图管理 spring实现业务对象管理,mybatis作为...
  • SSM三大框架工作流程原理详解

    千次阅读 2020-11-16 18:21:00
    作者:网络笨猪blog.csdn.net/lyfqyr/article/details/84552278一、Spring部分1、Spring的运行流程第一步:加载配置文件Applicat...
  • SSM框架原理

    千次阅读 2021-03-20 14:07:50
    SSM框架的分层理解 1.持久层 属于MyBatis模块,也就是Dao层(Mapper层)。主要负责与数据库进行交互设计,用来处理数据的持久化工作,简单来说就是进行CRUD操作。DAO层设计首先是设计DAO的接口,然后在Spring的xml...
  • Spring+SpringMVC+Mybatis SSM三大框架的运行流程原理、核心技术详解 理解很透彻, 入门五星推荐
  • 深入浅出SSM框架流程以及原理

    万次阅读 多人点赞 2020-01-02 09:53:14
    前言:学ssm框架已经有很长时间,今天来复习一下 图示: (1)Spring(对象工厂):平时开发接触最多的估计就是这个IOC容器,它可以装载bean(也就是Java中的类,当然也包括service、dao里面的),有了这个机制,就...
  • Spring+SpringMVC+Mybatis SSM三大框架的运行流程原理、核心技术详解 理解很透彻, 入门五星推荐
  • SSM框架架构,原理及整合流程(eclipse)

    千次阅读 2021-08-21 20:27:58
    SSM框架整合 一.SSM框架 1.1SSM四个分层架构的作用与联系 1.2 SSM框架原理 二.SSM框架整合流程 2.1SSM框架整合后完成一个功能的步骤 一.SSM框架 SSM:spring MVC ,spring和mybatis框架的整合,是标准的MVC模式,将...
  • 主要介绍了SSM框架前后端信息交互实现流程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • ssm框架原理

    2022-06-20 17:46:02
    框架原理
  • SSM框架的Web程序主要用到了三个技术: Spring:用到了注解和自动装配,就是Spring的两个精髓IOC(反向控制)和 AOP(面向切面编程)。SpringMVC:用到了MVC模型,将逻辑代码放到Controller层处理。Mybatis:用到了...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,575
精华内容 3,030
关键字:

ssm框架原理及流程

友情链接: gy888.zip