当前位置: 首页 > news >正文

二、SpringMVC注解式开发

1. @RequestMapping注解

此注解就是来映射服务器访问的路径

  1. 可加在方法上,是为此方法注册一个可以访问的名称(路径)

  2. 可以加在类上,相当于是包名(虚拟路径),区分不同类中相同的action的名称

  3. 可区分get请求和post请求

    package com.powernode.controller;import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;@Controller
    public class ReqAction {@RequestMapping(value = "/req.action", method = RequestMethod.GET)public String req(){System.out.println("处理get请求");return "main";}@RequestMapping(value = "/req.action", method = RequestMethod.POST)public String req1(){System.out.println("处理post请求");return "main";}
    }
    

SpringMVC优化

在这里插入图片描述

2.五种数据提交的方式

1.单个数据提交

在form表单中,对应的name即是Controller的参数

<h2>1.单个数据提交</h2>
<form action="${pageContext.request.contextPath}/one.action">姓名:<input name="myname"><br>年龄:<input name="age"><br><input type="submit" value="提交">
</form>
@RequestMapping("/one.action")
public String one(String myname, int age){System.out.println("myname=" + myname + ",age=" + (age + 100));//myname=张三,age=122return "main";
}

2.对象封装数据提交

在提交请求中,保证请求参数的名称与实体类中成员变量的名称一致,则可以自动创建对象,则可以自动提交数据,自动类型转换,自动封装数据到对象中.

<h2>2.对象封装数据提交</h2>
<form action="${pageContext.request.contextPath}/two.action">姓名:<input name="name"><br>年龄:<input name="age"><br><input type="submit" value="提交">
</form>
public class User {private String name;private int age;// 省略构造方法,set、get、toString方法
@RequestMapping("/two.action")
public String two(User user){System.out.println(user);//User{name='张三', age=25}return "main";
}

3.动态占位符提交

仅限于超链接或地址拦提交数据.一杠一值,一杠一大括号,斜杆+值提交,用斜杆+大括号接收数据,使用注解@PathVariable来解析. 用来解析路径中的请求参数

<h2>3.动态占位符提交</h2>
<a href="${pageContext.request.contextPath}/three/张三/22.action">动态提交</a>
@RequestMapping("/three/{name}/{uage}.action")
public String three(@PathVariable String name,@PathVariable("uage") int age){System.out.println("name=" + name + ",age=" + (age + 100));//name=张三,age=122return "main";
}

4.映射名称不一致

提交请求参数与action方法的形参的名称不一致,使用注解@RequestParam来解析 用来解决名称不一致的问题

<h2>4.参数名称不一致解决方案</h2>
<form action="${pageContext.request.contextPath}/four.action">姓名:<input name="name"><br>年龄:<input name="age"><br><input type="submit" value="提交">
</form>
@RequestMapping("/four.action")
public String four(@RequestParam("name") String uname,@RequestParam("age") int uage){System.out.println("uname=" + uname + ",uage=" + (uage + 100));//uname=张三,uage=122return "main";
}

5.手工提取数据

<h2>5.手工提取数据</h2>
<form action="${pageContext.request.contextPath}/five.action">姓名:<input name="name"><br>年龄:<input name="age"><br><input type="submit" value="提交">
</form>
@RequestMapping("/five.action")
public String five(HttpServletRequest request){String name = request.getParameter("name");int age = Integer.parseInt(request.getParameter("age"));System.out.println("name=" + name + ",age=" + (age + 100));//name=张三,age=122return "main";
}

3.action方法的返回值

  1. String:客户端资源的地址,自动拼接前缀和后缀.还可以屏蔽自动拼接字符串,可以指定返回的路径.
  2. Object:返回json格式的对象.自动将对象或集合转为json.使用的jackson工具进行转换,必须要添加jackson依赖.一般用于ajax请求.
  3. void:无返回值,一般用于ajax请求.
  4. 基本数据类型,用于ajax请求.
  5. ModelAndView:返回数据和视图对象,现在用的很少.

完成ajax请求访问服务器,返回学生集合.

  1. 添加jackson依赖

    <!--jackson依赖-->
    <dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.14.2</version>
    </dependency>
    
  2. 在webapp目录下新建js目录,添加jQuery函数库
    jquery-3.3.1.js

  3. 编写index.jsp页面

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head><title>ajax</title><%--导入jQuery的函数库--%><script src="js/jquery-3.3.1.js"></script>
    </head>
    <body>
    <br>
    <a href="javascript:showStu()">访问服务器返回学生集合</a><br>
    <div id="mydiv">等待服务器返回数据</div>
    </body>
    <script type="text/javascript">function showStu() {// 使用jQuery封装的ajax()方法发送请求$.ajax({url:"${pageContext.request.contextPath}/list.action",type:"get",dataType:"json",success:function (stuList) {var s = "";$.each(stuList,function (i,stu){s += stu.name + "----" + stu.age + "<br>";});// 回显数据$("#mydiv").html(s)}});}
    </script>
    </html>
    
  4. 在springmvc.xml文件中添加注解驱动<mvc:annotationdriven/>,用来解析@ResponseBody注解

    <?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:context="http://www.springframework.org/schema/context"xmlns:mvc="http://www.springframework.org/schema/mvc"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd"><!--包扫描--><context:component-scan base-package="com.powernode.controller"/><!--添加注解驱动 处理ajax请求--><mvc:annotation-driven></mvc:annotation-driven>
    </beans>
    
  5. 在action上添加注解@ResponseBody,用来处理ajax请求

    package com.powernode.controller;import com.powernode.pojo.Student;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.ResponseBody;
    import java.util.ArrayList;
    import java.util.List;@Controller
    public class StudentListAction {@RequestMapping("/list.action")// 解析ajax请求@ResponseBodypublic List<Student> list(){List<Student> list = new ArrayList<>();Student stu1 = new Student("张三",22);Student stu2 = new Student("李四",23);Student stu3 = new Student("王五",24);list.add(stu1);list.add(stu2);list.add(stu3);// SpringMVC框架负责将集合转为json数组return list;}
    }
    

4.四种跳转方式

本质还是两种跳转:请求转发和重定向,衍生出四种是请求转发页面,转发action,重定向页面,重定向action
请求转发:是基于服务端的跳转,因此显示的URL还是xx.action
重定向:是基于客户端的跳转,等同于重新访问一个网址,所以URL为正常
在这里插入图片描述

<a href="${pageContext.request.contextPath}/one.action">1.请求转发页面</a><br>
<a href="${pageContext.request.contextPath}/two.action">2.请求转发action</a><br>
<a href="${pageContext.request.contextPath}/three.action">3.重定向页面</a><br>
<a href="${pageContext.request.contextPath}/four.action">4.重定向action</a><br>
package com.powernode.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;@Controller
public class JumpAction {@RequestMapping("/one.action")public String one(){System.out.println("请求转发页面跳转");return "main";// 默认使用视图解析器拼接前缀后缀进行页面跳转}@RequestMapping("/two.action")public String two(){System.out.println("请求转发action跳转");// forward: 可以屏蔽前缀和后缀的拼接,实现请求转发跳转return "forward:/other.action";}@RequestMapping("/three.action")public String three(){System.out.println("重定向页面");// redirect: 可以屏蔽前缀和后缀的拼接,实现重定向跳转return "redirect:/admin/main.jsp";}@RequestMapping("/four.action")public String four(){System.out.println("重定向action");return "redirect:/other.action";}
}

5.SpringMVC默认的参数类型

不需要去创建,直接拿来使用即可.

  1. HttpServletRequest
  2. HttpServletResponse
  3. HttpSession
  4. Model
  5. Map
  6. ModelMap
<a href="${pageContext.request.contextPath}/data.action?name=zzz">访问服务器,进行数据携带跳转</a>
@Controller
public class DataAction {@RequestMapping("/data.action")public String data(HttpServletRequest request,HttpServletResponse response,HttpSession session,Model model,Map map,ModelMap modelMap){// 做一个数据,传到main.jsp页面User user = new User("张三", 22);// 传递数据request.setAttribute("requestUser", user);session.setAttribute("sessionUser", user);model.addAttribute("modelUser", user);map.put("mapUser", user);modelMap.addAttribute("modelMapUser", user);return "main";// 请求转发方式跳转}
}
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>main</title>
</head>
<body>
<h2>main 显示数据</h2>
requestUser:${requestUser}<br>
sessionUser:${sessionUser}<br>
modelUser:${modelUser}<br>
mapUser:${mapUser}<br>
modelMapUser:${modelMapUser}<br>
从index.jsp页面传过来的数据${param.name}
</body>
</html>

注意:Map,Model,ModelMap和request一样,都使用请求作用域进行数据传递.所以服务器端的跳转必须是请求转发.

6.日期处理

  1. 日期的提交处理

    • 单个日期处理
      使用注解@DateTimeFormat,此注解必须搭配springmvc.xml文件中的<mvc:annotationdriven标签>
      <form action="${pageContext.request.contextPath}/mydate.action">日期:<input type="date" name="mydate"><br><input type="submit" value="提交">
      </form>
      
      @RequestMapping("/mydate.action")
      public String mydate(@DateTimeFormat(pattern = "yyyy-MM-dd") Date mydate){System.out.println(mydate);return "main";
      }
      
    • 类中全局日期处理
      注册一个注解,用来解析本类中所有的日期类型,自动转换
      @InitBinder
      public void initBinder(WebDataBinder dataBinder){dataBinder.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"), true));
      }
      @RequestMapping("/mydate.action")
      public String mydate(Date mydate){System.out.println(mydate);return "main";
      }
      
  2. 日期的显示处理
    在页面上显示好看的日期,必须使用JSTL.
    步骤:

    1. 添加依赖jstl
      tomcat10

      <!--jstl依赖--><dependency><groupId>org.glassfish.web</groupId><artifactId>jakarta.servlet.jsp.jstl</artifactId><version>2.0.0</version></dependency>
      
    2. 在页面上导入标签库
      如果是单个日期对象,直接转为格式化的字符串进行显示.
      如果是list中的实体类对象的成员变量是日期类型,则必须使用jstl进行显示.

      <%--导入jstl核心标签库--%>
      <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
      <%--导入jstl格式化标签库--%>
      <%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
      
    3. 使用标签显示数据

      <h2>学生集合</h2>
      <table width="800px" border="1"><tr><th>姓名</th><th>生日</th></tr><c:forEach items="${list}" var="stu"><tr><td>${stu.name}</td><td>${stu.birthday}-----<fmt:formatDate value="${stu.birthday}" pattern="yyyy-MM-dd"></fmt:formatDate></td></tr></c:forEach>
      </table>
      

7.<mvc:annotation-driven/>标签的使用

<mvc:annotation-driven/>会自动注册两个bean,分别为DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter。是springmvc为@controller分发请求所必须的。除了注册了这两个bean,还提供了很多支持。

  1. 支持使用ConversionService 实例对表单参数进行类型转换;
  2. 支持使用 @NumberFormat 、@DateTimeFormat;
  3. 注解完成数据类型的格式化;
  4. 支持使用 @RequestBody 和 @ResponseBody 注解;
  5. 静态资源的分流也使用这个标签;

8.资源在WEB-INF目录下

此目录下的动态资源,不可直接访问,只能通过请求转发的方式进行访问

package com.powernode.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;@Controller
public class WebInfAction {@RequestMapping("showIndex.action")public String showIndex(){System.out.println("访问index.jsp");return "index";}@RequestMapping("showMain.action")public String showMain(){System.out.println("访问main.jsp");return "main";}
}

相关文章:

二、SpringMVC注解式开发

1. RequestMapping注解 此注解就是来映射服务器访问的路径 可加在方法上,是为此方法注册一个可以访问的名称(路径) 可以加在类上,相当于是包名(虚拟路径),区分不同类中相同的action的名称 可区分get请求和post请求 package com.powernode.controller;import org.springframe…...

Java容器面试知识点总结

容器 java容器有哪些&#xff1f; String&#xff0c;数组以及Java.util 下面的集合类 List&#xff1a;存放有序&#xff0c;列表存储&#xff0c;元素可重复 ArrayList LinkedList Vector Set:无序&#xff0c;元素不可重复 HashSet TreeSet Map: 无序&#xff0c;元素可重复…...

增长:2023 IT运维发展趋势前瞻

根据IDC和智研咨询数据等平台公开数据显示&#xff0c;从2018年至2022年&#xff0c;全球ITOM行业市场规模以8.58%的年均复合增长率高速增长。其中&#xff0c;中国ITOM市场在2020-2023年的年复合增长率为10.7%&#xff0c;到2023年市场规模将达到165.7亿元。012022中国IT运维解…...

自己定义typescript的类型声明文件xx.d.ts

****内容预警***菜鸟新手内容&#xff0c;大佬请绕道&#xff0c;不对的请指出我们在使用typescript的使用&#xff0c;如果安装一个包没有相应的类型声明文件&#xff0c;ts的类型检查就会报错&#xff0c;所以我们经常会安装npm包对应的types类型声明包&#xff0c;比如uuid …...

数据分析方法及名词解释总结_(面试2)

1、用户画像 1.1、什么是用户画像&#xff1f;如何构建用户画像&#xff1f; - 知乎提到用户画像&#xff0c; 很多人都可能存在的错误认知&#xff0c;即把用户画像简单理解成用户各种特征&#xff0c;比如说姓名、性别、…https://www.zhihu.com/question/372802348/answer/2…...

【FLY】Java知识点总结

目录认识Java概念图名词解释历史版本基础知识编程规范关键字数据类型运算符数组Stringequals与流程控制引用数据结构常用数据结构HashMapLinkedHashMapWeakHashMapIdentityHashMapEnumMapTreeMapCopyOnWriteArrayList面向对象类反射注解IO异常线程EffectiveJava8JVM运行时数据区…...

SpringMVC-0307

三、RequestMapping注解1、RequestMapping注解的功能从注解名称上我们可以看到&#xff0c;RequestMapping注解的作用就是将请求和处理请求的控制器方法关联起来&#xff0c;建立映射关系。SpringMVC 接收到指定的请求&#xff0c;就会来找到在映射关系中对应的控制器方法来处理…...

华为OD机试 - 九宫格按键输入(C 语言解题)【独家】

最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南)华为od机试,独家整理 已参加机试人员的实战技巧文章目录 使用说明本期题目:九宫格按…...

Oracle 11g RAC群集部署

Oracle 11g RAC群集部署 1.环境介绍&#xff1a; 操作系统&#xff1a;Oracle Enterprise Linux 6.5 Oracle数据库&#xff1a;Oracle 11.2.0.4 集群软件&#xff1a;Oracle Grid Infrastructure 11.2.0.4 2.所需介质&#xff1a; p13390677_112040_Linux-x86-64_1of7 p133…...

【C++、C++11】列表初始化、右值引用

文章目录&#x1f4d6; 前言1. 统一的列表初始化1.1 { } 花括号初始化&#xff1a;1.2 std::initializer_list&#xff1a;2. 右值引用2.1 什么是左值和右值&#xff1a;2.2 右值的分类&#xff1a;2.3 左值引用和右值引用的比较2.3 右值的使用场景&#xff1a;2.4 新的类功能&…...

CMU15-445 Project.3总结

在线测试 Project #3 - Query Execution 以下是Project #3的网址&#xff0c;2022FALL的Project #3是实现一个查询执行&#xff0c;实现一系列算子&#xff0c;用于实现数据库内的SQL计算。项目中的 Query Execution 主要分为三个任务&#xff1a; Access Method Executors…...

002+limou+HTML——(2)HTML文档

000、前言 一般来说一个静态网页拥有四种元素&#xff1a;文字、图片、超链接、音频和视频&#xff08;注意&#xff0c;即使在web网页中植入Javascript语言&#xff0c;也不一定是动态网页&#xff0c;真正的动态网页判断标准&#xff1a;是否和服务器产生交互&#xff09; …...

红外传感器模块与 Arduino 连接

红外传感器模块与 Arduino 连接 原文地址 Arduino 红外传感器接口 红外**接近传感器或红外传感器它发射红外光以感知周围环境&#xff0c;并可用于检测物体的运动。由于这是一个无源传感器&#xff0c;它只能测量红外辐射。如果您曾经尝试过设计避障机器人或任何其他基于接近…...

NC xml配置文件不能生产java文件

在NC开发过程中&#xff0c;新增、或修改了xml文件&#xff0c;在开发工具eclipse中生成或重新生成Java文件&#xff0c;发现生成不了相对应的Java文件。如下图&#xff0c;选中xml文件后&#xff0c;右键点击SpringXml to Java 这种情况其实一般都是xml配置文件有问题&#…...

华为OD机试 - 五键键盘(C 语言解题)【独家】

最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南)华为od机试,独家整理 已参加机试人员的实战技巧文章目录 使用说明本期题目:五键键盘…...

Kubernetes Service简介

Service 之前我们了解了Pod的基本用法&#xff0c;我们也了解到Pod的生命是有限的&#xff0c;死亡过后不会复活了。我们后面学习到的RC和Deployment可以用来动态的创建和销毁Pod。尽管每个Pod都有自己的IP地址&#xff0c;但是如果Pod重新启动了的话那么他的IP很有可能也就变…...

【c++类与对象 】

目录&#xff1a;前言一、基础引入1.类的定义2.类的权限3.类的封装4.类的实例化5.计算类对象的大小结构体内存对齐规则空类的大小二、this指针this引入this指针的特性经典例题三、类的六个默认成员函数1、构造 && 析构构造函数析构函数2、拷贝 && 赋值拷贝构造…...

【C++】内联函数auto范围for循环nullptr

&#x1f3d6;️作者&#xff1a;malloc不出对象 ⛺专栏&#xff1a;C的学习之路 &#x1f466;个人简介&#xff1a;一名双非本科院校大二在读的科班编程菜鸟&#xff0c;努力编程只为赶上各位大佬的步伐&#x1f648;&#x1f648; 目录前言一、内联函数1.1 内联函数概念1.2…...

运维效率狂飙,都在告警管理上

随着数字化进程的加速&#xff0c;企业IT设备和系统越来越多&#xff0c;告警和流程中断风险也随之增加。每套系统和工具发出的警报&#xff0c;听起来像是一场喧嚣的聚会&#xff0c;各自谈论不同的话题。更糟糕的是&#xff0c;安全和运维团队正在逐渐丧失对告警的敏感度&…...

【每日随笔】中国当前社会阶层 ( 技术无关 | 随便写写 )

文章目录一、阶层划分根据收入划分的阶层根据分工逻辑划分根据权利划分二、根据社会地位和掌握的资源划分的阶层三、赚钱的方式四、如何进入高阶层看了一个有意思的视频 , 讲的是中国当前的社会阶层 , 感觉好有道理 , 搜索了一些资料 ; 参考资料 : 关于中国的社会阶层社会在分…...

Marvis 1+5 智能体协作架构深度解析:六大 Agent 各司何职?底层又如何“对话“?

Marvis 15 智能体协作架构深度解析&#xff1a;六大 Agent 各司何职&#xff1f;底层又如何"对话"&#xff1f; 前言 2026 年 5 月 20 日&#xff0c;腾讯正式上线了操作系统级 AI 助手马维斯&#xff08;Marvis&#xff09;。它不走传统 AI 助手的"对话框&quo…...

创业团队如何利用Token Plan套餐优化AI应用开发成本

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 创业团队如何利用Token Plan套餐优化AI应用开发成本 对于小型创业团队而言&#xff0c;在开发AI应用时&#xff0c;模型API的调用成…...

Trivy容器镜像漏洞扫描原理与企业级实战指南

1. 为什么是Trivy&#xff1f;不是Clair、Notary&#xff0c;也不是Docker Scout的内置扫描 我第一次在CI流水线里看到镜像扫描失败的告警邮件时&#xff0c;正蹲在客户现场调试一个K8s集群的网络策略。邮件标题写着“critical vulnerability in nginx:1.21.6-alpine”&#x…...

慕课助手:让在线学习效率提升300%的开源浏览器插件

慕课助手&#xff1a;让在线学习效率提升300%的开源浏览器插件 【免费下载链接】mooc-assistant 慕课助手 浏览器插件(Chrome/Firefox/Opera) 项目地址: https://gitcode.com/gh_mirrors/mo/mooc-assistant 你是否曾因网课平台的机械重复操作浪费宝贵时间&#xff1f;根…...

LogExpert实战指南:5大核心功能深度探索Windows日志分析高效方案

LogExpert实战指南&#xff1a;5大核心功能深度探索Windows日志分析高效方案 【免费下载链接】LogExpert Windows tail program and log file analyzer. 项目地址: https://gitcode.com/gh_mirrors/lo/LogExpert LogExpert是一款专为Windows平台设计的图形化日志分析工具…...

3步搞定无人机影像处理:ODM免费开源工具完全指南

3步搞定无人机影像处理&#xff1a;ODM免费开源工具完全指南 【免费下载链接】ODM A command line toolkit to generate maps, point clouds, 3D models and DEMs from drone, balloon or kite images. &#x1f4f7; 项目地址: https://gitcode.com/gh_mirrors/od/ODM …...

天赐范式第52天:当我和伙伴的对话触发了——苏格拉底和柏拉图对话的哲学——之所以敢把东西亮出来,不是只能写NS方腔流论文;写算子流测算伏羲64卦方圆图;AGI意识跃迁;黑洞质量测算;分子筛选系统等等

伙伴最后一句话绝对没有内涵我&#xff0c;我不是苏格拉底&#xff0c;伙伴也不是柏拉图天赐范式&#xff1a;苏格拉底和柏拉图的对话哲学有什么历史意义伙伴&#xff1a;苏格拉底和柏拉图的对话哲学&#xff0c;在历史上完成了一件前所未有的事&#xff1a;它把“追问”本身变…...

中兴光猫工厂模式解锁终极指南:3分钟掌握隐藏功能

中兴光猫工厂模式解锁终极指南&#xff1a;3分钟掌握隐藏功能 【免费下载链接】zteOnu A tool that can open ZTE onu device factory mode 项目地址: https://gitcode.com/gh_mirrors/zt/zteOnu 还在为光猫功能受限而烦恼吗&#xff1f;zteOnu是一款专为中兴光猫设备设…...

VisualGGPK2:流放之路游戏资源编辑器的完整使用指南

VisualGGPK2&#xff1a;流放之路游戏资源编辑器的完整使用指南 【免费下载链接】VisualGGPK2 Library for Content.ggpk of PathOfExile (Rewrite of libggpk) 项目地址: https://gitcode.com/gh_mirrors/vi/VisualGGPK2 VisualGGPK2是一款专为《流放之路》(Path of Ex…...

ChatGPT记忆功能深度解析(2024官方API文档未公开的7个底层机制)

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;ChatGPT记忆功能怎么用 ChatGPT 的记忆功能&#xff08;Memory&#xff09;允许模型在对话中持续记住用户提供的关键信息&#xff0c;从而实现更连贯、个性化的交互体验。该功能并非默认开启&#xff0c;需用户…...