“深入理解SpringMVC的注解驱动开发“

这篇具有很好参考价值的文章主要介绍了“深入理解SpringMVC的注解驱动开发“。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


“深入理解SpringMVC的注解驱动开发“,mybatis,spring,tomcat,java,maven,idea,log4j

引言

在现代的Web开发中,SpringMVC已经成为了一个非常流行和强大的框架。它提供了许多注解来简化开发过程,使得我们能够更加专注于业务逻辑的实现。本文将深入探讨SpringMVC的注解驱动开发,重点关注常用注解、参数传递、返回值和页面跳转等方面。

1. SpringMVC的常用注解

1.1 @Controller
@Controller注解用于标识一个类是SpringMVC的控制器,它能够处理用户请求并返回相应的结果。我们可以通过在方法上使用@RequestMapping注解来指定请求的URL路径。
1.2 @RequestMapping
@RequestMapping注解用于将请求URL映射到相应的处理方法上。我们可以通过指定URL路径、请求方法、请求参数等来精确匹配请求。
1.3 @RequestParam
@RequestParam注解用于获取请求参数的值。我们可以通过指定参数名、是否必需、默认值等来获取请求中的参数值。
1.4 @PathVariable
@PathVariable注解用于获取URL路径中的参数值。我们可以通过在URL路径中使用占位符来指定参数名,并在方法参数中使用@PathVariable注解来获取参数值。
1.5 @ResponseBody
@ResponseBody注解用于将方法的返回值直接作为响应体返回给客户端。它可以将对象转换为JSON、XML等格式,并设置响应的Content-Type。
1.6.@RequestHeader

使用 @RequestHeader 注解可以获取指定的请求头信息。如果想要获取所有的请求头信息,可以使用 Map<String,String>、MultiValueMap<String,String>、HttpHeaders 这三个 Map 中的任何一个封装所有请求头的 name 和 value。

参数列表

参数 说明
name name 和 value 互为别名,当只有一个参数时,可以省略 value,直接(“xxx”) 就可以了
value name 和 value 互为别名,当只有一个参数时,可以省略 value,直接(“xxx”) 就可以了
required 默认情况下,如果请求头中缺少了指定的 name,那么将会报错。
如果没有添加required = false,当请求头中没有这个zking请求头时就会报错。
defaultValue 如果请求头中缺少了指定的 name ,那么会报错,可以使用 defaultValue 这个属性指定默认值,就可以避免报错 ;如果请求头缺少指定 name ,该属性设置的值将会作为默认值,如果该属性不设置值,它有自己的默认值 DEFAULT_NONE

2. SpringMVC的参数传递

2.1.基础类型+String

@RequestMapping("/h1")
    public String h1(String bname,Integer bid){
        log.info("基础类型+String传参:{},{}",bname,bid);
        return "index";
    }

2.2.复杂类型

    @RequestMapping("/h2")
    public String toHello2(Book book, HttpServletRequest req){
        log.info("复杂类型传参:{},{}", req.getParameter("bid"),req.getParameter("bname"));
        log.info("复杂类型传参:{}",book.toString());
        return "index";
    }

2.3.@RequestParam

  @RequestMapping("/h3")
    public String h3(@RequestParam Integer bid, @RequestParam(required = false) String bname){
        log.info(" 使用@RequestParam注解传递参数:{},{}", bid,bname);
        return "index";
    }

2.4.@PathVariable

    @RequestMapping("/h4/{bid}")
    public String h4(@PathVariable("bid") Integer bid){
        log.info(" 使用@PathVariable注解传递参数:{},", bid);
        return "index";
    }

2.5.@RequestBody

 //    能接受json数据,前提导入了Jackson依赖,没有导入Jackson依赖的话那进不了这个方法
    @RequestMapping("/h5")
        public String h5(@RequestBody Map map){
        log.info("RequestBody:map:{}",map);
        return "index";
    }

    //  不能接受json数据
    @RequestMapping("/h6")
    public String h6( Map map){
        log.info("RequestBody:map:{}",map);
        return "index";
    }

2.6.@RequestHeader

    @RequestMapping("/h7")
    public String h7(Book book, @RequestBody Map map, @RequestHeader("jwt") String jwt){
        log.info("book:{}",book);
        log.info("RequestBody:map:{}",map);
        log.info("RequestHeader:jwt:{}",jwt);
        return "index";
    }

3. SpringMVC的返回值

3.1 void返回

 public void f1(HttpServletResponse response) throws Exception {
        Map<String,Object> map = new HashMap<>();
        map.put("code",200);
        map.put("msg","成功");

        try {
        } catch (Exception e) {
            ResponseUtil.writeJson(response,map);
            e.printStackTrace();
        }
    }
   
@ResponseBody
@RequestMapping("/f2")
    public Map f2(HttpServletResponse resvponse) {
        Map<String,Object> map = new HashMap<>();
        map.put("code",200);
        map.put("msg","成功");

      return map;
    }

“深入理解SpringMVC的注解驱动开发“,mybatis,spring,tomcat,java,maven,idea,log4j

3.2 String返回

 @RequestMapping("/index")
    public String demo1(){
        System.out.println("hello  spring");
        return "index";
    }

3.3.String+Model返回

  @RequestMapping("/f3")
    public String f3(Model model, HttpServletRequest request){
        //填充模型数据
        model.addAttribute("name","张三");
        request.setAttribute("role","管理员");
        //逻辑视图名
        return "index";
    }
<%--
  Created by IntelliJ IDEA.
  User: yuanh
  Date: 2023/9/4
  Time: 17:04
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
hello word

name:${name}
role:${role}
</body>
</html>

“深入理解SpringMVC的注解驱动开发“,mybatis,spring,tomcat,java,maven,idea,log4j

3.4.ModelAndView

@RequestMapping("/f4")
    public ModelAndView f4(){
        ModelAndView mv = new ModelAndView();
        //填充模型数据
        mv.addObject("price","19.9");

        mv.setViewName("index");
        //逻辑视图名
        return mv;
    }

“深入理解SpringMVC的注解驱动开发“,mybatis,spring,tomcat,java,maven,idea,log4j

4. SpringMVC页面跳转

4.1 重定向

    @RequestMapping("/z3")
    public String z3(){
        System.out.println("z3");

        return "redirect:h1";
    }

    @RequestMapping("/z4")
    public String z4(){
        System.out.println("z4");
        return "redirect:/main/index";
    }

4.2 转发

	@RequestMapping("/z1")
    public String z1(){
        System.out.println("z1");

        return "forward:h1";
    }

    @RequestMapping("/z2")
    public String z2(){
        System.out.println("z2");
        return "forward:/main/index";
    }

总结

本文深入探讨了SpringMVC的注解驱动开发,重点关注了常用注解、参数传递、返回值和页面跳转等方面。通过学习和理解这些内容,我们可以更加灵活和高效地使用SpringMVC来开发Web应用程序。希望本文对您有所帮助!文章来源地址https://www.toymoban.com/news/detail-696200.html

到了这里,关于“深入理解SpringMVC的注解驱动开发“的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 深入理解Spring @RequestBody注解的用法与作用

    当我们使用 Spring Boot 框架处理客户端提交的 HTTP 请求时,常常需要获取请求参数并将其转换为相应的 Java 对象。@RequestBody 注解可以帮助我们实现这个目标,它用于从 HTTP 请求体中获取请求参数,并将其转换为指定的 Java 对象。本篇博客将介绍 @RequestBody 注解的基本用法和注意

    2024年02月15日
    浏览(44)
  • 深入理解Spring AOP注解:@DataScope与@DataSource

    在Spring AOP中,注解的使用扮演着重要角色,它们可以帮助我们明确定义切面、切点和增强处理。在本文中,我们将深入探讨RuoYi框架两个自定义注解:@DataScope和@DataSource。 定义注解 首先,我们定义一个名为@DataScope的注解,用于在特定的方法上实现数据范围过滤等功能。 定义

    2024年02月16日
    浏览(33)
  • 深入理解Spring的@Async注解:实现异步方法调用

    在当今高速发展的应用开发领域,对于提升系统性能和响应能力的需求越来越迫切。而异步编程作为一种解决方案,已经成为现代应用开发中的一项重要技术。本篇博客将带您深入探究 Java 中的 @Async 注解,揭示其强大的异步执行能力和精妙的实现机制。 异步编程是一种编程

    2024年02月05日
    浏览(45)
  • 深入理解 Spring 中的 @RequestBody 和 @ResponseBody 注解及其区别

    在现代的 Web 开发中,处理 HTTP 请求和响应是不可或缺的任务。Spring Framework 提供了丰富的功能来简化这些任务,并使开发人员能够更专注于业务逻辑。在本文中,我们将深入探讨 Spring 中的 @RequestBody 和 @ResponseBody 注解,以及它们之间的区别。 @RequestBody 注解是 Spring 提供的一

    2024年02月14日
    浏览(42)
  • 深入理解Spring Kafka中@KafkaListener注解的参数与使用方式

    Apache Kafka作为一个强大的消息代理系统,与Spring框架的集成使得在分布式应用中处理消息变得更加简单和灵活。Spring Kafka提供了 @KafkaListener 注解,为开发者提供了一种声明式的方式来定义消息监听器。在本文中,我们将深入探讨 @KafkaListener 注解的各种参数以及它们的使用方

    2024年01月16日
    浏览(49)
  • Spring的注解开发-注解方式整合MyBatis代码实现

    之前使用xml方式整合了MyBatis,文章导航:Spring整合第三方框架-MyBatis整合Spring实现-CSDN博客 现在使用注解的方式无非是就是将xml标签替换为注解,将xml配置文件替换为配置类而已。 非自定义配置类                 与数据库建立连接的同时,扫描指定的mapper接口,实现实现

    2024年02月07日
    浏览(52)
  • Spring+SpringMVC+MyBatis整合项目开发(配有项目,已开源)

    🍰 个人主页:__Aurora__ 🍞 如果文章有什么需要改进的地方还请各位大佬斧正。 🍉如果我的文章对你有帮助➡️ 关注🙏🏻 点赞👍 收藏⭐️ 🔥最近在学SSM框架,本文是根据b站【黑马程序员 ssm框架 2021 版】整理。 🔥视频链接:https://www.bilibili.com/video/BV1WZ4y1P7Bp?spm_id_from=3

    2023年04月08日
    浏览(51)
  • spring注解驱动开发(二)

    17、Bean的生命周期 bean的生命周期:bean的创建—初始化—销毁的过程 容器负责管理bean的生命周期 我们可以自定义初始化和销毁方法,容器在bean进行到当前生命周期的时候来调用我们自定义的初始化和销毁方法 构造(对象创建) 单实例:在容器启动时创建对象 多实例:在每

    2024年02月14日
    浏览(37)
  • spring注解驱动开发(一)

    Spring常用注解(绝对经典) 1、需要导入的spring框架的依赖 2、@Configuration 设置类为配置类 3、AnnotationConfigApplicationContext 通过配置类获取上下文环境applicationContext 可以通过getBeanDefinitionNames()获得配置类中配置的各类Bean 也可以使用getBeanNamesForType()通过类型来获得bean的name(id)

    2024年02月14日
    浏览(35)
  • Spring注解驱动开发(二)

    注:此笔记为尚硅谷Spring注解驱动教程(雷丰阳源码级讲解)学习笔记,并同时参考[https://blog.csdn.net/xjhqre/article/details/123264069]博主文章,其中包含个人的笔记和理解,仅做学习笔记之用。 简述: 1、实例化一个Bean--也就是我们常说的new; 2、按照Spring上下文对实例化的Bean进

    2024年02月03日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包