2023年01月07日报告

目录

1.Spring事务

2.SpringMVC


下面是Spring事务

1.Spring事务

事务的四大特征(ACID):

1.原子性(automicity)

事务的每个步骤 要么全部成功 要么全部失败

2.一致性(consistency)

不同的事务需要按顺序执行

3.隔离性(isolation)

事务之间不能相互干扰

4.持久性(durability)

如果系统出故障 保证数据的安全


假如张三有10000元 现在他要给李四转账1000元

张三10000元-1000元 = 9000元

李四3000元   + 1000元= 4000元

我们新建一个账户表

我们新建一个AccountDao接口 

 

  再建一个AccountService接口

 我们试试能不能转过去

如果张三转账成功 而李四收账失败

这就糟糕了

我们可以用Spring的事务管理器帮我们解决这个问题

使用Spring事务管理器之前 我们先在spring-bean.xml里加点东西

xmlns:tx="http://www.springframework.org/schema/tx"
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd

 <!-- 配置事务的消息增强 -->
    <tx:advice id="tAdvice" transaction-manager="txManager">
        <tx:attributes>
            <!-- 配置消息通知增强列表,监控的方法由上而下开始匹配,以及事务的传播特性 -->
            <tx:method name="find*" propagation="SUPPORTS" />
            <tx:method name="query*" propagation="SUPPORTS" />
            <tx:method name="add*" />
            <tx:method name="delete*" />
            <tx:method name="update*" />
            <tx:method name="*" />
        </tx:attributes>
    </tx:advice>

    <aop:config>
        <aop:pointcut id="pointcut" expression="execution(* com.langsin.service.impl.*.*(..))" />
        <!-- 配置切面,将消息通知切入到 service 层 -->
        <aop:advisor advice-ref="tAdvice" pointcut-ref="pointcut"/>
    </aop:config>

 这时我们再试试转账 

 


2.SpringMVC

框架原理

我们的用户请求首先到达 前端控制器(就是中间那个红色的)

根据请求的url地址 我们要找到那个要调用的处理器

于是我们就利用处理器映射器(左上角那个蓝的)完成映射 

返回一个Handler对象给我们的前端处理器

然后我们知道了要调用哪个处理器 我们就通过处理器适配器(右上角那个蓝的)进行调用处理器

处理器就来完成接收用户请求 拿到用户请求的参数 调用业务逻辑层 数据持久层等的功能

然后把用户的请求结果返回

处理器返回的是一个ModelAndView对象 把它交给处理器适配器 再交给前端控制器

前端控制器通过视图解析器 解析逻辑视图 拿到物理视图

最终将我们的Model(实体类)渲染到视图上去

前端控制器 

处理器适配器

处理器映射器

处理器

视图解析器

我们试着写一个SpringMVC的入门程序

新建一个Web工程

在pom.xml里加点依赖

   <!-- 引入 Spring 框架的 WebMVC 的依赖 -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>5.1.5.RELEASE</version>
    </dependency>
    <!--引入servlet的依赖-->
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>4.0.0</version>
    </dependency>
    <!--引入jsp的依赖-->
    <dependency>
      <groupId>javax.servlet.jsp</groupId>
      <artifactId>javax.servlet.jsp-api</artifactId>
      <version>2.3.1</version>
    </dependency>

    <!-- 引入 JSTL 标签库依赖 -->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
    </dependency>
  </dependencies>

 在往web.xml文件里加点东西

  <!-- 配置前端控制器 -->
  <servlet>
    <servlet-name>SpringMVC</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <!--配置初始化参数,为 contextConfigLocation 属性指定要加载的 SpringMVC 的配置文件,
    如果不配置,则默认加载 DispatcherServlet 的 ServletName 为名称的配置文件,例如:
    SpringMVC-servlet.xml
    -->
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:spring-beans.xml</param-value>
    </init-param>
  </servlet>

  <!-- 配置前端控制器的映射 -->
  <servlet-mapping>
    <servlet-name>SpringMVC</servlet-name>
    <url-pattern>*.action</url-pattern>
  </servlet-mapping>

我们在main文件夹下新建resources和java文件夹

在resources文件夹下新建spring-beans.xml文件

在里面我们加上

<?xml version="1.0" encoding="utf-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:p="http://www.springframework.org/schema/p"
       xmlns:c="http://www.springframework.org/schema/c"
       xmlns:util="http://www.springframework.org/schema/util"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/util
       http://www.springframework.org/schema/util/spring-util.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context.xsd
       http://www.springframework.org/schema/aop
       http://www.springframework.org/schema/aop/spring-aop.xsd
       http://www.springframework.org/schema/tx">

    <!-- 配置处理器映射器 -->
    <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" />

    <!-- 配置处理器适配器 -->
    <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>

    <!-- 配置 Handler 处理器 -->
    <bean name="/item_list.action" class="com.langsin.controller.BookController"/>

    <!-- 配置视图解析器 -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/jsp/" />
        <property name="suffix" value=".jsp" />
    </bean>

</beans>

我们新建一个Book实体类

 再新建一个BookController类 它实现了org.springframework.web.servlet.mvc.Controller这个接口

重写了里面的handleRequest()方法

 我们在WEB-INF文件夹下新建一个bookList.jsp

我们这时启动一下这个项目 发现弹出的页面是这样的

 我们在网址后面再加上个book_list.action 再按下回车

##THE END##

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蒂法挤挤挤

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值