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

SpringMvc注解

SpringMvc注解        

        

1 SpringMcv基础环境搭建


如果已经有SpringMvc项目直接跳过这个就可以了

  1 新建项目

2.修改文件为packaging 为war包

<packaging>war</packaging>
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.xi</groupId><artifactId>spring-mvc01</artifactId><version>1.0-SNAPSHOT</version><packaging>war</packaging><properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><!--导入依赖--><!--springMvc依赖--><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>6.1.12</version></dependency><!--logback-classic日志--><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.5.7</version></dependency><!--servlet-api--><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>4.0.1</version></dependency><dependency><groupId>jakarta.servlet</groupId><artifactId>jakarta.servlet-api</artifactId><version>6.1.0</version></dependency></dependencies></project>

4.刷新依赖

5.新建webapp文件目录

6.创建spring的config文件

         spring-mvc01===>src ===> main == resources ==>新建config.xml

7.修改config.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: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.xsdhttp://www.springframework.org/schema/contexthttp://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="org.xi"/><!--开启springmvc注解--><mvc:annotation-driven/></beans>

8.打开project Structue

下面方法二选一

  • File===>Project Structure
  • Ctrl+Alt+Shift+S

9.创建web.xml文件

        Modules ===> spring-mvc01 ==> Web ===> + ===>修改路径====>添加src\main\webapp\

C:\Users\Administrator\IdeaProjects\demo1\spring-mvc01\src\main\webapp\WEB-INF\web.xml

10.修改web.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"version="4.0"><!--配置servlet--><servlet><servlet-name>myServlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!---配置spring的配置文件位置----><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:config.xml</param-value></init-param><!--初始化提前--><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>myServlet</servlet-name><url-pattern>/*</url-pattern></servlet-mapping>
</web-app>

11.创建MyController类

  1. 新建controller包
  2. 创建MyController类(注:这个名字随意)
  3. 添加(@Controller注解)
package org.xi.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;@Controller
@RequestMapping(produces = {"text/html;charset=UTF-8"})
public class MyController { @RequestMapping( value = "/" ) @ResponseBodypublic String index(){return "你好啊";}
}

注:

        @Controller   ===> 标注控制层

        @RequestMapping("/index") ===>  映射请求到指定的处理方法上

        @ResponseBody ===> 把数据直接写入响应体中

        @RequestMapping{ produces ={"text/html;charset=UTF-8"}} 这个是解决给前端页面乱码问题的

        @RequestMapping( value="/")   映射返回给前端的路径

        

12.为项目配置tomcat

流程如下:

        Current File ===> Edit Configation ==>add new ===> Tomcat Server ==>local==>Configure===>Fix ===>选择一个war包

下面是图的详解流程:

修改路径

13.测试

        访问http://localhost:8080/

基础环境准备完毕


2.SpringMvc注解


1.@RequestMapping

解释

value属性用于请求映射该地址

method属性 有{GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS, TRACE}

  1. GET:请求获取由请求的URI标识的资源。通常用于检索数据。
  2. HEAD:与GET相同,但是服务器不返回响应体,只返回头部信息。这可以用来检查资源的状态或元数据,而不传输实际的内容。
  3. POST:用于向指定资源提交数据,通常用于创建新的资源或更新资源。
  4. PUT:替换由请求的URI标识的资源。通常用于上传文件或更新整个资源。
  5. PATCH:对资源进行部分修改。与PUT不同的是,PATCH只需要发送需要修改的部分。
  6. DELETE:删除由请求的URI标识的资源。
  7. OPTIONS:用于获取有关目标资源支持的通信选项的信息。通常用于跨域请求(CORS)预检。
  8. TRACE:执行一个消息环回测试,主要用于调试客户端连接到服务器的通信链路。

       

/*** RequestMapping注解*/
@RequestMapping(//这个是请求路径value = "/hello",//这个是请求方式的设置,有GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS, TRACEmethod = {RequestMethod.GET})
@ResponseBody
public String hello(){return "RequestMapping注解";
}


 

浏览器访问:http://localhost:8080/hello


2.请求方法不正确

 请求方法如果不匹配,那么请求也会不响应

        如果把方法换成POST,在访问浏览器就无法访问了 ,会出现405方法无法访问

@RequestMapping(//这个是请求路径value = "/hello",//这个是请求方式的设置,有GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS, TRACE;method = {RequestMethod.POST})
@ResponseBody
public String hello(){return "RequestMapping注解";
}

22:58:11.063 [http-nio-8080-exec-9] DEBUG org.springframework.web.servlet.DispatcherServlet -- Completed 405 METHOD_NOT_ALLOWED

 这时需要我们发送POST请求====》成功访问


3.@RequestMapping默认支持的方法

注:使用工具POSTMAN测试的

        


4.@RequestMapping衍生注解  

@GetMapping
  • 这个注解是 @RequestMapping 的一个特例,专门用来映射 HTTP GET 请求。
  • 例子
 /*** @GetMapping 获取请求资源*/@GetMapping("/game")@ResponseBodypublic String testGetMapping(){return "获取资源逻辑";}
@PostMapping
  • 用于映射 HTTP POST 请求。
  • 例子
/*** @PostMapping 创建资源*/@PostMapping("/game")@ResponseBodypublic String testPostMapping(){return "创建资源逻辑";}

@PutMapping
  • 映射 HTTP PUT 请求,通常用于更新资源。
  • 示例:
 /*** @PutMapping 更新资源*/@PutMapping("/game")@ResponseBodypublic String testPutMapping(){return "更新资源逻辑";}

@DeleteMapping:
  • 映射 HTTP DELETE 请求,用于删除资源。
  • 示例:
/**** @DeleteMapping 删除资源**/@DeleteMapping("/game")@ResponseBodypublic String testDeleteMapping(){return "删除资源逻辑";}
总结: 

        即使是相同的路径,只要是请求方法不同,执行的操作也是不同的。虽然是相同的访问路径,但是请求方法不同,后端服务器接受到之后所执行的操作也是不同的

: 这个有点类似方法的重构,方法名相同,方法的参数的类型不同,方法的参数个数不同,虽然是相同的方法名,但是方法的不是同一个方法

5.路径占位符的使用(@PathVariable)

注意事项:
  1. 命名一致性:路径占位符名称必须与 @PathVariable 注解中的名字相匹配。例如,如果路径是 /users/{user_id},那么在方法中就应该使用 @PathVariable("user_id")

  2. 参数类型:确保 @PathVariable 的参数类型与实际传递的值类型一致,例如 Long、String 等。

  3. 默认值@PathVariable 可以接受默认值,但这是一个可选特性。如果需要设置默认值,可以在注解中指定,例如 @PathVariable("id") Long userId = 0L

  4. 路径匹配:如果需要对路径占位符进行更严格的匹配,可以使用正则表达式,例如 @PathVariable(value = "id", required = false) @Pattern(regexp = "\\d+") String id

  5. 必需性:如果路径参数是必需的,可以通过设置 required = true 来强制要求客户端必须提供该参数。

@RequestMapping("/{id}")  {占位符名称} 需要与 @PathVariable参数连用标注  

/*** 路径参数获取*/
@GetMapping("/path/{id}")
@ResponseBody
public String getPath(@PathVariable(value="id",required=true) Integer id){return "path参数获取:"+id;
}

打开浏览器输入http://127.0.0.1:8080/path/1

 打开浏览器输入http://127.0.0.1:8080/path/2

如果不传递参数

6.获取查询参数-Param参数(@RequestParam注解)

@RequestParam 注解有一些有用的属性:

  • name:指定参数的名称,默认值是方法参数的名称。
  • required:指定是否必须提供此参数,默认值是 true。如果设置为 false,则允许客户端省略此参数。
  • defaultValue:指定参数的默认值。如果客户端未提供此参数,则使用此默认值。
  • value:等同于 name 属性。

注:

http://localhost:8080/params?name=张三&age=18

http://localhost:8080/params?name=张三&age=18

代码如下

/*** 查询参数获取*/
@GetMapping("/params")
@ResponseBody
public String getParams(//这个参数默认要传,required=true@RequestParam(value = "name",required = true) String name,//这个参数可以不传,required=false@RequestParam(value = "age",required = false) Integer age,//这个参数可以不传,但是有默认值@RequestParam(value = "sex",required = false,defaultValue = "男") String sex){return "请求参数获取:"+"name:"+name+"\n"+"age:"+age+"\nsex:"+sex+"\n";
}

参数传递:name=张三 + age=18 ====>结果  ====>name=张三   age=18  sex有默认值为男

参数传递: name=张三 age=18 sex=女  ====>结果===>name=张三  age=18  sex=女

参数传递: name=张三  sex=女 ====>结果 ===> name=张三  age=null  sex=女

参数传递:name=张三 ===>结果===>name=张三   age=null  sex=男

7.实体类接受路径参数

1.实体准备

注:实体类的属性名,必须和查询参数名一致

package org.xi.controller;public class Student {private String name;private Integer age;private String sex;@Overridepublic String toString() {return "Student{" +"name='" + name + '\'' +", age=" + age +", sex='" + sex + '\'' +'}';}public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}
}

2.方法实现
/*** 通过实体获取查询参数*/
@GetMapping("/params2")
@ResponseBody
public String getParams2(Student student){return "请求参数获取:"+student.toString();
}

3.测试

浏览器输入:http://127.0.0.1:8080/params2?name=xiji&age=20&sex=男http://127.0.0.1:8080/params2?name=xiji&age=20&sex=男

8.@RequestBody 

        获取请求体中的数据,并且转化为java对象

1.创建一个对象
package org.xi.controller;public class Dog {private String name;private int age;private String color;private String sex;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getColor() {return color;}public void setColor(String color) {this.color = color;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}@Overridepublic String toString() {return "Dog{" +"name='" + name + '\'' +", age=" + age +", color='" + color + '\'' +", sex='" + sex + '\'' +'}';}
}
2.controller实现
/*** 获取请求体中的数据*/
@RequestMapping(value = "/req" ,produces = {"application/json"})
@ResponseBody
public String getReqBody(@RequestBody Dog dog){System.out.println("请求体:"+dog.toString());return "请求体:"+dog.toString()+"\n"+"name:"+dog.getName()+"\n"+"age:"+dog.getAge()+"\n"+"sex:"+dog.getSex()+"\n"+"color:"+dog.getColor();
}

3.测试

出现415错误

        出现这个错误的是因为springMvc无法处理Post请求中的json数据,缺少处理JSON的依赖包

解决方案:
  1. 手动处理前端传来的json数据
  2. 导入相关的依赖包(推荐)

第二种解决方案

<!-- Jackson  -->
<dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.16.0</version>
</dependency>

可以看到发送Post请求已经可以成功获取了

9. @ResponseBody

        响应体数据  加上之后返回的数据就变成响应提数据

10.@RestController

        注解的本质就是 @Controller + @RequestBody注解

如下图

相关文章:

SpringMvc注解

SpringMvc注解 1 SpringMcv基础环境搭建 注&#xff1a;如果已经有SpringMvc项目直接跳过这个就可以了 1 新建项目 2.修改文件为packaging 为war包 <packaging>war</packaging> <?xml version"1.0" encoding"UTF-8"?> <pr…...

队列的基本概念及顺序实现

队列的基本概念 队列的定义 ​ 队列(Queue)简称队&#xff0c;也是一宗操作受限的线性表&#xff0c;只允许在表的一段进行插入&#xff0c;而在表的另一端进行删除。向队列中插入元素成为入队或进队&#xff1b;删除元素成为出队或离队。 ​ 特性&#xff1a;先进先出 (Fir…...

Leetcode 最长连续序列

算法流程&#xff1a; 哈希集合去重&#xff1a; 通过将数组中的所有元素放入 unordered_set&#xff0c;自动去除重复元素。集合的查找操作是 O(1)&#xff0c;这为后续的快速查找提供了保证。 遍历数组&#xff1a; 遍历数组中的每一个元素。对于每个元素&#xff0c;首先检…...

linux网络编程——UDP编程

写在前边 本文是B站up主韦东山的4_8-3.UDP编程示例_哔哩哔哩_bilibili视频的笔记&#xff0c;其中有些部分博主也没有理解&#xff0c;希望各位辩证的看。 UDP协议简介 UDP 是一个简单的面向数据报的运输层协议&#xff0c;在网络中用于处理数据包&#xff0c;是一种无连接的…...

第四部分:1---文件内核对象,文件描述符,输出重定向

目录 struct file内核对象&#xff1a; 如何读写文件&#xff1f; 文件描述符在文件描述符表中的分配规则&#xff1a; 输出重定向初步解析&#xff1a; dup2实现复制文件描述符&#xff1a; struct file内核对象&#xff1a; struct file 是在内核空间中创建的用于描述文…...

如何在开发与生产环境中应用 Flask 进行数据库管理:以 SQLAlchemy 和 Flask-Migrate 为例

在使用 Flask 进行开发时&#xff0c;数据库管理是一个至关重要的环节。借助 SQLAlchemy 作为 ORM&#xff08;对象关系映射&#xff09;工具和 Flask-Migrate 进行数据库迁移&#xff0c;开发者可以高效地进行数据库管理&#xff0c;并在不同的环境&#xff08;如开发环境和生…...

【Java零基础】Java核心知识点之:Map

HashMap(数组链表红黑树) HashMap 根据键的 hashCode 值存储数据&#xff0c;大多数情况下可以直接定位到它的值&#xff0c;因而具有很快的访问速度&#xff0c;但遍历顺序却是不确定的。 HashMap 最多只允许一条记录的键为 null&#xff0c;允许多条记录的值为 null。HashMa…...

9.12日常记录

1.extern关键字 1&#xff09;诞生动机:在一个C语言项目中&#xff0c;需要再多个文件中使用同一全局变量或是函数&#xff0c;那么就需要在这些文件中再声明一遍 2&#xff09;用于声明在其他地方定义的一个变量或是函数&#xff0c;在当前位置只是声明&#xff0c;告诉编译器…...

光纤的两种模式

光纤主要分为两种模式&#xff1a;‌‌单模光纤&#xff08;Single-Mode Fiber, SMF&#xff09;‌和‌‌多模光纤&#xff08;Multi-Mode Fiber, MMF&#xff09;‌。这两种光纤在传输特性、应用场景以及传输距离上存在显著差异。‌12 单模光纤 ‌定义‌&#xff1a;单模光纤…...

SpringMVC的初理解

1. SpringMVC是对表述层&#xff08;Controller&#xff09;解决方案 主要是 1.简化前端参数接收( 形参列表 ) 2.简化后端数据响应(返回值) 1.数据的接受 1.路径的匹配 使用RequestMapping(可以在类上或在方法上)&#xff0c;支持模糊查询&#xff0c;在内部有method附带…...

Python 基本库用法:数学建模

文章目录 前言数据预处理——sklearn.preprocessing数据标准化数据归一化另一种数据预处理数据二值化异常值处理 numpy 相关用法跳过 nan 值的方法——nansum和nanmean展开多维数组&#xff08;变成类似list列表的形状&#xff09;重复一个数组——np.tile 分组聚集——pandas.…...

Android Greendao的数据库复制到设备指定位置

方法如下&#xff1a; private void export() {// 确保您已经请求并获得了WRITE_EXTERNAL_STORAGE权限// 获取要储存的设备路径String picturesDirPath Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).getAbsolutePath();// 在公共目录下创建…...

Ajax 揭秘:异步 Web 交互的艺术

Ajax 揭秘&#xff1a;异步 Web 交互的艺术 一 . Ajax 的概述1.1 什么是 Ajax ?1.2 同步和异步的区别1.3 Ajax 的应用场景1.3.1 注册表单的用户名异步校验1.3.2 内容自动补全 二 . Ajax 的交互模型和传统交互模型的区别三 . Ajax 异步请求 axios3.1 axios 介绍3.1.1 使用步骤3…...

TitleBar:打造高效Android标题栏的新选择

在Android应用开发中&#xff0c;标题栏是用户界面的重要组成部分。一个好的标题栏不仅能够提升应用的专业感&#xff0c;还能增强用户体验。然而&#xff0c;传统的标题栏实现方式往往存在代码冗余、样式不统一、性能开销大等问题。今天&#xff0c;我们将介绍一个名为TitleBa…...

Lua协同程序Coroutine

Lua 协同程序(Coroutine) 定义 Lua 协同程序(Coroutine)与线程类似&#xff1a;拥有独立的堆栈、局部变量、指令指针&#xff0c;同时又与其它协同程序共享全局变量和其它大部分东西。 协同程序可以理解为一种特殊的线程&#xff0c;可以暂停和恢复其执行&#xff0c;从而允…...

【vue+帆软】帆软升级,从版本9升级到版本11,记录升级过程

帆软要升级&#xff0c;记录下过程 1、帆软官网地址必不可少&#xff0c;戳这里&#xff0c;跳转帆软官网 点击前端开发指南 点击JS API 跳转过来就是版本11 一直往下翻&#xff0c;在最底部有个2.2 在Web中使用&#xff0c;圈起来的就是要引入到index.html中的脚本 在项…...

linux从0到1 基础完整知识

1. Linux系统概述 Linux是一种开源操作系统&#xff0c;与Windows或macOS等操作系统不同&#xff0c;Linux允许用户自由地查看、修改和分发其源代码。以下是Linux系统的一些显著的优势。 稳定性和可靠性&#xff1a; 内核以其稳定性而闻名&#xff0c;能够持续运行数月甚至数…...

“人大金仓”正式更名为“电科金仓”; TDSQL-C支持回收站/并行DDL等功能; BigQuery支持直接查询AlloyDB

重要更新 1. “人大金仓”正式更名为“电科金仓”&#xff0c;完整名称“中电科金仓&#xff08;北京&#xff09;科技股份有限公司”&#xff0c;突出金仓是中国电子科技集团有限公司在基础软件领域产品( [1] ) 。据悉人大金仓在上半年营收入为9056万元&#xff0c;净利润约21…...

大模型微调 - 用PEFT来配置和应用 LoRA 微调

大模型微调 - 用PEFT来配置和应用 LoRA 微调 flyfish PEFT&#xff08;Parameter-Efficient Fine-Tuning&#xff09;是一种参数高效微调库&#xff0c;旨在减少微调大型预训练模型时需要更新的参数量&#xff0c;而不影响最终模型的性能。它支持几种不同的微调方法&#xff…...

Ubuntu构建只读文件系统

本文介绍Ubuntu构建只读文件系统。 嵌入式系统使用过程中&#xff0c;有时会涉及到非法关机&#xff08;比如直接关机&#xff0c;或意外断电&#xff09;&#xff0c;这可能造成文件系统损坏&#xff0c;为了提高系统的可靠性&#xff0c;通常将根文件系统设置为只读&#xf…...

【黑金系】金融UI/UX体验设计师面试作品集 Figma源文件分享

在数字金融时代&#xff0c;UI/UX体验设计师扮演着至关重要的角色。他们不仅塑造着产品的界面&#xff0c;更引领着用户的使用体验。我们的面试作品集&#xff0c;正是这样一部展现金融UI/UX设计魅力的宝典。 这套作品集汇聚了众多经典案例&#xff0c;每一处设计都经过精心雕…...

Golang | Leetcode Golang题解之第392题判断子序列

题目&#xff1a; 题解&#xff1a; func isSubsequence(s string, t string) bool {n, m : len(s), len(t)f : make([][26]int, m 1)for i : 0; i < 26; i {f[m][i] m}for i : m - 1; i > 0; i-- {for j : 0; j < 26; j {if t[i] byte(j a) {f[i][j] i} else {…...

Liunx常用指令

1. 文件和目录管理 ls 用法&#xff1a;ls [选项] [文件/目录]示例&#xff1a;ls -l&#xff08;以长列表格式显示&#xff09;&#xff0c;ls -a&#xff08;显示所有文件&#xff0c;包括隐藏文件&#xff09;。 cd 用法&#xff1a;cd [目录]示例&#xff1a;cd ..&#xf…...

CSS基础:浮动(float)如何使用清楚以及代替方法

浮动元素在 CSS 中主要通过 float 属性来控制&#xff0c;影响元素的排列方式。浮动用于创建流式布局&#xff0c;常用于实现图文混排、布局列等效果。以下是浮动元素的相关属性和使用方法&#xff1a; 1. 基本浮动属性 float: 控制元素的浮动方向&#xff0c;可以设置为 left…...

margin重叠该怎么解决?

在CSS中&#xff0c;当两个或多个垂直相邻的块级元素&#xff08;如<div>&#xff09;的margin相遇时&#xff0c;它们不会叠加成两个margin的和&#xff0c;而是会取两个margin中的较大值&#xff0c;这种现象被称为“margin重叠”&#xff08;margin collapsing&#x…...

Linux学习笔记(黑马程序员,前四章节)

第一章 快照 虚拟机快照&#xff1a; 通俗来说&#xff0c;在学习阶段我们无法避免的可能损坏Linux操作系统&#xff0c;如果损坏的话&#xff0c;重新安装一个Linux操作系统就会十分麻烦。VMware虚拟机支持为虚拟机制作快照。通过快照将当前虚拟机的状态保存下来&#xff0c;…...

tekton pipeline resources

PipelineResource 代表着一系列的资源&#xff0c;主要承担作为 Task 的输入或者输出的作用。它有以下几种类型&#xff1a; git&#xff1a;代表一个 git 仓库&#xff0c;包含了需要被构建的源代码。将 git 资源作为 Task 的 Input&#xff0c;会自动 clone 此 git 仓库。pu…...

使用Python实现多个PDF文件的合并

使用Python可以很方便地实现多个PDF文件的合并。我们可以使用PyPDF2库来完成这个任务。以下是一个实现PDF合并的Python脚本&#xff1a; import os from PyPDF2 import PdfMergerdef merge_pdfs(input_dir, output_filename):# 创建一个PdfMerger对象merger PdfMerger()# 获取…...

微擎忘记后台登录用户名和密码怎么办?解决方法

微擎忘记后台登录名和登录密码是很常见的&#xff0c;服务器百科网fwqbk.com告诉你找回后台登录用户名和密码的方法&#xff1a; 一&#xff1a;找回微擎后台用户名 &#xff08;如果只是忘记了后台登录密码&#xff0c;请忽略此步骤&#xff0c;跳转到第二步&#xff09; 通…...

blender我的对称模型好像中点被我不小心移动了 我现在如果雕刻 两边修改的地方不是对称的 我该怎么办

blender我的对称模型好像中点被我不小心移动了 我现在如果雕刻 两边修改的地方不是对称的 我该怎么办 首先请调整好模型确保左右前后对其相应的xyz轴 之后CtrlA应用变换 确保这些都归0且模型和xyz轴对应 如果在Blender中模型的中点&#xff08;对称轴&#xff09;不小心被移动了…...