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

目录
相关文章
|
14天前
|
XML Java 测试技术
spring复习01,IOC的思想和第一个spring程序helloWorld
Spring框架中IOC(控制反转)的思想和实现,通过一个简单的例子展示了如何通过IOC容器管理对象依赖,从而提高代码的灵活性和可维护性。
spring复习01,IOC的思想和第一个spring程序helloWorld
|
2天前
|
XML 前端开发 Java
Spring,SpringBoot和SpringMVC的关系以及区别 —— 超准确,可当面试题!!!也可供零基础学习
本文阐述了Spring、Spring Boot和Spring MVC的关系与区别,指出Spring是一个轻量级、一站式、模块化的应用程序开发框架,Spring MVC是Spring的一个子框架,专注于Web应用和网络接口开发,而Spring Boot则是对Spring的封装,用于简化Spring应用的开发。
10 0
Spring,SpringBoot和SpringMVC的关系以及区别 —— 超准确,可当面试题!!!也可供零基础学习
|
26天前
|
缓存 前端开发 Java
【Java面试题汇总】Spring,SpringBoot,SpringMVC,Mybatis,JavaWeb篇(2023版)
Soring Boot的起步依赖、启动流程、自动装配、常用的注解、Spring MVC的执行流程、对MVC的理解、RestFull风格、为什么service层要写接口、MyBatis的缓存机制、$和#有什么区别、resultType和resultMap区别、cookie和session的区别是什么?session的工作原理
【Java面试题汇总】Spring,SpringBoot,SpringMVC,Mybatis,JavaWeb篇(2023版)
|
17天前
|
人工智能 开发框架 Java
重磅发布!AI 驱动的 Java 开发框架:Spring AI Alibaba
随着生成式 AI 的快速发展,基于 AI 开发框架构建 AI 应用的诉求迅速增长,涌现出了包括 LangChain、LlamaIndex 等开发框架,但大部分框架只提供了 Python 语言的实现。但这些开发框架对于国内习惯了 Spring 开发范式的 Java 开发者而言,并非十分友好和丝滑。因此,我们基于 Spring AI 发布并快速演进 Spring AI Alibaba,通过提供一种方便的 API 抽象,帮助 Java 开发者简化 AI 应用的开发。同时,提供了完整的开源配套,包括可观测、网关、消息队列、配置中心等。
726 10
|
14天前
|
XML 缓存 前端开发
springMVC02,restful风格,请求转发和重定向
文章介绍了RESTful风格的基本概念和特点,并展示了如何使用SpringMVC实现RESTful风格的请求处理。同时,文章还讨论了SpringMVC中的请求转发和重定向的实现方式,并通过具体代码示例进行了说明。
springMVC02,restful风格,请求转发和重定向
|
27天前
|
Java 数据库连接 数据格式
【Java笔记+踩坑】Spring基础2——IOC,DI注解开发、整合Mybatis,Junit
IOC/DI配置管理DruidDataSource和properties、核心容器的创建、获取bean的方式、spring注解开发、注解开发管理第三方bean、Spring整合Mybatis和Junit
【Java笔记+踩坑】Spring基础2——IOC,DI注解开发、整合Mybatis,Junit
|
27天前
|
Java 数据库连接 Maven
Spring基础1——Spring(配置开发版),IOC和DI
spring介绍、入门案例、控制反转IOC、IOC容器、Bean、依赖注入DI
Spring基础1——Spring(配置开发版),IOC和DI
|
1月前
|
缓存 Java 应用服务中间件
随着微服务架构的兴起,Spring Boot凭借其快速开发和易部署的特点,成为构建RESTful API的首选框架
【9月更文挑战第6天】随着微服务架构的兴起,Spring Boot凭借其快速开发和易部署的特点,成为构建RESTful API的首选框架。Nginx作为高性能的HTTP反向代理服务器,常用于前端负载均衡,提升应用的可用性和响应速度。本文详细介绍如何通过合理配置实现Spring Boot与Nginx的高效协同工作,包括负载均衡策略、静态资源缓存、数据压缩传输及Spring Boot内部优化(如线程池配置、缓存策略等)。通过这些方法,开发者可以显著提升系统的整体性能,打造高性能、高可用的Web应用。
59 2
|
1月前
|
NoSQL 前端开发 Java
使用 Spring Boot + Neo4j 实现知识图谱功能开发
在数据驱动的时代,知识图谱作为一种强大的信息组织方式,正逐渐在各个领域展现出其独特的价值。本文将围绕使用Spring Boot结合Neo4j图数据库来实现知识图谱功能开发的技术细节进行分享,帮助读者理解并掌握这一技术栈在实际项目中的应用。
114 4
|
1月前
|
安全 Java 开发者
强大!Spring Cloud Gateway新特性及高级开发技巧
在微服务架构日益盛行的今天,网关作为微服务架构中的关键组件,承担着路由、安全、监控、限流等多重职责。Spring Cloud Gateway作为新一代的微服务网关,凭借其基于Spring Framework 5、Project Reactor和Spring Boot 2.0的强大技术栈,正逐步成为业界的主流选择。本文将深入探讨Spring Cloud Gateway的新特性及高级开发技巧,助力开发者更好地掌握这一强大的网关工具。
125 6