万州工程建设招投标网站,网站被k还能不能在百度做推广,网站源码是html怎么转成php网站,adspower浏览器❣️关注专栏#xff1a;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有三个功能 连接的功能将⽤户浏览器和 Java 程序连接起来也就是当用户访问⼀个地址能够调⽤到我们的Spring 程序。获取参数的功能⽤户访问的时候会传入⼀些参数在程序中要想办法可以获取到参数。输出数据的功能执⾏了业务逻辑之后要把程序执⾏的结果返回给⽤户。 接下来我们来探索这 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;}访问第一个地址时我传入参数 namezhangsan结果如下
⌛️ 2.2 传递/获取多个参数
RequestMapping(/sayhi11)public String sayHi11(String name, String password) {return name: name | password: password;}比如我们传递参数 namezhangsanpassword123结果如下 那么有人可能会把参数的顺序传错了那会影响我们的结果吗答案是不会的因为当有多个参数时前后端进⾏参数匹配时是以参数的名称进⾏匹配的因此参数的位置是不影响后端获取参数的结果。结果如下
⌛️ 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 中的 requiredfalse 来避免不传递时报错具体实现如下
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?namesypassword123。 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;}结果为