SpringMVC:创建一个简单的SpringMVC框架

目录

一、框架介绍

两个重要的xml文件 

SpringMVC执行流程 

二、Vscode搭建SpringMVC框架

1、maven创建webapp原型项目

2、pom.xml下添加springmvc的相关依赖

3、在web.xml配置

 4、springmvc.xml的配置

5、编写Controller控制器类

6、 编写JSP界面

7、项目结构图 


一、框架介绍

两个重要的xml文件 

        web.xml文件是Java Web应用程序的部署描述文件,用于配置Web应用程序的部署信息和配置参数。

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"><display-name>spring_mvc</display-name><!-- springMVC的前端控制器,此处为名称显示在Web服务器管理页面的 --><servlet><servlet-name>springmvc</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!-- 如果以xxx-servlet.xml命名,并且位于/WEB-INF下,则服务器会自动识别,
不需要配置 init-param--><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:springmvc.xml</param-value></init-param><!--init-param配置是告诉服务器DispatcherServlet的配置文件在哪,此处是告诉服务器文件在src/classes下去找该配置文件 --><load-on-startup>1</load-on-startup><!-- 立即加载 --></servlet><servlet-mapping><servlet-name>springmvc</servlet-name><url-pattern>/</url-pattern></servlet-mapping><!-- 此处为url匹配器,这里/表示处理所有请求,可以设置一些固定格式,来过滤非法请求。 -->
</web-app>

         springmvc.xml文件,该文件是springmvc的配置文件。该文件的名称可以自定,文件位置甚至可以放在任意位置,但这样做就要在web.xml配置相关文件信息和文件位置。

        具体配置方法:要配置init-param元素,param-value值就要修改为相对于web.xml所在的路径。上面web.xml的param-value值,说明DispatcherServlet的配置文件位于/项目名/src/resources目录下,此目录一般放java代码,打包后会该配置文件会存在于\项目名\WEB-INF\classes的目录下。

        如果不想配置init-param元素,则要将springmvc的配置文件命名为xxx-servlet.xml,并且文件位于WEB-INF文件夹下。

<?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:aop="http://www.springframework.org/schema/aop"xmlns:tx="http://www.springframework.org/schema/tx"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.0.xsdhttp://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop-3.0.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx-3.0.xsdhttp://www.springframework.org/schema/context     http://www.springframework.org/schema/context/spring-context-3.0.xsd"><!-- 配置controller --><bean id="login" name="/loginController" class="com.hfxt.controller.LoginController"></bean><!-- 配置映射处理器 :name来映射寻找controller (默认存在,可以省略不配置,如果用到另外两种需要配置) --><bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean><!-- 配置视图解析器 如何把handler 方法返回值解析为实际的物理视图  根据控制器返回的字符串拼接成jsp路径:/WEB-INF/page/xx.jsp --><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/page/"/><!-- 前缀 --><property name="suffix" value=".jsp"/><!-- 后缀 --></bean>
</beans>

SpringMVC执行流程 

 01、用户发送url请求到前端控制器DispatcherServlet拦截进行处理。

        以下是具体的DispatcherServlet前端拦截器配置,DispatcherServlet的配置文件可以放在项目的任意目录

在web.xml文件下配置:

<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

        该语句配置了Spring MVC框架中的DispatcherServlet。

        其中org.springframework.web.servlet.DispatcherServlet是DispatcherServlet的类路径。

02、DispatcherServlet收到请求调用HandlerMapping(处理器映射器) 

        HandlerMapping的实现一共有多种。以下BeanNameUrlHandlerMapping是Spring MVC 框架中最简单的通过name映射寻找controller的 HandlerMapping 实现。

在springmvc.xml文件里配置:

<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>

<!-- 配置映射处理器 :name来映射寻找controller (默认存在,可以省略不配置,如果用到另外两种需要配置) -->

HandlerMapping的实现方式还有

        SimpleUrlHandlerMappingControllerClassNameHandlerMapping

03、HandlerMapping找到具体的处理器Handler(查找XML配置或注解配置),返回执行链。

         XML配置:在springmvc.xml文件里进行相关Controller类的配置

<bean id="login" name="/loginController" class="com.hfxt.controller.LoginController"></bean>

         注释配置:在Controller类中使用@Controller@RequestMapping等注解来指定请求路径与处理方法的映射关系。Spring框架会扫描这些注解,并根据它们建立映射关系,从而将请求路由到相应的Controller处理方法上。

@Controller
@RequestMapping("/example")
public class ExampleController {@RequestMapping("/hello")public String hello(Model model) {model.addAttribute("message", "Hello, Spring MVC!");return "helloPage";}
}

04、HandlerAdapter(处理器适配器)经过适配调用具体的处理器(Handler/Controller)

        HandlerAdapter适配器会找到合适的方法调用处理器Handler(因为Handler的定义方式不止一种)

05、Controller执行完成返回ModelAndView对象。

06、HandlerAdapter将Controller执行结果ModelAndView返回给DispatcherServlet。

07、DispatcherServlet将ModelAndView传给ViewReslover(视图解析器) 

        ViewReslover具体要在springmvc的配置文件里进行如下语句的具体配置,设置前缀和后缀。

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/page/"/><!-- 前缀 --><property name="suffix" value=".jsp"/><!-- 后缀 -->
</bean>
08、ViewReslover解析ModelAndView后返回具体View(视图)给DispatcherServlet。
09、DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中),再响应给用户。

二、Vscode搭建SpringMVC框架

1、maven创建webapp原型项目

参考:http://t.csdnimg.cn/fg98g

resources的lib文件夹放相关jar包

java文件夹下放相关java代码 

2、pom.xml下添加springmvc的相关依赖

<dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.3.30</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.3.30</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.0.1</version><scope>provided</scope></dependency>

只有添加完相关依赖(相当于引入相关jar包)后,才能配置springmvc。 

3、在web.xml配置

一、配置拦截器DispatcherServlet

<servlet-name>myspringmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

二、配置springmvc配置文件的地址 

<init-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/springmvc.xml</param-value></init-param>

 三、配置servlet映射 

​<servlet-mapping><servlet-name>myspringmvc</servlet-name><url-pattern>/</url-pattern></servlet-mapping>

 四、配置欢迎界面

<welcome-file-list><welcome-file>index.jsp</welcome-file>
</welcome-file-list>

最终配置代码:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"><display-name>spring_mvc</display-name><!-- springMVC的前端控制器 --><servlet><servlet-name>myspringmvc</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!--init-param配置文件的位置 如果springmvc.xml是以xxx-servlet.xml命名,并且位于/WEB-INF下则不需要配置 --><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:springmvc.xml</param-value></init-param><load-on-startup>1</load-on-startup><!-- 立即加载 --></servlet><servlet-mapping><servlet-name>myspringmvc</servlet-name><url-pattern>/</url-pattern></servlet-mapping><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list>
</web-app>

 4、springmvc.xml的配置

        我们在web.xml文件下配置了springmvc.xml的路径。该文件位于以下文件夹(resources)下。也可以自定目录,根目录从web项目起。

        在配置springmvc之前,我们要生成其xml文件,eclipse可以通过可视化自动生成,而在vscode中我们可以手动创建并导入版本约束命名空间

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:mvc="http://www.springframework.org/schema/mvc"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:aop="http://www.springframework.org/schema/aop"xmlns:tx="http://www.springframework.org/schema/tx"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/mvchttp://www.springframework.org/mvc/spring-mvc-4.0.xsdhttp://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.0.xsdhttp://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop-3.0.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx-3.0.xsdhttp://www.springframework.org/schema/context     http://www.springframework.org/schema/context/spring-context-3.0.xsd"></beans>

        然后我们就能在beans标签里配置具体内容。 

一、配置映射处理器

常见的映射处理器有:BeanNameUrlHandlerMapping,SimpleUrlHandlerMapping、ControllerClassNameHandlerMapping等。

​<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>

二、配置视图解析器 :

                用于将控制器返回的字符串拼接成可访问的url路径(前提是真实存在)。

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/"/><property name="suffix" value=".jsp"/>
</bean>

三、配置包扫描器:用于组件的自动发现和自动装配。

<context:component-scan base-package="com.edu"/>
<mvc:annotation-driven/>
<!--启用对处理mvc注解的支持-->

最终配置代码:  

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:mvc="http://www.springframework.org/schema/mvc"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:aop="http://www.springframework.org/schema/aop"xmlns:tx="http://www.springframework.org/schema/tx"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/mvchttp://www.springframework.org/mvc/spring-mvc-4.0.xsdhttp://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-3.0.xsdhttp://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop-3.0.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx-3.0.xsdhttp://www.springframework.org/schema/context     http://www.springframework.org/schema/context/spring-context-3.0.xsd"><!-- 配置controller<bean id="login" name="/loginController" class="com.hfxt.controller.LoginController"></bean> --><!-- 1、配置映射处理器 :name来映射寻找controller (默认存在,可以省略不配置,如果用到另外两种需要配置) --><context:component-scan base-package="com.edu"/><mvc:annotation-driven/><bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/page/"/><property name="suffix" value=".html"/></bean>
</beans>

5、编写Controller控制器类

        在java文件下创建包,并编写控制器类Controller,此类继承了抽象类AbstractController,覆写其方法。

package com.edu;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;@Controller
public class Calculate extends AbstractController {@RequestMapping("/calculate")@Overrideprotected ModelAndView handleRequestInternal(HttpServletRequest req, HttpServletResponse resp) throws Exception {ModelAndView mav=new ModelAndView();String x="";for(int i=1;i<=5;i++){String t=req.getParameter(Integer.toString(i));x+=t;}Integer result= count(x);System.out.println(result);mav.setViewName("result");mav.addObject("result", result);return mav;}protected Integer count(String x){String ture_result="ACCBD";Integer cnt=0;for(int i=0;i<x.length();i++){if(ture_result.charAt(i)==x.charAt(i)){cnt++;}}return cnt*20;}}

6、 编写JSP界面

JSP的页面文件放在webapp的文件夹下 。

 result.jsp

使用el表达式提取ModelAndView传递的值。

<?xml version="1.0" encoding="UTF-8" ?>
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Insert title here</title>
</head>
<body><h1 color="red">您本次的测试成绩为:${result}分</h1></body>
</html>

index.jsp

用表单属性action发送数据到/examination/calculate上。

<%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*" errorPage="" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>C语言考试</title>
</head><body>
<form action="/examination/calculate" method="post"><p>1、以下哪个是C语言整形数据类型</p>
<p><input name="1" type="radio" value="A" />A、int <input name="1" type="radio" value="B" />B、char<input name="1" type="radio" value="C" />C、float<input name="1" type="radio" value="D" />D、double
</p>
<p>2、以下哪个是C语言浮点型数据类型</p>
<p><input name="2" type="radio" value="A" />A、int<input name="2" type="radio" value="B" />B、char<input name="2" type="radio" value="C" />C、float<input name="2" type="radio" value="D" />D、double 
</p>
<p>3、以下哪个是C语言中格式正确的标识符</p>
<p><input name="3" type="radio" value="A" />A、int
<input name="3" type="radio" value="B" />B、1ch
<input name="3" type="radio" value="C" />C、word
<input name="3" type="radio" value="D" />D、()!@#¥ 
</p>
<p>4、以下哪个是C语言的文件后缀</p>
<p><input name="4" type="radio" value="A" />A、.c<input name="4" type="radio" value="B" />B、.cpp<input name="4" type="radio" value="C" />C、.java<input name="4" type="radio" value="D" />D、.py
</p>
<p>5、以下哪个是C语言中的一维数组</p>
<p><input name="5" type="radio" value="A" />A、int a;<input name="5" type="radio" value="B" />B、chara;<input name="5" type="radio" value="C" />C、float a [] [] ;<input name="5" type="radio" value="D" />D、double a [] ;
</p><input type="submit"/>
</form>
</body>
</html>

7、项目结构图 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/19941.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VS2017中使用qt翻译家,除ui界面外其他用tr包裹的字符串在翻译家中显示为乱码

1、ui界面中的中文,可以正常显示 2、其他用tr包裹的字符串,显示为乱码 3、解决 改为utf8保存。 然后更新翻译文件,重新打开发现已经ok了。 参考博客: https://blog.csdn.net/zhou714534957/article/details/124948822 https://blog.csdn.net/weixin_52689816/article/d…

PAT-1004 成绩排名(java实现)

这一关感觉还没第三关难&#xff0c;思路很清晰 题目 1004 成绩排名 读入 n&#xff08;>0&#xff09;名学生的姓名、学号、成绩&#xff0c;分别输出成绩最高和成绩最低学生的姓名和学号。 输入格式&#xff1a; 每个测试输入包含 1 个测试用例&#xff0c;格式为 第 1 行…

【算法】宵暗的妖怪

✨题目链接&#xff1a; 宵暗的妖怪 ✨题目描述 露米娅作为宵暗的妖怪&#xff0c;非常喜欢吞噬黑暗。这天&#xff0c;她来到了一条路上&#xff0c;准备吞噬这条路上的黑暗。这条道路一共被分为n 部分&#xff0c;每个部分上的黑暗数量为ai 。露米娅每次可以任取 连续的 未被…

赚钱其实没有秘密,多琢磨一下不丢人

为什么学了很多知识还是挣不到钱&#xff1f; 挣不到钱&#xff0c;是因为你不够稀缺&#xff1b;挣钱太少&#xff0c;是因为你不懂杠杆&#xff0c;用杠杆撬动稀缺&#xff0c;个人价值自然水涨船高。 学富五车&#xff0c;为何财库依旧空空&#xff1f;怎样才能提高挣钱的…

在全志H616核桃派开发板上配置SSH远程终端方法详解

熟悉指令用户可以对已经联网的核桃派进行局域网SSH远程终端控制&#xff0c;方便使用自己的PC对核桃派远程进行各种指令操作。 普通用户&#xff08;默认&#xff09; 账号&#xff1a;pi ; 密码&#xff1a;pi管理员账户 账号&#xff1a;root ; 密码&#xff1a;root 在这之…

在Android Studio中使用谷歌Gemini代码助手

今天在做android开发的时候&#xff0c;一个项目使用到了gradle8.0&#xff0c;但是我的Android Studuio根本不支持&#xff0c;无可奈何只能从小蜜蜂版本升级了水母 | 2023.3.1版本&#xff0c;但突然发现AS已经集成了Gemini助手。 首先我们需要下载这个版本的&#xff1a; h…

2.5Bump Mapping 凹凸映射

一、Bump Mapping 介绍 我们想要在屏幕上绘制物体的细节&#xff0c;从尺度上讲&#xff0c;一个物体的细节分为&#xff1a;宏观、中观、微观宏观尺度中其特征会覆盖多个像素&#xff0c;中观尺度只覆盖几个像素&#xff0c;微观尺度的特征就会小于一个像素宏观尺度是由顶点或…

《java数据结构》--一篇解决二叉搜索树!!

&#x1f638;二叉搜索树的概念 二叉搜索树又名二叉排序树&#xff0c;一般具有以下性质&#xff1a; 若它的左子树不为空&#xff0c;则左子树上所有节点的值都小于根节点的值若它的右子树不为空&#xff0c;则右子树上所有节点的值都大于根节点的值它的左右子树也分别为二叉…

61. UE5 RPG 实现敌人近战攻击技能和转向攻击

在前面&#xff0c;我们实现了敌人的AI系统&#xff0c;敌人可以根据自身的职业进行匹配对应的攻击方式。比如近战战士会靠近目标后进行攻击然后躲避目标的攻击接着进行攻击。我们实现了敌人的AI行为&#xff0c;但是现在还没有实现需要释放的技能&#xff0c;接下来&#xff0…

通过定时器和脉冲控制LED

目录 一、定时器 &#xff08;一&#xff09;定时器简介 &#xff08;二&#xff09;定时器类型 1、常见定时器 2、定时器的主要功能 3、常规定时器 &#xff08;三&#xff09;定时器配置 1、定时器标准外设库接口函数 2、定时器标准外设库配置 二、PWM &#xff08…

匿名函数(lambda)

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 匿名函数是指没有名字的函数&#xff0c;应用在需要一个函数&#xff0c;但是又不想费神去命名这个函数的场合。通常情况下&#xff0c;这样的函数只…

【Qt】Qt界面美化指南:深入理解QSS样式表的应用与实践

文章目录 前言&#xff1a;1. 背景介绍2. 基本语法3. QSS 设置方式3.1. 设置全局样式3.2. 从文件加载样式表3.3. 使用 Qt Designer 编辑样式 总结&#xff1a; 前言&#xff1a; 在当今这个视觉至上的时代&#xff0c;用户界面&#xff08;UI&#xff09;的设计对于任何软件产…

智能制造案例专题|与MongoDB一起解锁工业4.0转型与增长的无限潜力!

MongoDB 智能制造 数字化技术的洪流在各个产业链的主干和枝节涌现。在工业制造领域&#xff0c;能否通过数字化技术实现各生产要素、生产环节之间的紧密配合&#xff0c;高效规划、管理整个生产流程&#xff0c;是企业提升韧性、赢得竞争的关键。随着工业4.0的深入发展和智能…

高级Java开发者的自我修养:深入剖析JVM垃圾回收机制及面试要点

在探索Java虚拟机&#xff08;JVM&#xff09;的奥秘过程中&#xff0c;垃圾回收机制&#xff08;GC&#xff09;是一个不可或缺的话题&#xff0c;尤其在面对大型应用和系统优化时显得尤为重要。JVM的自动内存管理是Java编程语言中一项革命性的特性&#xff0c;它大大简化了程…

AI盒子在智慧加油站的应用

方案背景 为规范加油站作业&#xff0c;保障人民生命财产安全&#xff0c;《加油站作业安全规范》&#xff08;AQ 3010-2007&#xff09;中第五条规定&#xff1a;卸油作业基本要求&#xff0c;明确防静电、防雷电、防火、人员值守、禁止其他车辆及非工作人员进入卸油区。 痛点…

RocketMQ学习(2) 深入学习

RokcetMQ的介绍和基础知识见这篇博客——RocketMQ学习(1) 快速入门 本篇为上一篇的深入学习&#xff0c;很多基础知识不再赘述。 目录 消息重复消费问题(去重;幂等)布隆过滤器 重试机制死信消息 SpringBoot集成RocketMQ集成SpringBoot发送不同消息模式(同步消息)异步消息单向消…

使用el-tab,el-tab-pane循环使用循环后不显示下划线问题

在vue项目中使用element-UI el-tab里的el-tab-pane是循环出来的&#xff0c;但是循环出来后选中tab不显示下划线了 文章目录 问题问题展示效果问题代码问题原因 解决方案解决后效果解决方案1代码 解决方案2代码 问题 问题展示效果 问题代码 <el-tabs v-model"activeNa…

音量的对数表示与浮点数表示

音量用浮点数&#xff08;float&#xff09;和对数&#xff08;logarithmic scale&#xff09;表示各有特点和应用场景 浮点数&#xff1a;直接使用线性刻度表示音量&#xff0c;例如在0.0&#xff08;最小音量&#xff09;到1.0&#xff08;最大音量&#xff09;的范围内。对…

『 Linux 』缓冲区(万字)

文章目录 &#x1f9a6; 什么是缓冲区&#x1f9a6; 格式化输入/输出&#x1f9a6; 刷新策略&#x1fab6; 块缓冲(fully buffered)&#x1fab6; 无缓冲(unbuffered)&#x1fab6; 行缓冲(line buffered) &#x1f9a6; 现象解释&#x1f9a6; exit()与_exit()&#x1f9a6; 进…

list 的实现

目录 list 结点类 结点类的构造函数 list的尾插尾删 list的头插头删 迭代器 运算符重载 --运算符重载 和! 运算符重载 * 和 -> 运算符重载 list 的insert list的erase list list实际上是一个带头双向循环链表,要实现list,则首先需要实现一个结点类,而一个结点需要…