SpringMVC程序开发

29 篇文章 0 订阅
本文详细介绍了SpringMVC与MVC架构的关系,以及如何在SpringMVC中创建项目、设置URL路由、处理不同类型的参数(包括单个、多个、对象和JSON)、文件上传,以及管理Cookie、Session和URL参数。还讨论了参数重命名的重要性。
摘要由CSDN通过智能技术生成

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,此时后端只能识别重命名之后的参数名;

  • 24
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值