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

SpringWeb项目核心功能总结

SpringWeb项目核心功能总结

文章目录

  • SpringWeb项目核心功能总结
    • 1.浏览器与Java程序的连接(个人偏好使用@RequestMapping)
    • 2.参数的传入
    • 3.结果的返回
    • 请求转发和请求重定向的区别

核心功能用到的注解:

  • @RestController=@Controller+@ResponseBody
  • RequestMapping【GetMapping,PostMapping…】
  • @Data
  • @RequestParam
  • @RequestPart
  • @CookieValue
  • @SessionAttribute

注解的详细用法在这:

MVC常用注解详解

这里是进一步简化和总结,建议先看上边,再看这个

1.浏览器与Java程序的连接(个人偏好使用@RequestMapping)

首先注册一级路由,指定返回的页面不是静态页面,以及加上类注解

然后注册二级路由,写具体的代码,返回相应的结果

@RestController
@RequestMapping("/user")
public class UserController {@RequestMapping("/sayhi")//二级路由注册public String sayHi(){return "hi";}@RequestMapping(value = "/sayhi2",method = RequestMethod.POST)public String sayHi2(){return "hi";}
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2ggbpWnb-1691464124543)(F:\typora插图\image-20230808093135322.png)]

2.参数的传入

传普通单个参数|多个参数(前后端参数名相同和不同(含参数类型的影响))|cookie|session|文件|JSON对象|header

spring这里传参数和之前是一样的,不传的话会得到默认值

package com.example.demo.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;@RestController
@RequestMapping("/user")
public class UserController {@RequestMapping("/gp")public String getParam(String name){return name;}@RequestMapping("/gp3")public String getParam(HttpServletRequest request,HttpServletResponse response) throws IOException {response.sendRedirect("http://www.javacn.site");return "hi";}@RequestMapping("/gp4")public String getParam(String name,String password) {return name+":"+password;}@RequestMapping("/gp5")public String getParam5(@RequestParam("username") String name) {return name;}//获取对象@RequestMapping("/reg")public Object getParam9(UserInfo userInfo){return userInfo;}//获取JSON对象@RequestMapping("/reg2")public Object reg2(@RequestBody UserInfo userInfo){return userInfo;}//从url的path获取参数@RequestMapping("/reg3/{name}/{pwd}")public Object reg3(@PathVariable String name,@PathVariable(required = false,name = "pwd") String password){return name+":"+password;}//获取上传文件(可以上生产线的代码)@RequestMapping("/myupload2")public Object upload2(@RequestPart("test")MultipartFile file){String fileName= UUID.randomUUID()+file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));File saveFile=new File("F://test//"+fileName);try {file.transferTo(saveFile);return true;} catch (IOException e) {e.printStackTrace();}return false;}//获取cookie@RequestMapping("/getck")public Object getck(@CookieValue(value = "java",required = false)String java){return java;}//获取Header@RequestMapping("gethd")public Object getHeader(@RequestHeader("Host")String ht){return ht;}//获取Session(更为方便的,原来的比这个麻烦一点)@RequestMapping("getsess")public Object getSession(@SessionAttribute(SESSION_KEY)String name){return "session:"+name;}
}
  1. 传入单个参数(不传,非基础数据)

  2. 隐藏参数(request,response)

  3. 多参数按照的名称而不是顺序

  4. 前后端参数名不同,用@RequestParam进行映射(参数重命名)

  5. 表单/用户对象的获取(spring web自动实现参数映射(拦截器,统一处理),保证属性名同)

    package com.example.demo.entity;import lombok.Data;@Data
    public class UserInfo {private int id;private String name;private String password;private int age;
    }			
    
  6. ​ JSON对象数据获取(和之前不同)(需要使用@RequestBody注解声明)

    注意:JSON对象的模拟发送(postman的发送)

    即通过请求体获取对象

  7. 从普通的url的path获取参数(还比较常用)(使用@PathVariable这个注解实现)【详情页也是使用的一个经典场景】

    参数可传可不传,需要设置required属性

    路由里边的花括号是对参数名敏感的意思

    好处:1.搜索引擎抓取关键字权重会比较高 2.参数比较少的情况下,url更加简洁

  8. 获取上传文件,@RequestPart注解【保存在数据库中使用varchar】

    必须使用指定类型接收,才能把具体文件流转化(图片,文档…)

    注意:使用Postman模拟前端图片上传(file)

    有的传到自己服务器(项目不多的话),有的传到OSS上边的(腾讯或阿里专门提供的)

  9. 获取cookie(请求体)使用@CookieValue注解

  10. 获取header使用@RequestHeader注解

  11. 获取session使用@SessionAttribute注解

3.结果的返回

静态页面的返回|非静态页面的返回|跳转链接的返回

//加斜杠是从根目录返回,不加斜杠是从当前页面找静态页面package com.example.demo.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;@Controller
@RequestMapping("test")
public class TestController {//返回静态界面@RequestMapping("/index")public Object getIndex(){return "/index.html";}//返回json对象@RequestMapping("/reg2")public Object reg2(@RequestBody UserInfo userInfo){return userInfo;}//请求重定向@RequestMapping("index1")public String index1(){return "redirect:/index1.html";}//请求转发@RequestMapping("index2")public String index2(){return "forward:/index2.html";}
}
  1. 返回静态页面(使用比较少,因为前后端分离)

  2. 返回非静态页面(JSON,HTML…框架会自动适配)

  3. 返回跳转【请求重定向和请求转发(实现方式有很多)】(使用比较少,因为前后端分离,但是有时也会有的)

    还可以通过reponse对象的sendRedirect方法…

请求转发和请求重定向的区别

(字越少事越大)

请求转发字比较少,需要客户端执行跳转,而请求重定向什么也不干,只是告诉客户端去哪访问。

http://www.lryc.cn/news/115200.html

相关文章:

  • Django------信号
  • HTML5 中新增了哪些表单元素?
  • [考研机试] KY20 完数VS盈数 清华大学复试上机题 C++实现
  • re学习(30)攻防世界-hackme(代码复原2)
  • Go Windows下开发环境配置(图文)
  • 【人工智能概述】python妙用 __str__()
  • android kernel移植5-RK3568
  • C++——string类介绍
  • 教雅川学缠论07-中枢实战众泰汽车000980
  • REDIS主从配置
  • 【测试】软件测试工具JMeter简单用法
  • 五个授权关键,为智能驾驶量产赋能
  • 【代码随想录-Leetcode第三题:977. 有序数组的平方】
  • [运维|中间件] Apache APISIX Dashboard部署(持续踩坑更新。。。)
  • Vue中watch监听属性新旧值相同问题解决方案
  • awk案例练习
  • Debian 12.1 正式发布
  • neo4j清空数据库
  • SpringBoot整合Mybatis-Plus
  • 在langchain中使用自定义example selector
  • pytest常用执行参数详解
  • 本地项目如何连接git远程仓库
  • 力扣 494. 目标和
  • Maven-搭建私有仓库
  • PostgreSql 参数配置
  • 【BMC】OpenBMC开发基础2:修改原有程序
  • 2012年数学建模竞赛脑卒中发病环境因素分析及干预日期数据处理代码
  • Merge和Rebase的区别
  • [RTKLIB]模糊度固定相关问题(二)
  • QtAV for ubuntu16.04