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

目录
相关文章
|
8天前
|
人工智能 Java API
阿里云工程师跟通义灵码结伴编程, 用Spring AI Alibaba来开发 AI 答疑助手
本次分享的主题是阿里云工程师跟通义灵码结伴编程, 用Spring AI Alibaba来开发 AI 答疑助手,由阿里云两位工程师分享。
阿里云工程师跟通义灵码结伴编程, 用Spring AI Alibaba来开发 AI 答疑助手
|
1月前
|
人工智能 前端开发 Java
Spring AI Alibaba + 通义千问,开发AI应用如此简单!!!
本文介绍了如何使用Spring AI Alibaba开发一个简单的AI对话应用。通过引入`spring-ai-alibaba-starter`依赖和配置API密钥,结合Spring Boot项目,只需几行代码即可实现与AI模型的交互。具体步骤包括创建Spring Boot项目、编写Controller处理对话请求以及前端页面展示对话内容。此外,文章还介绍了如何通过添加对话记忆功能,使AI能够理解上下文并进行连贯对话。最后,总结了Spring AI为Java开发者带来的便利,简化了AI应用的开发流程。
397 0
|
17天前
|
监控 JavaScript 数据可视化
建筑施工一体化信息管理平台源码,支持微服务架构,采用Java、Spring Cloud、Vue等技术开发。
智慧工地云平台是专为建筑施工领域打造的一体化信息管理平台,利用大数据、云计算、物联网等技术,实现施工区域各系统数据汇总与可视化管理。平台涵盖人员、设备、物料、环境等关键因素的实时监控与数据分析,提供远程指挥、决策支持等功能,提升工作效率,促进产业信息化发展。系统由PC端、APP移动端及项目、监管、数据屏三大平台组成,支持微服务架构,采用Java、Spring Cloud、Vue等技术开发。
|
26天前
|
监控 前端开发 API
一款基于 .NET MVC 框架开发、功能全面的MES系统
一款基于 .NET MVC 框架开发、功能全面的MES系统
|
1月前
|
XML JSON Java
Spring Boot 开发中常见的错误
本文总结了 Java 开发中常见的几个问题及其改进方法,包括:1. 过度使用 `@Component` 注解;2. `@ResponseBody` 注解的错误用法;3. `@Autowired` 的不当使用;4. `application.properties` 管理不善;5. 异常处理不当。每部分详细解释了错误情况和建议的改进方案,并提供了相应的代码示例。
62 11
|
1月前
|
IDE Java 测试技术
互联网应用主流框架整合之Spring Boot开发
通过本文的介绍,我们详细探讨了Spring Boot开发的核心概念和实践方法,包括项目结构、数据访问层、服务层、控制层、配置管理、单元测试以及部署与运行。Spring Boot通过简化配置和强大的生态系统,使得互联网应用的开发更加高效和可靠。希望本文能够帮助开发者快速掌握Spring Boot,并在实际项目中灵活应用。
57 5
|
1月前
|
设计模式 前端开发 Java
步步深入SpringMvc DispatcherServlet源码掌握springmvc全流程原理
通过对 `DispatcherServlet`源码的深入剖析,我们了解了SpringMVC请求处理的全流程。`DispatcherServlet`作为前端控制器,负责请求的接收和分发,处理器映射和适配负责将请求分派到具体的处理器方法,视图解析器负责生成和渲染视图。理解这些核心组件及其交互原理,有助于开发者更好地使用和扩展SpringMVC框架。
55 4
|
1月前
|
前端开发 Java 开发者
这款免费 IDEA 插件让你开发 Spring 程序更简单
Feign-Helper 是一款支持 Spring 框架的 IDEA 免费插件,提供 URL 快速搜索、Spring Web Controller 路径一键复制及 Feign 与 Controller 接口互相导航等功能,极大提升了开发效率。
|
2月前
|
前端开发 JavaScript Java
如何使用 Spring Boot 和 Angular 开发全栈应用程序:全面指南
如何使用 Spring Boot 和 Angular 开发全栈应用程序:全面指南
62 1
|
1月前
|
XML Java 数据格式
Spring Boot 开发中的常见失误
本文深入分析了Spring Boot开发中常见的失误,包括不当使用@Component、@ResponseBody、@Autowired注解,以及不良的异常处理和日志记录实践,提供了有效的规避策略,帮助开发者提升代码质量和系统性能。