利用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

目录
相关文章
|
6月前
|
前端开发 Java 测试技术
微服务——SpringBoot使用归纳——Spring Boot中的MVC支持——@RequestParam
本文介绍了 `@RequestParam` 注解的使用方法及其与 `@PathVariable` 的区别。`@RequestParam` 用于从请求中获取参数值(如 GET 请求的 URL 参数或 POST 请求的表单数据),而 `@PathVariable` 用于从 URL 模板中提取参数。文章通过示例代码详细说明了 `@RequestParam` 的常用属性,如 `required` 和 `defaultValue`,并展示了如何用实体类封装大量表单参数以简化处理流程。最后,结合 Postman 测试工具验证了接口的功能。
281 0
微服务——SpringBoot使用归纳——Spring Boot中的MVC支持——@RequestParam
|
5月前
|
人工智能 Java 数据库
飞算 JavaAI:革新电商订单系统 Spring Boot 微服务开发
在电商订单系统开发中,传统方式耗时约30天,需应对复杂代码、调试与测试。飞算JavaAI作为一款AI代码生成工具,专注于简化Spring Boot微服务开发。它能根据业务需求自动生成RESTful API、数据库交互及事务管理代码,将开发时间缩短至1小时,效率提升80%。通过减少样板代码编写,提供规范且准确的代码,飞算JavaAI显著降低了开发成本,为软件开发带来革新动力。
|
5月前
|
前端开发 Java UED
从基础到进阶:Spring Boot + Thymeleaf 整合开发中的常见坑与界面优化
本文深入探讨了 **Spring Boot + Thymeleaf** 开发中常见的参数绑定问题与界面优化技巧。从基础的 Spring MVC 请求参数绑定机制出发,分析了 `MissingServletRequestParameterException` 的成因及解决方法,例如确保前后端参数名、类型一致,正确设置请求方式(GET/POST)。同时,通过实际案例展示了如何优化支付页面的视觉效果,借助简单的 CSS 样式提升用户体验。最后,提供了官方文档等学习资源,帮助开发者更高效地掌握相关技能。无论是初学者还是进阶用户,都能从中受益,轻松应对项目开发中的挑战。
175 0
|
6月前
|
JSON 前端开发 Java
微服务——SpringBoot使用归纳——Spring Boot中的MVC支持——@RequestBody
`@RequestBody` 是 Spring 框架中的注解,用于将 HTTP 请求体中的 JSON 数据自动映射为 Java 对象。例如,前端通过 POST 请求发送包含 `username` 和 `password` 的 JSON 数据,后端可通过带有 `@RequestBody` 注解的方法参数接收并处理。此注解适用于传递复杂对象的场景,简化了数据解析过程。与表单提交不同,它主要用于接收 JSON 格式的实体数据。
415 0
|
6月前
|
前端开发 Java 微服务
微服务——SpringBoot使用归纳——Spring Boot中的MVC支持——@PathVariable
`@PathVariable` 是 Spring Boot 中用于从 URL 中提取参数的注解,支持 RESTful 风格接口开发。例如,通过 `@GetMapping("/user/{id}")` 可以将 URL 中的 `{id}` 参数自动映射到方法参数中。若参数名不一致,可通过 `@PathVariable("自定义名")` 指定绑定关系。此外,还支持多参数占位符,如 `/user/{id}/{name}`,分别映射到方法中的多个参数。运行项目后,访问指定 URL 即可验证参数是否正确接收。
248 0
|
2月前
|
前端开发 Java API
Spring Cloud Gateway Server Web MVC报错“Unsupported transfer encoding: chunked”解决
本文解析了Spring Cloud Gateway中出现“Unsupported transfer encoding: chunked”错误的原因,指出该问题源于Feign依赖的HTTP客户端与服务端的`chunked`传输编码不兼容,并提供了具体的解决方案。通过规范Feign客户端接口的返回类型,可有效避免该异常,提升系统兼容性与稳定性。
141 0
|
2月前
|
SQL Java 数据库连接
Spring、SpringMVC 与 MyBatis 核心知识点解析
我梳理的这些内容,涵盖了 Spring、SpringMVC 和 MyBatis 的核心知识点。 在 Spring 中,我了解到 IOC 是控制反转,把对象控制权交容器;DI 是依赖注入,有三种实现方式。Bean 有五种作用域,单例 bean 的线程安全问题及自动装配方式也清晰了。事务基于数据库和 AOP,有失效场景和七种传播行为。AOP 是面向切面编程,动态代理有 JDK 和 CGLIB 两种。 SpringMVC 的 11 步执行流程我烂熟于心,还有那些常用注解的用法。 MyBatis 里,#{} 和 ${} 的区别很关键,获取主键、处理字段与属性名不匹配的方法也掌握了。多表查询、动态
|
2月前
|
JSON 前端开发 Java
第05课:Spring Boot中的MVC支持
第05课:Spring Boot中的MVC支持
124 0