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

苏州市建设局安监站网站google seo

苏州市建设局安监站网站,google seo,新农村建设官方网站,培训学做网站要多久❣️关注专栏:JavaEE Spring MVC ⌛️ 1. Spring MVC 创建和连接⌛️ 1.1 RequestMapping⌛️ 1.2 GetMapping⌛️ 1.3 PostMapping ⌛️ 2. 获取参数⌛️ 2.1 传递/获取单个参数⌛️ 2.2 传递/获取多个参数⌛️ 2.3 传递/获取对象⌛️ 2.4 参数重命名⌛️ 2.4.1 …

❣️关注专栏:JavaEE
在这里插入图片描述

Spring MVC

  • ⌛️ 1. Spring MVC 创建和连接
    • ⌛️ 1.1 @RequestMapping
    • ⌛️ 1.2 @GetMapping
    • ⌛️ 1.3 @PostMapping
  • ⌛️ 2. 获取参数
    • ⌛️ 2.1 传递/获取单个参数
    • ⌛️ 2.2 传递/获取多个参数
    • ⌛️ 2.3 传递/获取对象
    • ⌛️ 2.4 参数重命名
      • ⌛️ 2.4.1 设置参数必传
    • ⌛️ 2.5 获取 JSON 对象
    • ⌛️ 2.6 从基础URL中获取参数
    • ⌛️ 2.7 获取上传的文件
    • ⌛️ 2.8 获取Cookie
    • ⌛️ 2.9 存储和获取 session
    • ⌛️ 2.10 获取 Header

SpringMVC有三个功能:

  1. 连接的功能:将⽤户(浏览器)和 Java 程序连接起来,也就是当用户访问⼀个地址能够调⽤到我们的Spring 程序。
  2. 获取参数的功能:⽤户访问的时候会传入⼀些参数,在程序中要想办法可以获取到参数。
  3. 输出数据的功能:执⾏了业务逻辑之后,要把程序执⾏的结果返回给⽤户。
    接下来我们来探索这 3 个功能,掌握了之后就相当于掌握了SpringMVC!!!😀

⌛️ 1. Spring MVC 创建和连接

实现连接可以有 3 种注解:@RequestMapping 、@GetMapping 和 PostMapping

⌛️ 1.1 @RequestMapping

首先创建一个控制类,实现⽤户到 Spring 程序的互联互通。

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@RestController // 相当于把 @Controller 和 @ResponseBody 结合起来。@Controller 是让 spring 框架启动时,加载。@ResponseBody 是返回⾮⻚⾯数据
@RequestMapping("/user") 
public class UserController {@RequestMapping("/say") // 这里可以是一级路由,也可以是 N 级路由public String sayHi(){return "springmvc sayhi";}
}

完成之后,当访问地址: http://localhost:8080/user/say
时就能在浏览器中打印 “springmvc sayhi” 的信息了。
👏 @RequestMapping 是 Spring Web 应⽤程序中最常被⽤到的注解之⼀,它是⽤来注册接⼝的路由映射的。也就是当用户访问一个 URL 时,将用户的请求对应到某个类的方法上。
👏 @RequestMapping 可修饰类,也可以修饰⽅法。
当修饰类和⽅法时,访问的地址是:localhost:端口号/类/⽅法。比如: http://localhost:8080/user/say
如果直接修饰的是方法,则访问的地址是:localhost:端口号/⽅法,比如: http://localhost:8080/say

👏 @RequestMapping 支持 post 请求 也支持 get 请求。
我们可以在代码中手动指定为 post 请求:

// 当@RequestMapping() 中只有一个参数,不需要加 value,当有指定方法时要加上。
@RequestMapping(value = "/say", method = RequestMethod.POST)  public String sayHi() {return "springmvc sayhi";}

检测是否支持 post 的请求我们使用 postman,结果如下,可以知道该注解支持 post 请求。
在这里插入图片描述

⌛️ 1.2 @GetMapping

使用如下:

@GetMapping("/hi") // @GetMapping 只支持 get 请求,不支持 post 请求public String hi() {return "springmvc hi";}

⌛️ 1.3 @PostMapping

使用如下:

@PostMapping("/sayhello") // 只支持 post 请求,不支持 get 请求public String sayhello() {return "springmvc hello";}

⌛️ 2. 获取参数

⌛️ 2.1 传递/获取单个参数

在 Spring MVC 中可以直接⽤⽅法中的参数来实现传参,

// 这里列举了 3 种参数类型
@RequestMapping("/sayhi1")
public String sayHi(String name) { // 不传递 name 参数,那么此变量使用的是 String 的默认值 nullreturn "hi " + name;}@RequestMapping("/sayhi2")
public String sayhi2(Integer id) { // 不传递参数,使用 Integer(包装类) 的默认值 nullif(id == null) return "参数有误";return "hi " + id;}@RequestMapping("/sayhi3")
public String sayhi3(int id) { // 不传递参数,报错 --> 所以参数传递不要使用基础数据类型,使用包装类return "hi " + id;}

访问第一个地址时,我传入参数 name=zhangsan,结果如下:在这里插入图片描述

⌛️ 2.2 传递/获取多个参数

@RequestMapping("/sayhi11")public String sayHi11(String name, String password) {return "name:" + name + " | password:" + password;}

比如我们传递参数 name=zhangsan,password=123,结果如下:
在这里插入图片描述
那么有人可能会把参数的顺序传错了,那会影响我们的结果吗?答案是不会的,因为当有多个参数时,前后端进⾏参数匹配时,是以参数的名称进⾏匹配的,因此参数的位置是不影响后端获取参数的结果。结果如下:
在这里插入图片描述

⌛️ 2.3 传递/获取对象

首先我们新建一个类 Userinfo:

package com.example.demo.entity;
import lombok.Data;
@Data
public class Userinfo {  // 类下面有以下属性private int id;private String name;private String password;private int age;
}

接下来我们来获取对象:

@RequestMapping("/reg")public Object reg(Userinfo userinfo) { // 框架会实现自动的参数映射System.out.println(userinfo); // 拿到的对象只是普通格式的对象return userinfo;}

Spring MVC 可以⾃动实现参数对象的赋值,也就是框架会实现自动的参数映射。运行结果如下:
在这里插入图片描述

⌛️ 2.4 参数重命名

我们可以对后端的参数重命名,也叫作后端参数映射。因为工作中有时候前端和后端的参数命名要求不同,比如前端规定他们的命名为 username,而后端要求的为 name,那么此时我们就需要使用 @RequestParam 来重命名参数。
如果参数不重名的话,结果如下:
在这里插入图片描述
参数重命名就给前面加上注解:

@RequestMapping("/reg2")// 使⽤ @RequestParam 来重命名前后端的参数值。eg:前端传入 username,后端命名为 namepublic Object reg(@RequestParam(value = "username") String name, String password) {return name + ":" + password;}

结果如下:在这里插入图片描述

⌛️ 2.4.1 设置参数必传

如果在上述例子中,我们不给 username 传入参数,那么访问时就会出错,所以当我们的实际业务中前端的参数是⼀个⾮必传的参数,我们可以通过设置 @RequestParam 中的 required=false 来避免不传递时报错,具体实现如下:

@RequestMapping("/reg2")public Object reg(String name,@RequestParam(value = "username", required = false)String password) {return name + ":" + password;}

⌛️ 2.5 获取 JSON 对象

 @RequestMapping("/reg3")// @RequestBody --> 接收 JSON 对象,要想拿到 json 格式的,必须加上 @RequestBody 注解public Object reg3(@RequestBody Userinfo userinfo) {System.out.println(userinfo); // 拿到的对象只是普通格式的对象return userinfo;}

⌛️ 2.6 从基础URL中获取参数

从基础的 URL中获取参数(?之前的参数,比如:http://localhost:8080/reg4/sy/123,获取的参数就是 sy 和123), 而不是从 URL的参数部分获取参数(是?之后的,比如http://localhost:8080/reg4?name=sy&password=123)。

 @RequestMapping("/reg4/{name}/{password}")public Object reg4(@PathVariable String name, @PathVariable("password") String password) {return "name=" + name + " | password=" + password;}@RequestMapping("/reg44/{name}/{pwd}")  // 参数名不同public Object reg44(@PathVariable String name,@PathVariable(required = false, name = "pwd") String password) {return "name=" + name + " | password=" + password;}

结果为:
在这里插入图片描述
一般当参数比较少的情况下使用这种传参。

⌛️ 2.7 获取上传的文件

后端代码:

@RequestMapping("/myupload")public Object upload(@RequestPart("dog")MultipartFile file) {String fileName = UUID.randomUUID() +  // 文件名file.getOriginalFilename().substring( // substring 处理的是文件后缀file.getOriginalFilename().lastIndexOf(".")); // . 之前的为文件名File saveFile = new File("D:\\Y\\106\\rrich\\java-ee\\JavaEE_further\\" + fileName); // 这里D:\\Y\\106\\rrich\\java-ee\\JavaEE_further\\是我的文件的保存路径try{file.transferTo(saveFile);return true;} catch (IOException e) {e.printStackTrace();}return false;}

前端:
在这里插入图片描述
在我的文件中查看,已经有了该图片:在这里插入图片描述

⌛️ 2.8 获取Cookie

@RequestMapping("/getck")public Object getCk(@CookieValue(value = "java", required = false) String java) {return java;}

在这里插入图片描述

⌛️ 2.9 存储和获取 session

存储 session 代码:

  @RequestMapping("/setsess")public void doPostConstruct(HttpServletRequest request) {HttpSession session = request.getSession();session.setAttribute(SESSION_KEY,"zhangsan");}

只需要访问 http://localhost:8080/setsess 地址就可以成功存储 session。
获取 session 代码:

@RequestMapping("/getsess")public Object getSession(@SessionAttribute(SESSION_KEY) String name) {return "session -> " + name;}

获取的结果如下:
在这里插入图片描述

⌛️ 2.10 获取 Header

@RequestMapping("/gethd")// @RequestHeader() 里边的 header 是可以改变的public Object getHeader(@RequestHeader("User-Agent")String ua) {return "header -> " + ua;}

结果为:
在这里插入图片描述

http://www.tj-hxxt.cn/news/15004.html

相关文章:

  • 深圳网站制作西安网络营销技能大赛优秀作品
  • 网站空间数据放单平台大全app
  • 平台网站建设需要什么技术卡一卡二卡三入口2021
  • 安徽省网站肥建设网站武汉网络推广seo
  • 广州有几个区图片爱站网seo
  • 龙华做网站yihe kj怎么投放广告
  • 做网站哪里学怎么开一个网站平台
  • 怎么用织梦做自己的网站百度问答app下载
  • 网站建设策划 流程在线网页制作
  • 上海网站空间服务器最新地址
  • wordpress 广告插件汉化版windows10优化工具
  • 怎样自己做代刷网站网域名查询地址
  • 外国网站开发男生技能培训班有哪些
  • wordpress建2个网站吗在线培训考试系统
  • 做超市dm的网站北京网站搭建哪家好
  • 深圳制作网站公司哪里好怎么在百度做宣传广告
  • wordpress网站迁移问题网络推广平台代理
  • 对于新公司如何让其做网站推广网络营销的作用
  • 家庭宽带做私人网站网络营销工程师
  • 广州正佳广场针对百度关键词策划和seo的优化
  • 网页制作专业软件seo价格是多少
  • 网站文章列表和图片列表排版切换代码郑州免费做网站
  • y1s华硕wordpress深圳关键词seo
  • 做网站有地区差异吗seo智能优化系统
  • 网站建设相关专业软文是什么意思通俗点
  • 怎么自己做网站空间市场推广策略 包括哪些
  • 手机模板网站模板下载网站网络营销有哪些推广平台
  • 什么企业做网站网络销售平台怎么做
  • 新闻网站建设方案书怎么写厦门网络推广哪家强
  • 问卷调查西安百度seo推广