利用Spring MVC开发程序1

简介: 利用Spring MVC开发程序

一、Spring MVC概述

Spring MVC是基于Servlet和MVC设计模式下实现的web项目,同时也是Spring框架中的web模块,Spring MVC是随着Spring产生而存在的一个框架。

那么什么又是MVC设计模式?

MVC的设计模式包含三层:Model、View以及Controller(模型、视图和控制器),如下为三者的关系图:

Spring MVC与MVC的区别就是MVC是设计思想,而Spring MVC是针对该思想进行的实现。

在idea中创建一个Spring MVC的项目的步骤如下:

1、点击新建一个项目:

2、选择版本号和添加相关依赖

点击Finish后项目创建完成。

二、实现用户和程序映射

使用@RequestMapping注解

通过使用@RequestMapping注解设置路由地址的方式来实现映射。

@RequestMapping("/hello")
    public String hello(){
        return "Hello!";
    }

在浏览器通过url访问一般都是GET方法,但@RequestMapping注解同样支持POST方法。

指定方法的形式,使用method属性进行指定方法,value来设置路由地址:

@RequestMapping(method = RequestMethod.GET,value = "/hello")

并且@RequestMapping注解不仅可以修饰方法也能修饰类,在类之前添加的@RequestMapping注解通常可以省略。

使用@PostMapping注解

使用@PostMapping("/xx")注解来设置路由地址来实现映射,但是该注解只支持POST方法。

使用@ GetMapping注解

使用@GetMapping("/xx")注解通过设置路由地址实现映射,但只支持GET方法。

@GetMapping("/hi")
    public String hi(){
        return "Hi World!";
    }

三、获取用户的请求参数

传递单个参数

可以传递单个参数来实现,此处传递的参数名一定要和前端保持一致,例如想获取User对象就可以通过传id来进行获取信息:

@RequestMapping("/getuser")
    public User getUser(Integer id){
        User user = new User();
        user.setId(id);
        user.setName("小风");
        user.setAge(18);
        return user;
    }

通过fiddler抓包工具可以发现此处响应的是json格式,不用像使用Servlet那样需要设置返回格式,而是会根据获取的数据类型自动选择。

传递多个参数  

传递多个参数来获取信息:

@RequestMapping("/login")
    public String login(String name,String password){
        return "user:"+name+",password:"+password;
    }

此处的参数如果和前端命名不一致,但项目已经完成,全部重命名不方便时就可以使用@RequestParam("xx")注解来设置与前端一致的命名,但是这也有缺陷,如果传入参数为空就会报错,所以就需要再给该注解的required属性设置为false。

@RequestMapping("/login")
    public String login(@RequestParam(value = "user",required = false) String name, String password){
        return "user:"+name+",password:"+password;
    }

传递一个对象

可以直接传递一个对象,并且 Spring MVC 可以⾃动实现参数对象的赋值。

@RequestMapping("/getinfo")
    public String getUserInfo(User user){
        return "用户:"+user;
    }

接收Json格式的数据

服务器端实现Json格式的数据接收就需要使用@RequestBody注解。

通过postman模拟实现如下:

URL地址中获取参数

上述获取对象的方法是从URL中的请求字符串来获取参数对象,但这样优先级较低,还有一种方法就直接是在url地址中获取参数,但是需要使用@PathVariable注解,并且在@ResponseMapping注解中也要利用{}加上参数,参数之间使用“/”分割。

 @RequestMapping("/user/{name}/{age}")
    public String getInfo(@PathVariable String name,@PathVariable Integer age){
        return "姓名:"+name+",年龄:"+age;
    }

上传文件

在上传文件时应该使用@RequestPart注解,其中@RequestPart中传入的参数是前端代码的文件名,为了避免上传文件的文件名重读就使用UUID来产生全球唯一的字符串进行命名,并且上传的文件的路径写在配置文件中,在不同的环境下使用不同的配置文件,但是配置文件都需以application开头,如下文件分别代表了开发环境下的配置文件信息以及生产环境下的配置文件信息:

然后在主配置文件中指明当前用的那个配置文件:

spring.profiles.active=dev


 @RequestMapping("/file")
    public boolean getFile(Integer id, @RequestPart("file")MultipartFile file){
        boolean result = false;
        String fileName = file.getOriginalFilename();
        fileName = fileName.substring(fileName.lastIndexOf("."));
        fileName = UUID.randomUUID()+fileName;
        try {
            //保存文件到本地
            file.transferTo(new File(impath+fileName));
            result = true;
        } catch (IOException e) {
            log.error("上传文件失败:"+e.getMessage());
        }
        return result;
    }

使用postman进行模拟上传:

在本地文件中可以看到上传的文件:

利用Spring MVC开发程序2:https://developer.aliyun.com/article/1521797?spm=a2c6h.13148508.setting.20.55b44f0eiXO8eW

目录
相关文章
|
1天前
|
设计模式 前端开发 Java
【Spring MVC】快速学习使用Spring MVC的注解及三层架构
【Spring MVC】快速学习使用Spring MVC的注解及三层架构
6 1
|
1天前
|
前端开发 Dubbo Java
spring面试题_spring mvc面试题_springboot面试题库
spring面试题_spring mvc面试题_springboot面试题库
|
3天前
|
JSON 前端开发 Java
【JavaEE进阶】 关于Spring MVC 响应
【JavaEE进阶】 关于Spring MVC 响应
14 3
|
5天前
|
缓存 NoSQL Java
在 SSM 架构(Spring + SpringMVC + MyBatis)中,可以通过 Spring 的注解式缓存来实现 Redis 缓存功能
【6月更文挑战第18天】在SSM(Spring+SpringMVC+MyBatis)中集成Redis缓存,涉及以下步骤:添加Spring Boot的`spring-boot-starter-data-redis`依赖;配置Redis连接池(如JedisPoolConfig)和连接工厂;在Service层使用`@Cacheable`注解标记缓存方法,指定缓存名和键生成策略;最后,在主配置类启用缓存注解。通过这些步骤,可以利用Spring的注解实现Redis缓存。
23 2
|
4天前
|
前端开发 Java 应用服务中间件
Spring框架第六章(SpringMVC概括及基于JDK21与Tomcat10创建SpringMVC程序)
Spring框架第六章(SpringMVC概括及基于JDK21与Tomcat10创建SpringMVC程序)
|
9天前
|
Java Maven Spring
第一个Spring程序(代码篇)
第一个Spring程序(代码篇)
11 1
|
13天前
|
JSON 前端开发 Java
Spring MVC 级联对象参数校验
【6月更文挑战第6天】在 Spring MVC 的使用过程中,我们会发现很多非常符合直觉的功能特性,但往往我们会习惯这种「被照顾得很好」的开发方式,依靠直觉去判断很多功能特性的用法。
17 1
|
1天前
|
前端开发 搜索推荐 Java
【Spring Boot】深度复盘在开发搜索引擎项目中重难点的整理,以及遇到的困难和总结
【Spring Boot】深度复盘在开发搜索引擎项目中重难点的整理,以及遇到的困难和总结
4 0
|
4天前
|
IDE Java API
如何使用Java和Spring Boot来开发一个基本的RESTful API
如何使用Java和Spring Boot来开发一个基本的RESTful API
10 0
|
4天前
|
前端开发 Java Maven
如何在Spring MVC中实现图片的上传和下载功能
如何在Spring MVC中实现图片的上传和下载功能