您的位置:首页 > 房产 > 家装 > 仿古建筑公司网站_软件推广赚钱一个30_青岛seo推广_网络推广文案策划

仿古建筑公司网站_软件推广赚钱一个30_青岛seo推广_网络推广文案策划

2024/10/30 22:31:27 来源:https://blog.csdn.net/GodK777/article/details/143169371  浏览:    关键词:仿古建筑公司网站_软件推广赚钱一个30_青岛seo推广_网络推广文案策划
仿古建筑公司网站_软件推广赚钱一个30_青岛seo推广_网络推广文案策划

@Controller

这个注解用于标识一个类是 SpringMVC 中的控制器。控制器负责处理用户请求并返回响应。

@Controller
public class MyController {//...
}

@RequestMapping

@RequestMapping既可修饰类,也可以修饰⽅法,当修饰类和⽅法时,访问的地址是类路径+⽅ 法路径.

@RequestMapping标识⼀个类:设置映射请求的请求路径的初始信息

@RequestMapping标识⼀个⽅法:设置映射请求请求路径的具体信息

@RequestMapping("/user")
@RestController
public class UserController {@RequestMapping("/sayHi")public String hello(){return "hello Spring";}
}

访问地址:http://127.0.0.1:8080/user/sayHi

注意:

@RequestMapping的URL路径最前⾯加不加/ (斜杠)都可以,Spring程序启动时,会进⾏判断,如果前⾯没有加/ ,Spring会拼接上⼀个/

@RequestMapping("/user/m1")
@RestController
public class UserController {@RequestMapping("/say/hi")public String sayHi(){return "hello,Spring MVC";}
}

访问路径:http://127.0.0.1:8080/user/m1/say/hi

@RequestMapping是GET还是POST请求?

GET请求: 浏览器发送的请求类型都是get,通过以上案例,可以看出来 @RequestMapping ⽀持get请求.

POST请求: 我们通过form表单来构造请求: 创建test.html,html代码:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><title>Title</title>
</head><body><form action="/user/sayHi" method="post"><input type="submit" value="提交"></form>
</body></html>

前端代码放在static⽬录下,访问⽅式为:http://127.0.0.1:8080/test.html

如果有多层⽬录,访问链接从static⽬录开始写

如上图,访问链接为:http://127.0.0.1:8080/html/test.html

从运⾏结果可以看出:@RequestMapping 既⽀持Get请求,⼜⽀持Post请求.同理,也⽀持其他的请 求⽅式.

那如何指定GET或者POST类型呢?

指定GET/POST⽅法类型 

我们可以显⽰的指定@RequestMapping来接收POST的情况,如下所⽰:

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
@RestController
public class UserController {@RequestMapping(value = "/getRequest",method= RequestMethod.POST)public String sayHi(){return "get request...";}
}

@GetMapping

@GetMapping方法的一个特定版本,用于处理 HTTP GET 请求。

@Controller
@RequestMapping("/myapp")
public class MyController {@GetMapping("/products")public String getProducts() {return "productList";}
}

@PostMapping

@GetMapping方法的一个特定版本,用于处理 HTTP POST 请求。

@Controller
@RequestMapping("/myapp")
public class MyController {@PostMapping("/addProduct")public String addProduct(Product product) {// 处理添加产品的逻辑return "redirect:/products";}
}

@GetMapping与@PostMapping与@RequestMapping

@GetMapping@RequestMapping(value =<URL>,method = RequestMethod.GET)有一些细微的区别,但在大多数情况下可以实现相同的功能。

一、语法简洁性方面

  • @GetMapping("URL")更加简洁直观,它专门用于处理 HTTP GET 请求的 URL 映射,减少了代码量,提高了可读性。
  • @GetMapping(value =<URL>,method = RequestMethod.GET)相对来说更加冗长,需要明确指定请求方法为GET

二、功能方面

  • 功能上基本相同,都用于将特定的 URL 路径映射到处理 GET 请求的方法上。
@Controller
public class SomeController {// 使用@GetMapping@PostMapping("/submitForm")public String handlePostRequest() {// 处理 GET 请求的逻辑return "successPage";}// 使用@RequestMapping 模拟 GET 请求处理@RequestMapping(value = "/submitForm2", method = RequestMethod.GET)public String handlePostRequest2() {// 处理 GET 请求的逻辑return "successPage";}
}

同理:

@PostMapping在功能上等同于使用@RequestMapping(value =<URL>,method = RequestMethod.POST),但它更加简洁和明确地表达了方法只处理 POST 请求这一意图,提高了代码的可读性和可维护性。

@Controller
public class SomeController {// 使用@PostMapping@PostMapping("/submitForm")public String handlePostRequest() {// 处理 POST 请求的逻辑return "successPage";}// 使用@RequestMapping 模拟 POST 请求处理@RequestMapping(value = "/submitForm2", method = RequestMethod.POST)public String handlePostRequest2() {// 处理 POST 请求的逻辑return "successPage";}
}

总的来说,如果只处理特定请求方法(如 GET)的 URL 映射,推荐使用@GetMapping等特定请求方法的注解,以提高代码的简洁性和可读性。如果需要更灵活地配置多个请求方法或者其他属性,可以使用@RequestMapping

@PathVariable

path variable:路径变量

和字⾯表达的意思⼀样,这个注解主要作⽤在请求URL路径上的数据绑定

后端实现代码:

@RequestMapping("/article/{articleId}/{name}")
public String method8(@PathVariable("articleId") String id, @PathVariable String name){return "articleId:" + id + ", name: " + name;
}

使用浏览器发送请求:http://127.0.0.1:8080/article/articleId/name

@RequestParam

用于获取请求参数。

某些特殊的情况下,前端传递的参数key和我们后端接收的key可以不⼀致,⽐如前端传递了⼀个time给后端,⽽后端是使⽤createtime字段来接收的,这样就会出现参数接收不到的情况,如果出现 这种情况,我们就可以使⽤@RequestParam 来重命名前后端的参数值.具体⽰例如下,后端实现代码:

@Controller
@RequestMapping("/myapp")
public class MyController {@GetMapping("/search")public String searchProducts(@RequestParam("time") String createtime) {// 根据关键字进行产品搜索return "searchResults";}
}

@RequestPart

用与上传文件

后端代码实现:

@RequestMapping("/m9")
public String getfile(@RequestPart("file") MultipartFile file) throwsIOException {//获取⽂件名称String fileName = file.getOriginalFilename();//⽂件上传到指定路径file.transferTo(new File("D:/temp/" + file.getOriginalFilename()));return "接收到⽂件名称为: "+fileName;
}

使用Postman发送请求:

观察D:/temp路径下,⽂件是否上传成功

@ResponseBody

用于返回数据

@Controller
@ResponseBody
public class IndexController {@RequestMapping("/index")public Object index(){return "/index.html";}
}

加上 @ResponseBody 注解,该⽅法就会把"/index.html"当做⼀个数据返回给前端.

 运⾏:http://127.0.0.1:8080/index

@ResponseBody 既是类注解,⼜是⽅法注解

 如果作⽤在类上,表⽰该类的所有⽅法,返回的都是数据,如果作⽤在⽅法上,表⽰该⽅法返回的是数据.

也就是说:在类上添加 @ResponseBody 就相当于在所有的⽅法上添加了 @ResponseBody 注解.

同样,如果类上有 @RestController 注解时:表⽰所有的⽅法上添加了 @ResponseBody 注解,也就是当前类下所有的⽅法返回值做为响应数据

如果⼀个类的⽅法⾥,既有返回数据的,⼜有返回⻚⾯的,就把 @ResponseBody 注解添加到对应的⽅法上即可.

@Controller
public class IndexController {@RequestMapping("/index")public Object index(){return "/index.html";}@RequestMapping("/returnData")@ResponseBodypublic String returnData(){return "该⽅法返回数据";}
}

多个注解时,没有先后顺序,先写哪个都可以

 运⾏程序,浏览器响应结果如下:http://127.0.0.1:8080/returnData

如果去掉@ResponseBody 注解,程序会报404错误.

@Controller
public class IndexController {@RequestMapping("/index")public Object index(){return "/index.html";}@RequestMapping("/returnData")public String returnData(){return "该⽅法返回数据";}
}

程序会认为需要返回的是视图,根据内容去查找⽂件,但是查询不到,路径不存在,报404

返回HTML代码片段

后端返回数据时,如果数据中有HTML代码,也会被浏览器解析

@RequestMapping("/returnHtml")
@ResponseBody
public String returnHtml() {return "<h1>Hello,HTML~</h1>";
}

运⾏程序,浏览器响应结果如下:http://127.0.0.1:8080/returnHtml

通过Fiddler观察响应结果, Content-Type 为 text/html 

响应中的Content-Type常⻅取值有以下⼏种:

• text/html :body数据格式是HTML

• text/css :body数据格式是CSS 

• application/javascript :body数据格式是JavaScript

• application/json :body数据格式是JSON

如果请求的是js⽂件,SpringMVC会⾃动设置Content-Type为 application/javascript  如果请求的是css⽂件,SpringMVC会⾃动设置Content-Type为 text/css 

RequestMapping("/index2")
public Object index2(){return "/a.js";
}
@RequestMapping("/index3")
public Object index3(){return "/b.css";
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com