前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring MVC 框架学习(四)----连接程序

Spring MVC 框架学习(四)----连接程序

作者头像
RAIN7
发布2022-08-23 15:44:20
5130
发布2022-08-23 15:44:20
举报

文章目录

SpringMVC 框架学习(四)---- 连接程序

1、标识后端控制器

@Controller

相当于替代了 HandlerMapping 和 HandlerAdapter 的作用,同时将这个类 托管到 Spring 的容器中管理

2、实现客户与程序的互联互通

(1)@RequestMapper

@RequestMapping 是 Spring Web应用程序中最常用到的注解之一,是用来注册接口的路由映射的。

既能修饰一个类也能修饰一个方法。

如果在类和方法上面都加上@ReestMapper,那么访问的时候就有多级目录了

(2)@ResponseBody

与 @RequestMapping 搭配使用,可以返回一个非页面的数据,比如说返回一个字符串,JSON格式的数据等等。

在默认情况下 @RequestMapping 返回的是页面

(3)不同的访问目录

方法上面加上映射@RequestMapping,访问时一级目录访问

代码语言:javascript
复制
package com.bit.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class HelloController{

   @RequestMapping("/hi")
   @ResponseBody
    public String hello(){
       return "Hello SpringMVC";
   }

}
在这里插入图片描述
在这里插入图片描述

类和方法上都加上 @RequestMapping,两级目录访问接口

代码语言:javascript
复制
package com.bit.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("/aaaa")
public class HelloController{

   @RequestMapping("/hi")
    @ResponseBody
  public String hello(){
       return "Hello SpringMVC";
   }

}
在这里插入图片描述
在这里插入图片描述

总结

1、@RequestMapping 的作用就是用来注册一个 url 路由,通过这个路由,前端的请求可以实现和后端程序的交互了。而@RequestMapping 这个注解既能修饰方法,又能修饰类。

2、默认情况下使用@RequestMapping 会返回一个 html页面,当加上ResponseBody 注解之后就能返回非页面的数据了。

3、@ResponseBody 也能修饰方法和类,当修饰类的时候,表示此类中的所有方法都会返回一个非页面的数据。(前后端分离,后端只返回数据)

解决控制器返回中文数据乱码的情况

错误的方案

在Controller中修改响应头Content-Type的值为"text/html;charset=utf-8"

在这里插入图片描述
在这里插入图片描述

修改之后,乱码问题还是没有解决

注解加属性解决

在Controller中的@RequestMapping注解添加produces = “text/html;charset=utf-8”。代码如下所示

代码语言:javascript
复制
@RequestMapping(value="/hello",produces="text/html;charset=utf8")

produces属性能够指定返回数据的类型, 还可以指定返回值的编码 ,能够成功解决响应中文相应乱码问题

@ReuqestMapping 各属性作用详情可以看下面这篇博客

(2https://blog.csdn.net/lzb348110175/article/details/88552507条消息) 2.@RequestMapping各个属性的使用_扛麻袋的少年的博客-CSDN博客_requestmapping属性

(4)@RequestMapping 接收的是GET 还是 POST ?

我们写一个具体的控制器,没有指定传递的方法是什么,传递name参数,使用postman发送GET请求

代码语言:javascript
复制
package com.bit.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
@ResponseBody
public class HelloController{

    @RequestMapping(value = "/hi",produces = "text/html;charset=utf8")
    public String hello(String name){
        return "你好 "+name;
    }


}

发送GET请求之后的结果,成功接受了GET请求

在这里插入图片描述
在这里插入图片描述

发送POST请求之后的结果,也能成功接收

在这里插入图片描述
在这里插入图片描述

说明 在没有指定方法的情况下,@RequestMapping 任意类型的方法都能接收。

同时,@Request Mapping 通过Method属性可以指定接收对应的方法,如果指定了GET,发送了POST,那么就会报405 方法不接受异常。

代码语言:javascript
复制
   @RequestMapping(value = "/hi",produces = "text/html;charset=utf8",method = RequestMethod.GET)
    public String hello(String name){
        return "你好 "+name;
    }

通过postman发送 post请求,结果显示405报错,方法不允许

在这里插入图片描述
在这里插入图片描述

@RequestMapping的请求方式

(1)如果方法上的@RequestMapping注解没有设置method属性,则get和post请求默认都可以访问。任何请求都能访问接收。

(2)如果方法上的@RequestMapping注解设置了method属性,则只能是相应的请求方式可以访问。

(5)@RequestMapping 指定方法的方式

1、通过 method 属性设置

在@RequestMapping 注解的属性中 存在 method可以进行 设置指定接收的方法

在这里插入图片描述
在这里插入图片描述

2、通过@GetMapping等注解达到同样的效果

spring MVC 中还可以通过 @GetMapping、 @PostMapping 等一系列注解达到相同的效果

代码语言:javascript
复制
    @GetMapping(value = "/hi",produces = "text/html;charset=utf8")
    public String hello(String name){
        return "你好 "+name;
    }

发送post请求之后访问失败

在这里插入图片描述
在这里插入图片描述

3、@RequestMapping 和 @GetMapping 的区别

  • @RequestMapping 支持任意一种类型请求(GET、POST、PUT)
  • @GetMapping 只支持get方式的请求
  • @ReuqestMapping 既支持修饰 方法 ,也支持修饰 ,@GetMapping 只支持修饰 方法
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-07-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • SpringMVC 框架学习(四)---- 连接程序
  • 1、标识后端控制器
  • 2、实现客户与程序的互联互通
  • (1)@RequestMapper
  • (2)@ResponseBody
  • (3)不同的访问目录
  • 总结
  • 解决控制器返回中文数据乱码的情况
    • 错误的方案
      • 注解加属性解决
      • (4)@RequestMapping 接收的是GET 还是 POST ?
      • (5)@RequestMapping 指定方法的方式
        • 1、通过 method 属性设置
          • 2、通过@GetMapping等注解达到同样的效果
            • 3、@RequestMapping 和 @GetMapping 的区别
            相关产品与服务
            容器服务
            腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档