SpringMVC接收数据

一、访问路径设置:

@RequestMapping注解的作用就是将请求的URL地址和处理请求的方式(handler方法)关联起来,建立映射关系;SpringMVC接收到指定的请求,就会来找到在映射关系中对应的方法来处理这个请求

1.精准路径匹配:

在@RequestMapping注解指定URL地址时,不使用任何通配符,按照请求地址进行精确匹配

@Controller
public class UserController {/*** 精准设置访问地址 /user/login*/@RequestMapping(value = {"/user/login"})@ResponseBodypublic String login(){System.out.println("UserController.login");return "login success!!";}/*** 精准设置访问地址 /user/register*/@RequestMapping(value = {"/user/register"})@ResponseBodypublic String register(){System.out.println("UserController.register");return "register success!!";}}

2.模糊路径匹配:

在@RequestMapping注解指定URL地址时,通过使用通配符,匹配多个类似的地址

@Controller
public class ProductController {/***  路径设置为 /product/*  *    /* 为单层任意字符串  /product/a  /product/aaa 可以访问此handler  *    /product/a/a 不可以*  路径设置为 /product/** *   /** 为任意层任意字符串  /product/a  /product/aaa 可以访问此handler  *   /product/a/a 也可以访问*/@RequestMapping("/product/*")@ResponseBodypublic String show(){System.out.println("ProductController.show");return "product show!";}
}

单层匹配和多层匹配:

/*:只能匹配URL地址中的一层,如果想准确匹配两层,那么就写“/*/*”以此类推。

/**:可以匹配URL地址中的多层。

其中所谓的一层或多层是指一个URL地址字符串被“/”划分出来的各个层次。这个知识点虽然对于@RequestMapping注解来说实用性不大,但是将来配置拦截器的时候也遵循这个规则。

3.类和方法级别区别:

@RequestMapping注解可以用于类级别和方法级别,它们之间的区别如下:

(1).设置到类级别:@RequestMapping注解可以设置在控制器类上,用于映射整个控制器的通用请求路径。这样,如果控制器中的多个方法都需要映射同一请求路径,就不需要在每个方法上都添加映射路径。

(2).设置到方法级别:@RequestMapping注解也可以单独设置在控制器方法上,用于更细粒度地映射请求路径和处理方法。当多个方法处理同一个路径的不同操作时,可以使用方法级别的 @RequestMapping注解进行更精细的映射。

//1.标记到handler方法
@RequestMapping("/user/login")
@RequestMapping("/user/register")
@RequestMapping("/user/logout")//2.优化标记类+handler方法
//类上
@RequestMapping("/user")
//handler方法上
@RequestMapping("/login")
@RequestMapping("/register")
@RequestMapping("/logout")

4.附带请求方式限制:

HTTP协议定义了八种请求方式,在SpringMVC中封装到了下面这个枚举类:

public enum RequestMethod {GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS, TRACE
}

默认情况下:@RequestMapping("/logout")任何请求方式都可以访问

如果需要特定指定:违背请求方式,会出现405异常

@Controller
public class UserController {/*** 精准设置访问地址 /user/login* method = RequestMethod.POST 可以指定单个或者多个请求方式!* 注意:违背请求方式会出现405异常!*/@RequestMapping(value = {"/user/login"} , method = RequestMethod.POST)@ResponseBodypublic String login(){System.out.println("UserController.login");return "login success!!";}/*** 精准设置访问地址 /user/register*/@RequestMapping(value = {"/user/register"},method = {RequestMethod.POST,RequestMethod.GET})@ResponseBodypublic String register(){System.out.println("UserController.register");return "register success!!";}}

5.进阶注解:

还有@RequestMapping的HTTP方法特定快捷方式变体:@GetMapping、@PostMapping、@PutMapping、@DeleteMapping、@PatchMapping

@RequestMapping(value="/login",method=RequestMethod.GET)
||
@GetMapping(value="/login")

进阶注解只能添加到handler方法上,无法添加到类上

6.常见配置问题:

出现原因:多个handler方法映射了同一个地址,导致SpringMVC在接收到这个地址的请求时该找哪个handler方法处理

二、接收参数:

1.param和json比较:

在HTTP请求中,可以选择不同的参数类型,如param类型和JSON类型。下面对这两种参数类型进行区别和对比:

(1).参数编码:param类型的参数会被编码为ASCII码。例如,假设name=john doe,则会被编码为 name=john%20doe。而JSON类型的参数会被编码为UTF-8。

(2).参数顺序:param类型的参数没有顺序限制。但是,JSON类型的参数是有序的。JSON采用键值对的形式进行传递,其中键值对是有序排列的。

(3).数据类型:param类型的参数仅支持字符串类型、数值类型和布尔类型等简单数据类型。而 JSON类型的参数则支持更复杂的数据类型,如数组、对象等。

(4).嵌套性:param类型的参数不支持嵌套。但是,JSON类型的参数支持嵌套,可以传递更为复杂的数据结构。

(5).可读性:param类型的参数格式比JSON类型的参数更加简单、易读。但是,JSON格式在传递嵌套数据结构时更加清晰易懂。

总的来说,param类型的参数适用于单一的数据传递,而JSON类型的参数则更适用于更复杂的数据结构传递。根据具体的业务需求,需要选择合适的参数类型。在实际开发中,常见的做法是在 GET 请求中采用param类型的参数,而在POST请求中采用JSON类型的参数传递。

2.param参数接收:

(1).直接接值:

客户端请求:

handler接收参数

只要形参数名和类型与传递参数相同,即可自动接收

@Controller
@RequestMapping("param")
public class ParamController {/*** 前端请求: http://localhost:8080/param/value?name=xx&age=18** 可以利用形参列表,直接接收前端传递的param参数!*    要求: 参数名 = 形参名*          类型相同* 出现乱码正常,json接收具体解决!!* @return 返回前端数据*/@GetMapping(value="/value")@ResponseBodypublic String setupForm(String name,int age){System.out.println("name = " + name + ", age = " + age);return name + age;}
}

(2).@RequestParam注解:

可以使用@RequestParam注释将Servlet请求参数(即查询参数或表单数据)绑定到控制器中的方法参数

@RequestParam使用场景:指定绑定的请求参数名、要求请求参数必须传递、为请求参数提供默认值

基本用法:

 /*** 前端请求: http://localhost:8080/param/data?name=xx&stuAge=18* *  使用@RequestParam注解标记handler方法的形参*  指定形参对应的请求参数@RequestParam(请求参数名称)*/
@GetMapping(value="/data")
@ResponseBody
public Object paramForm(@RequestParam("name") String name, @RequestParam("stuAge") int age){System.out.println("name = " + name + ", age = " + age);return name+age;
}

默认情况下,使用此批注的方法参数是必需的,但可以通过将@RequestParam批注的required标志设置为false 

如果没有没有设置非必须,也没有传递参数会出现:

将参数设置非必须,并且设置默认值:

@GetMapping(value="/data")
@ResponseBody
public Object paramForm(@RequestParam("name") String name, @RequestParam(value = "stuAge",required = false,defaultValue = "18") int age){System.out.println("name = " + name + ", age = " + age);return name+age;
}

(3).特殊场景接值:

a.一名多值:多选框,提交的数据的时候一个key对应多个值,可以使用集合进行接收

  /*** 前端请求: http://localhost:8080/param/mul?hbs=吃&hbs=喝**  一名多值,可以使用集合接收即可!但是需要使用@RequestParam注解指定*/@GetMapping(value="/mul")@ResponseBodypublic Object mulForm(@RequestParam List<String> hbs){System.out.println("hbs = " + hbs);return hbs;}

b.实体接收:Spring MVC是Spring框架提供的Web框架,允许开发者使用实体对象来接收HTTP请求中的参数。通过这种方式可以在方法内部直接使用对象的属性来访问请求参数,而不需要每个参数都写一遍 

定义一个用于接收参数的实体类:

public class User {private String name;private int age = 18;// getter 和 setter 略
}

在控制器中,使用实体对象接收:

@Controller
@RequestMapping("param")
public class ParamController {@RequestMapping(value = "/user", method = RequestMethod.POST)@ResponseBodypublic String addUser(User user) {// 在这里可以使用 user 对象的属性来接收请求参数System.out.println("user = " + user);return "success";}
}

在上述代码中,将请求参数name和age映射到实体类属性上,要求属性名必须等于参数名,否则无法映射

使用postman传递参数测试:

3.路径参数接收:

路径传递参数是一种在URL路径中传递参数的方式。在RESTful的Web应用程序中,经常使用路径传递参数来表示资源的唯一标识符或更复杂的表示方式。而Spring MVC框架提供了 @PathVariable注解来处理路径传递参数。@PathVariable注解允许将URL中的占位符映射到控制器方法中的参数。

如果我们想将/user/{id}路径下的{id}映射到控制器方法的一个参数中,则可以使用@PathVariable 注解来实现

 /*** 动态路径设计: /user/{动态部分}/{动态部分}   动态部分使用{}包含即可! {}内部动态标识!* 形参列表取值: @PathVariable Long id  如果形参名 = {动态标识} 自动赋值!*              @PathVariable("动态标识") Long id  如果形参名 != {动态标识} 可以通过指定动态标识赋值!** 访问测试:  /param/user/1/root  -> id = 1  uname = root*/
@GetMapping("/user/{id}/{name}")
@ResponseBody
public String getUser(@PathVariable Long id, @PathVariable("name") String uname) {System.out.println("id = " + id + ", uname = " + uname);return "user_detail";
}

4.json参数接收:

前端传递JSON数据时,Spring MVC框架可以使用@RequestBody注解来将JSON数据转换为 Java对象。@RequestBody注解表示当前方法参数的值应该从请求体中获取,并且需要指定value 属性来指示请求体应该映射到哪个参数上

(1).前端发送JSON数据的示例:

{"name": "张三","age": 18,"gender": "男"
}

(2).定义一个用于接收JSON数据的Java类:

public class Person {private String name;private int age;private String gender;// getter 和 setter 略
}

(3).在控制器中,使用@RequestBody注解来接收JSON数据,并将其转换为Java对象:

@PostMapping("/person")
@ResponseBody
public String addPerson(@RequestBody Person person) {// 在这里可以使用 person 对象来操作 JSON 数据中包含的属性return "success";
}

@RequestBody注解将请求体中的JSON数据映射到Person类型的person参数上,并将其作为一个对象来传递给addPerson()方法进行处理 

4.完善配置:

测试:

问题:

原因:不支持json数据类型处理、没有json类型处理的工具(jackson)

解决:

springmvc handlerAdpater配置json转化器,配置类需要明确

//TODO: SpringMVC对应组件的配置类 [声明SpringMVC需要的组件信息]//TODO: 导入handlerMapping和handlerAdapter的三种方式//1.自动导入handlerMapping和handlerAdapter [推荐]//2.可以不添加,springmvc会检查是否配置handlerMapping和handlerAdapter,没有配置默认加载//3.使用@Bean方式配置handlerMapper和handlerAdapter
@EnableWebMvc  //json数据处理,必须使用此注解,因为他会加入json处理器
@Configuration
@ComponentScan(basePackages = "com.atguigu.controller") //TODO: 进行controller扫描//WebMvcConfigurer springMvc进行组件配置的规范,配置组件,提供各种方法! 前期可以实现
public class SpringMvcConfig implements WebMvcConfigurer {}

pom.xml加入jackson依赖:

<dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.15.0</version>
</dependency>

三、接收Cookie数据:

可以使用@CookieValue注释将HTTP Cookie的值绑定到控制器中的方法参数

JSESSIONID=415A4AC178C59DACE0B2C9CA727CDD84
@GetMapping("/demo")
public void handle(@CookieValue("JSESSIONID") String cookie) { //...
}

四、接收请求头数据:

可以使用@RequestHeader批注将请求标头绑定到控制器中的方法参数

Host                    localhost:8080
Accept                  text/html,application/xhtml+xml,application/xml;q=0.9
Accept-Language         fr,en-gb;q=0.7,en;q=0.3
Accept-Encoding         gzip,deflate
Accept-Charset          ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive              300
@GetMapping("/demo")
public void handle(@RequestHeader("Accept-Encoding") String encoding, @RequestHeader("Keep-Alive") long keepAlive) { //...
}

五、原生Api对象操作:

Method Arguments :: Spring Framework

下表描述了支持的控制器方法参数:

Controller method argument 控制器方法参数Description
jakarta.servlet.ServletRequest, jakarta.servlet.ServletResponse请求/响应对象
jakarta.servlet.http.HttpSession强制存在会话。因此这样的参数永远不会为 null 
java.io.InputStream, java.io.Reader用于访问由Servlet API公开的原始请求正文
java.io.OutputStream, java.io.Writer用于访问由Servlet API公开的原始响应正文
@PathVariable接收路径参数注解
@RequestParam用于访问Servlet请求参数,包括多部分文件,参数值将转换为声明的方法参数类型
@RequestHeader用于访问请求标头,标头值将转换为声明的方法参数类型
@CookieValue用于访问Cookie,Cookie值将转换为声明的方法参数类型
@RequestBody用于访问HTTP请求正文。正文内容通过使用 HttpMessageConverter实现转换为声明的方法参数类型
java.util.Map, org.springframework.ui.Model, org.springframework.ui.ModelMap共享域对象,并在视图呈现过程中向模板公开
Errors, BindingResult验证和数据绑定中的错误信息获取对象

获取原生对象示例:

/*** 如果想要获取请求或者响应对象,或者会话等,可以直接在形参列表传入,并且不分先后顺序!* 注意: 接收原生对象,并不影响参数接收!*/
@GetMapping("api")
@ResponseBody
public String api(HttpSession session , HttpServletRequest request,HttpServletResponse response){String method = request.getMethod();System.out.println("method = " + method);return "api";
}

六、共享域对象操作:

1.属性共享域作用回顾:

在JavaWeb中,共享域指的是在Servlet中存储数据,以便在同一Web应用程序的多个组件中进行共享和访问。常见的共享域有四种:ServletContext、HttpSession、HttpServletRequest、PageContext

(1).ServletContext共享域:ServletContext对象可以在整个Web应用程序中共享数据,是最大的共享域。一般可以用于保存整个Web应用程序的全局配置信息,以及所有用户都共享的数据。在ServletContext中保存的数据是线程安全的。

(2).HttpSession共享域:HttpSession对象可以在同一用户发出的多个请求之间共享数据,但只能在同一个会话中使用。比如,可以将用户登录状态保存在HttpSession中,让用户在多个页面间保持登录状态。

(3).HttpServletRequest共享域:HttpServletRequest对象可以在同一个请求的多个处理器方法之间共享数据。比如可以将请求的参数和属性存储在HttpServletRequest中,让处理器方法之间可以访问这些数据。

(4).PageContext共享域:PageContext对象是在JSP页面Servlet创建时自动创建的。它可以在JSP 的各个作用域中共享数据,包括pageScope、requestScope、sessionScope、applicationScope等作用域。

共享域的作用是提供了方便实用的方式在同一Web应用程序的多个组件之间传递数据,并且可以将数据保存在不同的共享域中,根据需要进行选择和使用。

2.Request级别属性(共享)域:

(1).使用Model类型的形参:

@RequestMapping("/attr/request/model")
@ResponseBody
public String testAttrRequestModel(// 在形参位置声明Model类型变量,用于存储模型数据Model model) {// 我们将数据存入模型,SpringMVC 会帮我们把模型数据存入请求域// 存入请求域这个动作也被称为暴露到请求域model.addAttribute("requestScopeMessageModel","i am very happy[model]");return "target";
}

(2).使用ModelMap类型的形参:

@RequestMapping("/attr/request/model/map")
@ResponseBody
public String testAttrRequestModelMap(// 在形参位置声明ModelMap类型变量,用于存储模型数据ModelMap modelMap) {// 我们将数据存入模型,SpringMVC 会帮我们把模型数据存入请求域// 存入请求域这个动作也被称为暴露到请求域modelMap.addAttribute("requestScopeMessageModelMap","i am very happy[model map]");return "target";
}

(3).使用Map类型的形参:

@RequestMapping("/attr/request/map")
@ResponseBody
public String testAttrRequestMap(// 在形参位置声明Map类型变量,用于存储模型数据Map<String, Object> map) {// 我们将数据存入模型,SpringMVC 会帮我们把模型数据存入请求域// 存入请求域这个动作也被称为暴露到请求域map.put("requestScopeMessageMap", "i am very happy[map]");return "target";
}

(4).使用原生request对象:

@RequestMapping("/attr/request/original")
@ResponseBody
public String testAttrOriginalRequest(// 拿到原生对象,就可以调用原生方法执行各种操作HttpServletRequest request) {request.setAttribute("requestScopeMessageOriginal", "i am very happy[original]");return "target";
}

(5).使用ModelAndView对象:

@RequestMapping("/attr/request/mav")
public ModelAndView testAttrByModelAndView() {// 1.创建ModelAndView对象ModelAndView modelAndView = new ModelAndView();// 2.存入模型数据modelAndView.addObject("requestScopeMessageMAV", "i am very happy[mav]");// 3.设置视图名称modelAndView.setViewName("target");return modelAndView;
}

3.Session级别共享域:

@RequestMapping("/attr/session")
@ResponseBody
public String testAttrSession(HttpSession session) {//直接对session对象操作,即对会话范围操作!return "target";
}

4.Application级别共享域:

@Autowired
private ServletContext servletContext;@RequestMapping("/attr/application")
@ResponseBody
public String attrApplication() {servletContext.setAttribute("appScopeMsg", "i am hungry...");return "target";
}

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

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

相关文章

【微服务】Docker

一、Docker基础 1、依赖的兼容问题&#xff1a;Docker允许开发中将应用、依赖、函数库、配置一起打包&#xff0c;形成可移植镜像Docker应用运行在容器中&#xff0c;使用沙箱机制&#xff0c;相互隔离。 2、如何解决开发、测试、生产环境有差异的问题&#xff1a;Docker镜像…

【自用】管材流转项目前端重部署流程 vue2 webpackage4 vuecli4

一、配置 1.下载项目&#xff0c;使用 IDEA 打开&#xff0c;并配置 Nodejs 它提示我&#xff0c;需要 Node.js&#xff0c;因为 nodejs 14 的 installer 已经官网已经找不到了&#xff0c;使用 fnm 又太麻烦&#xff0c; 所以直接采用在 IDEA 中下载的方式就好了。 2.清除缓…

工程设计行业内外网文件交换解决方案:FileLink助力高效、安全的跨网协作

在工程设计行业&#xff0c;文件交换和信息共享是项目顺利推进的关键。尤其是涉及复杂的设计图纸、技术方案、合同文件等重要资料时&#xff0c;如何确保文件在内外网之间的高效、安全传输&#xff0c;直接影响到项目的进度和质量。FileLink正是为此而生&#xff0c;它为工程设…

Wwise SoundBanks内存优化

1.更换音频格式为Vorbis 2.停用多余的音频&#xff0c;如Random Container的随机脚步声数量降为2个 3.背景音乐勾选“Stream”。这样就让音频从硬盘流送到Wwise&#xff0c;而不是保存在内存当中&#xff0c;也就节省了内存 4.设置最大发声数Max Voice Instances 5.设置音频…

C 语言 “神秘魔杖”—— 指针初相识,解锁编程魔法大门(一)

文章目录 一、概念1、取地址操作符&#xff08;&&#xff09;2、解引用操作符&#xff08;*&#xff09;3、指针变量1、 声明和初始化2、 用途 二、内存和地址三、指针变量类型的意义1、 指针变量类型的基本含义2、 举例说明不同类型指针变量的意义 四、const修饰指针1、co…

Android 使用OpenGLES + MediaPlayer 获取视频截图

概述 Android 获取视频缩略图的方法通常有: ContentResolver: 使用系统数据库MediaMetadataRetriever: 这个是android提供的类&#xff0c;用来获取本地和网络media相关文件的信息ThumbnailUtils: 是在android2.2&#xff08;api8&#xff09;之后新增的一个&#xff0c;该类为…

博泽Brose EDI项目案例

Brose 是一家德国的全球性汽车零部件供应商&#xff0c;主要为全球汽车制造商提供机电一体化系统和组件&#xff0c;涵盖车门、座椅调节系统、空调系统以及电动驱动装置等。Brose 以其高质量的创新产品闻名&#xff0c;在全球拥有多个研发和生产基地&#xff0c;是全球第五大家…

python使用python-docx处理word

文章目录 一、python-docx简介二、基本使用1、新建与保存word2、写入Word&#xff08;1&#xff09;打开文档&#xff08;2&#xff09;添加标题&#xff08;3&#xff09;添加段落&#xff08;4&#xff09;添加文字块&#xff08;5&#xff09;添加图片&#xff08;6&#xf…

aws(学习笔记第十五课) 如何从灾难中恢复(recover)

aws(学习笔记第十五课) 如何从灾难中恢复 学习内容&#xff1a; 使用CloudWatch对服务器进行监视与恢复区域(region)&#xff0c;可用区(available zone)和子网(subnet)使用自动扩展(AutoScalingGroup) 1. 使用CloudWatch对服务器进行监视与恢复 整体架构 这里模拟Jenkins Se…

lwip raw、netcoon、socket三种接口编程的区别

目录 一、前言 二、LWIP 简介 三、LWIP RAW 编程 1.概念与原理 2.编程模型与流程 3.示例代码 4.优点与缺点 四、LWIP NETCONN 编程 1.概念与原理 2.编程模型与流程 3.示例代码 4.优点与缺点 五、LWIP SOCKET 编程 1.概念与原理 2.编程模型与流程 3.示例代码 …

【XGlassTerminal.js】快速 构建 炫酷 终端 网页 以及 Linux 模拟器 在线!!

XGlassTerminal.js XGlassTerminal.js 是一个用于构建前端终端样式的 JavaScript 库。它允许开发者轻松地创建一个具有终端风格的用户界面&#xff0c;并对用户输入的命令进行事件处理。 该库提供了丰富的功能&#xff0c;包括文本添加、命令处理、点击事件绑定等。 同时还支…

车辆传动系统的simulink建模与仿真,分析加速和刹车两个工况

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 车辆传动系统的simulink建模与仿真,分析加速和刹车两个工况。模型包括车辆模块&#xff0c;传动模块&#xff0c;发动机模块&#xff0c;换挡模块&#xff0c;刹车油门输入模块…

宝塔配置定时任务详解

文章目录 宝塔配置定时任务详解一、引言二、配置定时任务1、登录宝塔面板2、添加定时任务2.1、步骤 3、配置任务3.1、设置任务名称和执行周期3.2、设置执行命令 4、保存并测试 三、使用示例1、备份数据库2、清理日志文件 四、总结 宝塔配置定时任务详解 一、引言 在服务器管理…

【C++笔记】map和set的使用

【C笔记】map和set的深度剖析 &#x1f525;个人主页&#xff1a;大白的编程日记 &#x1f525;专栏&#xff1a;C笔记 文章目录 【C笔记】map和set的深度剖析前言一.set1.1 序列式容器和关联式容器1.2 set系列的使用1.3 set类的介绍1.4 set的构造和迭代器1.5 set的增删查1.6…

springboot+mybatis对接使用postgresql中PostGIS地图坐标扩展类型字段

方案一&#xff08;完全集成和自动解析&#xff09;&#xff1a; <dependency><groupId>org.postgresql</groupId><artifactId>postgresql</artifactId></dependency> 使用 org.postgresql.geometric包下的 PGpoint 类来接收数据库中POINT…

《只狼》运行时提示“mfc140u.dll文件缺失”是什么原因?“找不到mfc140u.dll文件”要怎么解决?教你几招轻松搞定

《只狼》运行时提示“mfc140u.dll文件缺失”的科普与解决方案 作为一名软件开发从业者&#xff0c;在游戏开发和维护过程中&#xff0c;我们经常会遇到各种运行时错误和系统报错。今天&#xff0c;我们就来探讨一下《只狼》这款游戏在运行时提示“mfc140u.dll文件缺失”的原因…

华为HarmonyOS 让应用快速拥有账号能力 -- 3 获取用户手机号

场景介绍 当应用对获取的手机号时效性要求不高时&#xff0c;可使用Account Kit提供的手机号授权与快速验证能力&#xff0c;向用户发起手机号授权申请&#xff0c;经用户同意授权后&#xff0c;获取到手机号并为用户提供相应服务。以下只针对Account kit提供的手机号授权与快…

linux环境人大金仓数据库修改密码

1.进入人大金仓安装目录 cd /home/opt/Kingbase/ES/V9/Server/bin2.连接数据库 ./ksql -U system -d mydb -h 127.0.0.1 -p 54321-u 用户名 -d 数据库名 -h ip地址 -p 端口号 3.修改密码 ALTER USER system WITH PASSWORD 密码;

使用R语言进行美国失业率时空分析(包括绘图)

今天写一篇利用R语言&#xff0c;针对面板数据的简单分析与绘图。让我们直接开始把。 一、数据准备 这次的示例数据非常简单&#xff0c;只有一个shp格式的美国区县矢量数据&#xff0c;我们在QGIS中打开数据查看一下它的属性表。事实上我们需要的数据都在属性表的字段中。 二…

单片机几大时钟源

在单片机中&#xff0c;MSI、HSI和HSE通常指的是用于内部晶振配置的不同功能模块&#xff1a; MSI (Master Oscillator System Interface)&#xff1a;这是最低级的一种时钟源管理单元&#xff0c;它控制着最基本的系统时钟&#xff08;SYSCLK&#xff09;&#xff0c;一般由外…