【Spring MVC】Spring MVC的功能使用和相关注解介绍

这篇具有很好参考价值的文章主要介绍了【Spring MVC】Spring MVC的功能使用和相关注解介绍。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Spring MVC主要有三个功能:

  1. 连接
  2. 获取参数
  3. 输出数据

对于 Spring MVC 来说,掌握了以上 3 个功能就相当于掌握了Spring MVC。

1.连接

连接的功能:将⽤户(浏览器)和 Java 程序连接起来,也就是访问⼀个地址能够调⽤到我们的Spring 程序。

1.1 实现 Spring MVC的连接

先创建一个SpringMVC项目,过程和SpringBoot项目创建相同。

可以参考这篇文章SpringBoot的创建和运行

接下来,创建⼀个 UserController 类,实现⽤户到 Spring 程序的互联互通,具体实现代码如下:

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller // 让 spring 框架启动时,加载
@ResponseBody // 返回⾮⻚⾯数据
@RequestMapping("/user") // 路由器规则注册
public class UserController {
 // 路由器规则注册
 	@RequestMapping("/hi")
 	public String sayHi(){
 		return "<h1>Hi,Spring MVC.</h1>";
 	}
}

这样实现之后,当访问地址:http://localhost:8080/user/hi 时就能打印“hello,spring mvc”的信息了。

1.2 注解介绍

@RequestMapping

@RequestMapping是⽤来注册接⼝的路由映射的。

路由映射:所谓的路由映射指的是,当⽤户访问⼀个 url 时,将⽤户的请求对应到程序中某个类 的某个⽅法的过程就叫路由映射

  • @RequestMapping 即可修饰类,也可以修饰⽅法,当修饰类和⽅法时,访问的地址是类 + ⽅法。
  • @RequestMapping 既是post请求又是get请求。
@Controller
@RequestMapping("/web")
public class WebController {

    //响应视图
    @RequestMapping("/index")
    public String index(){
        return "/index.html";
    }
    //响应正文
    @ResponseBody
    @RequestMapping("/indexData")
    //只支持get请求
    //@RequestMapping(value = "/indexData",method = RequestMethod.GET)
    public String indexData(){
        return "hello,MVC";
    }
}

@GetMapping

实现get请求。

get请求的三种写法:

// 写法1
@RequestMapping("/index")
// 写法2
@RequestMapping(value = "/index",method = RequestMethod.GET)
// 写法3
@GetMapping("/index")

@PostMapping

实现post请求。

post请求的两种写法:

// 写法1
@RequestMapping(value = "/index",method = RequestMethod.POST)
// 写法2
@PostMapping("/index")

2.获取参数

2.1 传递单个参数

在 Spring MVC 中可以直接⽤⽅法中的参数来实现传参,⽐如以下代码:

@RestController
@RequestMapping("/param")
public class ParamController {

    //servlet传参
    @RequestMapping("/get1")
    public String get1(HttpServletRequest request){
        String name=request.getParameter("name");
        return "name:"+name;
    }
    //MVC传参
    @RequestMapping("/get2")
    public String get2(String name){
        return "name:"+name;
    }
    //多个参数传参
    @RequestMapping("/get3")
    public String get3(String name,Integer age){
        return "name:"+name+"|age:"+age;
    }
}

2.2 传递对象

定义一个Student类:

@Data
public class Student {
    private Integer id;
    private String name;
    private Integer age;
}

传递对象代码实现:

    @RequestMapping("/get6")
    public String get6(Student student){
        return student.toString();
    }

2.3 后端参数重命名

某些特殊的情况下,前端传递的参数 key 和我们后端接收的 key 可以不⼀致,⽐如前端传递了⼀个
n 给后端,⽽后端⼜是由name 字段来接收的,这样就会出现参数接收不到的情况,如果出现
这种情况,我们就可以使⽤ @RequestParam 来重命名前后端的参数值。

代码实现:

    @RequestMapping("/get7")
    public String get7(@RequestParam(name="n",required = false) String name){
        return "name:"+name;
    }

参数必传:将required设置成false,来避免不传递时报错

2.4 接收JSON对象

@RequestBody

上传一个json格式的数据:

【Spring MVC】Spring MVC的功能使用和相关注解介绍,SpringBoot,spring,mvc,java,spring boot

后端接收代码实现:

    @RequestMapping("/get8")
    public String get8(@RequestBody Student student){
        log.info(student.toString());
        return student.toString();
    }

@RequestBody表示接收的是一个json字符串,String会帮我们把这个字符串转为对象。

2.5 获取URL中参数

@PathVariable

给定一个URL:
【Spring MVC】Spring MVC的功能使用和相关注解介绍,SpringBoot,spring,mvc,java,spring boot
实现代码:

    @RequestMapping("/get9/{shopid}")
    public String get9(@PathVariable Integer shopid){
        return "shopid:"+shopid;
    }

2.6 上传文件

@RequestPart

实现代码:

    @RequestMapping("/get10")
    public String get10(@RequestPart("file") MultipartFile file) throws IOException {
        log.info(file.getOriginalFilename());
        file.transferTo(new File("D:\\Desktop\\Bit\\temp"+file.getOriginalFilename()));
        return "success";
    }

2.7 获取Cookie/Session/header

@CookieValue

获取Session实现代码:

    @RequestMapping("/get11")
    public String get11(@CookieValue(required = false) String bite){
        return "bite:"+bite;
    }

@SessionAttribute

设置Session实现代码:

    @RequestMapping("/get12")
    public String get12(@SessionAttribute(required = false) String username){
        return "username:"+username;
    }

设置之后,cookie中会多一个sessionId。

@RequestHeader

获取Header内容实现代码:

    @RequestMapping("/get13")
    public String get13(@RequestHeader("User-Agent") String useragent){
        return "useragent:"+useragent;
    }

2.8 返回JSON对象

实现代码:

    @RequestMapping("/get14")
    public Map<String,String> get14(){
        Map<String,String>map=new HashMap<>();
        map.put("k1","v1");
        map.put("k2","v2");
        map.put("k3","v3");
        map.put("k4","v4");
        return map;
    }

3.输出数据

3.1 返回静态页面

实现代码:

    //响应视图
    @RequestMapping("/index")
    public String index(){
        return "/index.html";
    }

3.2 返回text正文

@ResponseBody

实现代码:

	//响应正文
    @ResponseBody

> 这里是引用

    @RequestMapping("/indexData")
    public String indexData(){
        return "hello,MVC";
    }
}

4.请求转发和请求重定向

return 不但可以返回⼀个视图,还可以实现跳转,跳转的⽅式有两种:

  • forward:请求转发;
  • redirect:请求重定向。

举例说明: forward(请求转发)和 redirect(请求重定向)的区别

你告诉你妈妈,你想吃辣条,如果你妈妈,说好,我帮你去买,这就是 forward 请求转发;如果你妈妈让你⾃⼰去买,那么就是
请求 redirect 重定向

4.1 请求转发forward

代码实现:

    /**
     * 请求转发
     * @return
     */
    @RequestMapping("/forward")
    public String forward(){
        return "forward:/index.html";
    }

4.2 请求重定向redirect

代码实现:文章来源地址https://www.toymoban.com/news/detail-601911.html

    /**
     * 请求重定向
     * @return
     */
    @RequestMapping("/redirect")
    public String redirect(){
        return "redirect:/index.html";
    }

到了这里,关于【Spring MVC】Spring MVC的功能使用和相关注解介绍的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 三、使用注解形式开发 Spring MVC程序

    1、 创建 maven 项目,添加框架支持 2、 添加依赖,因为 maven 可以有一些资源过滤的问题,这里直接将资源过滤配置补全 3、 检查项目结构中是否有 lib 夹以及 jar 是否成功导入了,并配置 tomcat 这里配置完基本上就不用在动了,统一使用注解来解决 @Controller: @Controller 用于标

    2024年02月12日
    浏览(31)
  • Spring MVC:常用参数(注解)的使用和参数绑定的验证

    Java EE企业级应用开发教程(Spring+Spring MVC+MyBatis)(第2版) Spring MVC常用参数 Spring MVC简单应用 Spring MVC参数绑定 本实验采用的是本地安装的tomcat8.5.0版本 (1)创建maven 管理的java web工程 (2)添加本地tomcat war包 (3)实验过程 输出Hello Word 访问端口:http://localhost:8080/chapter1

    2024年02月04日
    浏览(36)
  • 【Spring】— Spring MVC的注解

    1.DispatcherServlet DispatcherServlet的全名: org.Springframework.web.servlet.DispatcherServlet 它在程序中充当着前端控制器的角色。 【示例】在使用DispatcherServlet时,只需将其配置在项目的web.xml文件中,其配置代码如下。 在上述代码中, load-on-startup 元素和 init-param 元素都是可选的。如果 lo

    2024年02月10日
    浏览(26)
  • 【Spring MVC】Spring MVC基于注解的程序开发

    目录 一、什么是Spring MVC  二、Spring MVC项目的创建和使用 1、实现客户端和服务器端之间的连接 1.1、RequsestMapping注解 1.2、@RequestMapper的简单使用  1.3、使用@GetMapping和@POSTMapping注解来实现HTTP连接 三、获取参数 1、实现获取单个参数 2、实现获取对象 3、后端参数重命名(@Requ

    2024年02月13日
    浏览(37)
  • Spring MVC常用注解

    @PathVariable、@RequestBody和@RequestParam @PathVariable、@RequestBody和@RequestParam是Spring MVC框架中用于处理请求参数的注解。 @PathVariable:用于处URL路径中的 占位符参数 。例如,对于URL /users/{id} ,其中的 {id} 是一个占位符,可以使用@PathVariable注解将其绑定到方法的参数上,如下所示:

    2024年02月09日
    浏览(29)
  • 【框架篇】Spring MVC 介绍及使用(详细教程)

    MVC(Model-View-Controller)是一种常见的软件设计模式,用于将应用程序的逻辑分离成三个独立的组件: 模型(Model) :模型是应用程序的数据和业务逻辑的表示。它负责处理数据的读取、存储和操作,以及业务规则的处理。模型通常是独立于用户界面的,可以在不同的视图和控

    2024年02月14日
    浏览(32)
  • Spring MVC-@RequestMapping注解详解

    目录 1、@RequestMapping注解的作用 2、@RequestMapping注解的位置 3、value属性 (1)基础用法 (3)路径中的占位符(重点) 4、method属性 5、params属性(了解) 6、headers属性(了解) @RequestMapping注解的作用,就是 将请求和处理请求的控制器方法关联起来 ,建立映射关系。 SpringMVC接

    2023年04月24日
    浏览(34)
  • Spring MVC 三 :基于注解配置

    Servlet3.0 Servlet3.0是基于注解配置的理论基础。 Servlet3.0引入了基于注解配置Servlet的规范,提出了可拔插的ServletContext初始化方式,引入了一个叫ServletContainerInitializer的接口。 An instance of the ServletContainerInitializer is looked up via the jar services API by the container at container / application sta

    2024年02月11日
    浏览(26)
  • Spring MVC 的RequestMapping注解

    作用:用于建立请求URL和处理请求方法之间的对应关系。 出现位置: 类上: 请求 URL的第一级访问目录。此处不写的话,就相当于应用的根目录。写的话需要以/开头。它出现的目的是为了使我们的 URL 可以按照模块化管理,例如: 账户模块: /account /add /account /update /account

    2024年02月02日
    浏览(29)
  • Spring MVC学习之——RequestMapping注解

    用于建立请求URL和处理请求方法之间的对应关系。 value:指定请求的实际地址,可以是一个字符串或者一个字符串列表。 value可以不写,直接在括号中写,默认就是value值 @RequestMapping(value=“/hello”) public String hello(){ return…} method:指定请求的方式,可以是GET、POST、PUT、DELE

    2024年01月18日
    浏览(41)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包