• 学习SpringMvc第二战之【SpringMVC之综合案例】


    目录

    一. 参数传递

    1.前期准备工作(替换pom.xml中的部分依赖)

    1.1将log4j替换成为slf4j(将打印语句替换成为日志文件输出结果)

    2.正式操作

    1.基础传参

    1.1创建方法,用于验证传参

    1.2构建界面回显

    1.3设置访问路径(localhost:8080/param/hello1?bname=狂飙&bid=2)

    3.复杂类型 

    2.1创建方法用于验证

    2.2设置访问路径(localhost:8080/param/hello2?bname=狂飙&bid=2)

     4.RequestParam注解传递参数

    3.1创建方法用于验证

    3.2设置访问路径(localhost:8080/param/hello3?bname=狂飙&bid=2)

    5.路径传参 

    4.1创建方法用于验证

    4.2设置访问路径(localhost:8080/param/hello4/2)

     6.RequestBody传参(专门用来接收json字符串)

    6.1导入依赖

    6.2创建方法用于验证

    6.3通过aplikt测试

    6.4补充 

    7.@RequestHeader(获取请求头)

    7.1创建方法用于验证

    7.2设置访问路径(localhost:8080/param/hello7)

    8.复合行

    二.返回值

    1.void型

    2.String+model类型 

    3.ModelAndView

    三.页面跳转


    前言: 

    小编带大家了解了,spring mvc 以及spring mvc的入门和配置spring mvc的环境以及对于静态子资源的处理。

    一. 参数传递

    1.前期准备工作(替换pom.xml中的部分依赖)

    1.1将log4j替换成为slf4j(将打印语句替换成为日志文件输出结果)

    1. <log4j2.version>2.9.1</log4j2.version>
    2. <log4j2.disruptor.version>3.2.0</log4j2.disruptor.version>
    3. <slf4j.version>1.7.13</slf4j.version>
    1. <dependency>
    2. <groupId>org.slf4jgroupId>
    3. <artifactId>slf4j-apiartifactId>
    4. <version>${slf4j.version}version>
    5. dependency>
    6. <dependency>
    7. <groupId>org.slf4jgroupId>
    8. <artifactId>jcl-over-slf4jartifactId>
    9. <version>${slf4j.version}version>
    10. <scope>runtimescope>
    11. dependency>
    12. <dependency>
    13. <groupId>org.apache.logging.log4jgroupId>
    14. <artifactId>log4j-apiartifactId>
    15. <version>${log4j2.version}version>
    16. dependency>
    17. <dependency>
    18. <groupId>org.apache.logging.log4jgroupId>
    19. <artifactId>log4j-coreartifactId>
    20. <version>${log4j2.version}version>
    21. dependency>
    22. <dependency>
    23. <groupId>org.apache.logging.log4jgroupId>
    24. <artifactId>log4j-slf4j-implartifactId>
    25. <version>${log4j2.version}version>
    26. dependency>
    27. <dependency>
    28. <groupId>org.apache.logging.log4jgroupId>
    29. <artifactId>log4j-webartifactId>
    30. <version>${log4j2.version}version>
    31. <scope>runtimescope>
    32. dependency>
    33. <dependency>
    34. <groupId>com.lmaxgroupId>
    35. <artifactId>disruptorartifactId>
    36. <version>${log4j2.disruptor.version}version>
    37. dependency>

    2.正式操作

    1.基础传参

    1.1创建方法,用于验证传参
    1. package com.lz.web;
    2. import lombok.extern.slf4j.Slf4j;
    3. import org.springframework.stereotype.Controller;
    4. import org.springframework.web.bind.annotation.RequestMapping;
    5. /**
    6. * @author lz
    7. * @create 2023-09-05 14:42
    8. */
    9. @Controller
    10. @Slf4j
    11. @RequestMapping("/param")
    12. public class ParmController {
    13. @RequestMapping("/hello1 ")
    14. public String index(String bname,Integer bid){
    15. log.info("简单类型参数:bname:{},bid:{}",bname,bid);
    16. return "index";
    17. }
    18. }
    1.2构建界面回显
    1. <%--
    2. Created by IntelliJ IDEA.
    3. User: lzzxq
    4. Date: 2023/9/5
    5. Time: 14:44
    6. To change this template use File | Settings | File Templates.
    7. --%>
    8. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    9. <html>
    10. <head>
    11. <title>Titletitle>
    12. head>
    13. <body>
    14. <h1>刘兵最喜欢吃锅巴h1>
    15. body>
    16. html>
    1.3设置访问路径(localhost:8080/param/hello1?bname=狂飙&bid=2)

    3.复杂类型 

    2.1创建方法用于验证

    1. @RequestMapping("/hello2")
    2. public String hello2(Book book, HttpServletRequest request){
    3. log.info("复杂类型参数:bname:{},bid:{}",
    4. request.getParameter("bname"),
    5. request.getParameter("bid"));
    6. log.info("复杂类型参数:book:{}",
    7. book.toString() );
    8. return "index";
    9. }

    2.2设置访问路径(localhost:8080/param/hello2?bname=狂飙&bid=2)

     4.RequestParam注解传递参数

    3.1创建方法用于验证

    1. @RequestMapping("/hello3")
    2. public String toHello3(@RequestParam Integer bid,
    3. @RequestParam(required = false,value = "price") Integer bookPrice,
    4. @RequestParam("bookName") String bname){
    5. log.info(">>>> 使用@RequestParam注解传递参数:{},{},{}", bid,bname,bookPrice);
    6. return "index";
    7. }

    3.2设置访问路径(localhost:8080/param/hello3?bname=狂飙&bid=2)

    5.路径传参 

    4.1创建方法用于验证

    1. @RequestMapping("/hello4/{bid}")
    2. public String hello4(@PathVariable("bid") Integer bid){
    3. log.info("简单类型参数:bid:{}",bid);
    4. return "index";
    5. }

    4.2设置访问路径(localhost:8080/param/hello4/2)

     6.RequestBody传参(专门用来接收json字符串)

    6.1导入依赖

     <jackson.version>2.9.3jackson.version>
    1. <dependency>
    2. <groupId>com.fasterxml.jackson.coregroupId>
    3. <artifactId>jackson-databindartifactId>
    4. <version>${jackson.version}version>
    5. dependency>
    6. <dependency>
    7. <groupId>com.fasterxml.jackson.coregroupId>
    8. <artifactId>jackson-coreartifactId>
    9. <version>${jackson.version}version>
    10. dependency>
    11. <dependency>
    12. <groupId>com.fasterxml.jackson.coregroupId>
    13. <artifactId>jackson-annotationsartifactId>
    14. <version>${jackson.version}version>
    15. dependency>

    6.2创建方法用于验证

    1. @RequestMapping("/hello5")
    2. public String hello5(Map map){
    3. log.info("@RequestBody:map:{}",map);
    4. return "index";
    5. }
    6. @RequestMapping("/hello6")
    7. public String hello6(@RequestBody Map map){
    8. log.info("@RequestBody:map:{}",map);
    9. return "index";
    10. }

    6.3通过aplikt测试

    6.4补充 

    reqiuestmapper(不安全,不具备标识意义)+=GetMapping+DeleteMappin+PutMapping+PostMapping
    1. //增加
    2. @PostMapping
    3. public String type1(){
    4. System.out.println("PostMapping");
    5. return "index";
    6. }
    7. //修改
    8. @PutMapping
    9. public String type2(){
    10. System.out.println("PutMapping");
    11. return "index";
    12. }
    13. //输出
    14. @DeleteMapping
    15. public String type3(){
    16. System.out.println("PutMapping");
    17. return "index";
    18. }
    19. @GetMapping
    20. public String type4 (){
    21. System.out.println("PutMapping");
    22. return "index";
    23. }

    7.@RequestHeader(获取请求头)

    7.1创建方法用于验证

    1. @RequestMapping("/hello7")
    2. public String hello6(@RequestHeader("jwt") String jwt){
    3. log.info("@RequestBody:jwt:{}",jwt);
    4. return "index";
    5. }

    7.2设置访问路径(localhost:8080/param/hello7)

    8.复合行

    1. @RequestMapping("/hello8")
    2. public String hello8(
    3. Book book,
    4. @RequestBody Map map,
    5. @RequestHeader("jwt") String jwt){
    6. log.info("@RequestBody:book:{}",book);
    7. log.info("@RequestBody:map:{}",map);
    8. log.info("@RequestBody:jwt:{}",jwt);
    9. return "index";
    10. }

     

    二.返回值

    1.void型

    1. @RequestMapping("/hello1")
    2. public void hello1(HttpServletResponse response){
    3. Map map=new HashMap<>();
    4. map.put("code",200);
    5. map.put("msg","成功添加");
    6. try {
    7. ResponseUtil .writeJson(response,map);
    8. } catch (Exception e) {
    9. e.printStackTrace();
    10. }
    11. }

    2.String+model类型 

    1. @RequestMapping("/hello4")
    2. public String hello5(Model model, HttpServletRequest request){
    3. model.addAttribute("currentName","永州鸭");
    4. request.setAttribute("location","来自于道州的");
    5. return "index";
    6. }

    3.ModelAndView

    1. @RequestMapping("/hello5")
    2. public ModelAndView hello5(){
    3. ModelAndView mv = new ModelAndView();
    4. //填充模型数据
    5. mv.addObject("sign","头脑灵范...");
    6. mv.setViewName("index");
    7. //逻辑视图名
    8. return mv;
    9. }

     

    三.页面跳转

    转发(forward:path)和重定向(redirect:path)这两种跳转方式将会绕开视图解析器的前缀后缀;还有就是如果是在同一controller中则不用使用"/"从根目录开始,而如果是在不同的controller则一定要从根目录开始。

    path为请求处理方法名,而非逻辑视图名。

    • 转发(地址栏不变)

    1. @RequestMapping("/hello1")
    2.    public String hello1(){
    3.        System.out.println("hell1");
    4.        return "forward:index";
    5.   }

    它相当于“request.getRequestDispatcher("url").forward(request,response)”。使用转发,既可以转发到jsp, 也可以转发到其他的控制器方法。

    • 重定向(地址栏改变)

    1. @RequestMapping("/hello2")
    2.    public String /hello2(){
    3.        System.out.println("/hello2");
    4.        return "redirect:index";
    5.   }

    它相当于“response.sendRedirect(url)”。需要注意的是,如果重定向到jsp页面,则jsp页面不能写在WEB-INF目录中,否则无法找到。

  • 相关阅读:
    使用小程序实现AI动漫脸特效
    素问·热论原文
    【Bug——VMware Workstation】虚拟机桥接网络没有 VMnet0
    音视频进阶-快速掌握流媒体服务器工作原理
    2024年腾讯云8核16G18M服务器租用价格1668元15个月
    yuv图像格式存储方式
    SpringCache-缓存技术
    redis进阶:集群模式原理及搭建
    【在Ubuntu部署Docker项目】— PROJECT#1
    微服务守护神-Sentinel-流控规则
  • 原文地址:https://blog.csdn.net/lz17267861157/article/details/132691255