SpringMVC程序开发

发布时间:2024年01月24日

SpringMVC与MVC

SpringMVC的全称是Spring Web MVC,是基于Servlet API构建的一个WEB框架。MVC则是Model View Controller的缩写,属于一种软件架构的模式,即将一个软件系统分成了模型、视图、控制器三个部分。

在这里插入图片描述

用户发送一个http请求到控制器(应用程序中处理用户交互的部分),控制器将处理之后的请求信息发送到模型部分(处理应用程序数据逻辑的部分),之后由模型返回相应的响应信息到控制器,控制器再将这些信息数据发送到视图部分(处理数据显示的部分),最后返回http响应到用户端,即使用MVC模式完成了一次数据访问。

SpringMVC与MVC之间是一种相辅相成的关系,即MVC是一种思想,而SpringMVC是对MVC思想的具体实现。

关于SpringMVC,主要需要关注的可以大致分为三个部分:连接浏览器访问和java程序、获取用户访问时带有的参数、返回程序的执行结果给用户。

SpringMVC的创建

Spring MVC项目的创建是建立在Spring Boot创建的基础上再添加一个Web框架完成的。

在这里插入图片描述

建立连接

package com.example.demo;

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


@Controller         /*  将当前类加载并注册到Spring    */
@RequestMapping("/user")
public class UserController {
    @RequestMapping("/hello")
    @ResponseBody       /*返回非静态页面*/
    public String hello(){
        return "hello~";
    }
}



在这里插入图片描述
也可以使用注解@RestController来等价替换@Controller+@ResponseBody,可以达到同样的效果;

@RequestMapping

SpringMVC中使用注解@RequestMapping来实现URL路由的映射,连接浏览器和程序。该注解可以修饰类,也可以修饰方法,访问时只需要地址加上类及方法的路由即可;

@RequestMapping支持get请求和post请求,同时也可以显式地指定只能接收某种请求;

可以使用postman来访问,查看结果:

在这里插入图片描述
显式地指定请求的方法:
在这里插入图片描述
此时只能发送post 请求:

在这里插入图片描述
发送其他类型的请求都会请求失败:

在这里插入图片描述

@GetMapping

使用该注解时,只支持get请求:
在这里插入图片描述

在这里插入图片描述

@PostMapping

使用该注解时,只支持post请求:

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

获取参数

传递单个参数
package com.example.demo;

import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.http.HttpRequest;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.net.http.HttpResponse;

@RestController
@RequestMapping("/web")
public class WebController {

    /*
    * Servlet获取单个参数的方式
    * */

    @RequestMapping("/getname1")

    public Object getName1(HttpServletRequest request, HttpServletResponse response){
        return request.getParameter("name1");
    }


    /*
    * SpringMVC获取单个参数
    * */

    @RequestMapping("/getname")

    public Object getName(String name){
        return "name= "+name;
    }
}

方法中传入的参数名必须与url中访问的参数名保持一致,区分大小写;
在这里插入图片描述

在这里插入图片描述
相比之下,Spring MVC获取参数的方式相对要更加简单,但实际是在Spring MVC中默认内置了HttpServletRequest、HttpServletResponse 两个参数;

传递多个参数

在这里插入图片描述

在这里插入图片描述
传递多个参数时,URL中参数的顺序不会影响访问的结果;

传递对象

首先需要创建一个对象:
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

表单参数传递

表单参数的传递与多个参数的传递相似,需要格外注意的是,后端的路由设置必须与前端保持一致,同时前后端的参数名也必须保持一致;

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

接收JSON对象

需要使用到注解@RequestBody
在这里插入图片描述
使用postman来构造json对象,并进行访问:

在这里插入图片描述

文件传递

在这里插入图片描述
可以使用postman来进行验证:
在这里插入图片描述

获取Cookie/Session/header

在这里插入图片描述
使用浏览器验证时,需要通过开发者工具来设置Cookie的值:
在这里插入图片描述

注解@CookieValue中的值代表的是前端传递的Cookie名称;

在这里插入图片描述

在这里插入图片描述

注解@SessionAttribute中的值代表前端传递的Session参数的名称,此处将required值设置为false是使得验证代码是不出现报错的结果;

在这里插入图片描述

在这里插入图片描述

获取URL中的参数

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

使用注解 @PathVariable可以获取到URL中的参数,但实际访问的URL必须与后端设置的路由格式一致,才可以正常访问;

参数重命名

前后端的数据交互影响着程序的正确运行,若前后端传递的参数名不一致,会导致数据访问失败,因此在一些情况下需要进行参数的重命名;

在这里插入图片描述

注解中的值即重命名之后的参数名t,同时将该参数名下的值赋值给time,此时后端只能识别重命名之后的参数名;

文章来源:https://blog.csdn.net/weixin_54175406/article/details/135587548
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。