【Java】Spring MVC程序开发

这篇具有很好参考价值的文章主要介绍了【Java】Spring MVC程序开发。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Spring MVC程序开发

1. 什么是Spring MVC?

Spring Web MVC是基于Servlet API构建的原始Web框架,从一开始就包含在Spring框架中。它的正式名称是“Spring Web MVC”来自其原模块的名称,但是它通常被称为“Spring MVC”

从上述定义我们可以看到两个信息:

  1. Spring MVC 是一个Web框架
  2. Spring MVC 是基于Servlet API构建的

然而要真正的搞懂Spring MVC?我们要先理解什么是MVC?

1.1 MVC定义

MVC是Model、View、Controller的缩写,它是软件工程当中的一种软甲架构模式,它把软件系统分为模型、视图、和控制器三个基本部分

创建一个java的spring mvc应用,# Spring,java,mvc,spring boot

  • Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取数据
  • View(视图)是应用程序中处理数据显示的部分。通常视图是依据模型数据创建的
  • Controller(控制器)是应用程序处理用户交互的部分。通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据

1.2 MVC 和 Spring MVC 的关系

MVC是一种思想,而Spring MVC是对MVC思想的具体实现

总结来说,Spring MVC是实现了一个MVC模式,并继承了Servlet API的Web框架。既然是Web框架,那么用户在浏览器当中输入URL之后,我们的Spring MVC项目就可以感知到用户的请求

2. 为什么学习Spring MVC?

现在绝大部分的Java项目都是基于Spring或者是(Spring Boot)的,而Spring的核心是Spring MVC也就是说Spring MVC是Spring框架的一个核心模块,而Spring Boot是Spring的脚手架。因此我们可以推断出,现在市面上的绝大部分Java项目约等于Spring MVC项目,这就是学习它的原因

在创建Spring Boot项目的时候,我们勾选的Spring Web框架其实就是Spring MVC框架,

创建一个java的spring mvc应用,# Spring,java,mvc,spring boot

简单来说,咱是所以要学习Spring MVC是因为它是一切项目的基础,我们以后创建的Spring、Spring Boot项目都是基于Spring MVC的

3. 怎么学习Spring MVC?

学习Spring MVC我们只需要掌握3个功能:

  1. 连接的功能:将用户(浏览器)和Java程序连接起来,也就是访问一个地址能够调用我们的Spring程序
  2. 获取参数的功能:用户访问的时候会带一些参数,在程序中要想办法获取到参数
  3. 输出数据的功能:执行了业务逻辑之后,要把程序执行的结果返回给用户

3.1 Spring MVC的创建和连接

Spring MVC项目创建和Spring Boot项目创建相同(Spring MVC 和Spring Boot的方式相同)在创建的时候选择Spring Web就相当于创建了Spring MVC项目

在Spring MVC当中使用@RequestMapping来实现URL路由映射,也就是浏览器连接程序的作用

3.1.1 创建Spring MVC项目

创建Spring Boot项目的时候勾选上Spring Web模块即可

@Controller
@RequestMapping("/user")
public class UserController {
    
    @RequestMapping("sayhi")
    @ResponseBody
    public String sayHi() {
        return "你好 世界";
    }
}

实现之后访问地址:http://localhost:8080/user/sayhi就可以访问了

3.1.2 @RequestMapping 注解介绍

@RequestMapping是Spring Web应用程序当中最常被用的注解之一,它是用来注册接口的路由映射的

路由映射:所谓的路由映射指的是,当用户访问一个URL时,将用户的请求对应到程序中某个类的某个方法的过程就叫做路由映射

@RequestMapping的基础使用

package com.example.demo.controller;


import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
@RequestMapping("/user")
public class UserController {

    @RequestMapping("sayhi")
    @ResponseBody
    public String sayHi() {
        return "你好 世界";
    }

    @ResponseBody
    @RequestMapping(method = RequestMethod.POST, value = "/sayhi2")
    public String sayHi2() {
        return "你好,世界";
    }
}

@RequestMapping既可以就是类,也可以修饰方法,当修饰类和方法的时候,访问的地址是类 + 方法

3.1.3 @RequestMapping是post 还是 get请求?

经过测试之后,我们可以发现是都可以支持的

我们可以指定方法类型

创建一个java的spring mvc应用,# Spring,java,mvc,spring boot

3.1.4 @GetMapping 和 @PostMapping

三种实现方式:

@RequestMapping("sayhi")
@ResponseBody
public String sayHi() {
    return "你好 世界";
}

@ResponseBody
@RequestMapping(method = RequestMethod.POST, value = "/sayhi2")
public String sayHi2() {
    return "你好,世界";
}

@ResponseBody
@PostMapping("/sayhi3")
public String sayHi3() {
    return "你好,世界3 ";
}

3.2 获取参数

3.2.1 传递单个参数

在Spring MVC中可以直接用方法中的参数来实现传参,比如以下代码

@ResponseBody
@RequestMapping("/getuserinfoid")
public UserInfo getUserInfoId(Integer id) {
    UserInfo userInfo = new UserInfo();
    userInfo.setId(id);
    userInfo.setName("张三");
    userInfo.setAge(18);
    userInfo.setPassword("1234");
    return userInfo;
}

访问的结果是:

创建一个java的spring mvc应用,# Spring,java,mvc,spring boot

3.2.2 传递对象

Spring MVC可以自动实现参数对象的赋值

@ResponseBody
@RequestMapping("/reg")
public UserInfo reg(UserInfo userInfo) {
    return userInfo;
}
3.2.3 表单参数传递/传递多个参数
@ResponseBody
@RequestMapping("/login")
public String login(String name, String password) {
    return "name: " + name + "password: " + password;
}
3.2.4 后端参数重命名

某些情况下,前端传递的参数key和后端接收的key可以不一致

@ResponseBody
@RequestMapping("/login")
public String login(@RequestParam(name = "username")String name, String password) {
    return "name: " + name + "password: " + password;
}
3.2.5 设置参数必传

默认情况下,是必须要传递的,

我们可以设置成非必传参数

如果我们的实际业务前端的参数是一个非必传参数,我们可以这样操作

创建一个java的spring mvc应用,# Spring,java,mvc,spring boot

3.2.6 @RequestBody接收JSON对象

创建一个java的spring mvc应用,# Spring,java,mvc,spring boot

如果没有加上这一个注解,就会接收不到

创建一个java的spring mvc应用,# Spring,java,mvc,spring boot

3.2.7 获取URL当中的参数@PathVarible

代码实现:

@RequestMapping("/hero/{id}/{name}")
public String getHeroInfo(@PathVariable String id, @PathVariable String name) {
    return "id" + id + "name" + name;
}

地址填写方法:

创建一个java的spring mvc应用,# Spring,java,mvc,spring boot

3.2.8 上传文件@RequestPart
@RequestMapping("/upimg")
public boolean upImg(Integer uid, @RequestPart("img") MultipartFile file) {
    boolean result = false;
    String fileName = file.getOriginalFilename();// 得到图片名字
    fileName = fileName.substring(fileName.lastIndexOf(".")); // 得到后缀
    fileName = UUID.randomUUID().toString() + fileName;
    try {
        file.transferTo(new File ("D://"));
        result = true;
    } catch (IOException e) {
        e.printStackTrace();
        log.error("上传错误" + e.getMessage());
    }
    return result;
}
3.2.9 获取Cookie/Session/header

获取cookie:

@ResponseBody
@RequestMapping("/cookie")
public String getCookie(@CookieValue("bit") String bite) {
    return bite;
}

获取header:

使用注解:@RequestHeader

Session的存储和获取:

Session的存储我们只能使用传统的方式,但是Session的获取我们可以使用注解完成@SessionAttribute

3.3 返回数据

3.3.1 返回静态页面

创建一个java的spring mvc应用,# Spring,java,mvc,spring boot

这时候如果要返回一个“hello.html”,这时候返回的是一个同名的页面。所以我们在使用的时候都要加上一个注解ResponseBody

这里我们设置一个实用的技巧:热部署

创建一个java的spring mvc应用,# Spring,java,mvc,spring boot
创建一个java的spring mvc应用,# Spring,java,mvc,spring boot

创建一个java的spring mvc应用,# Spring,java,mvc,spring boot

3.3.2 请求转发和请求重定向

forward VS redirect

return 不但可以返回一个视图,还可以实现跳转,跳转的方式有两种:

  • forward 是请求转发
  • redirect 请求重定向

“转发”和“重定向”的理解:在中国官方发布的内容越少事情越大,“转发”和“重定向“也是一样:字越少,责任越大。转发是服务器帮忙转发的,而重定向是让浏览器重新请求另一个地址

具体区别如下:

  1. 请求重定向(redirect)将请求重新定位到资源;请求转发(forward)服务器端转发
  2. 请求重定向地址发生变化,请求转发地址不发生变化
  3. 请求重定向与直接访问新地址效果一致,不存在原来的外部资源不能访问;请求转发服务器端转发有可能造成外部资源不能访问
3.3.3 @ResponseBody说明

@ResponseBody返回的值如果是字符会变成text/html,如果是对象会转成appllcation/json返回给前端

@ResponseBody可以用来修饰方法或者修饰类,修饰类表示类中的所有方法都会返回html或者JSON而不是视图文章来源地址https://www.toymoban.com/news/detail-793363.html

到了这里,关于【Java】Spring MVC程序开发的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Spring MVC程序开发

    目录 1.什么是Spring MVC? 1.1MVC定义 1.2MVC和Spring MVC的关系 2.为什么要学习Spring MVC? 3.怎么学Spring MVC? 3.1Spring MVC的创建和连接 3.1.1创建Spring MVC项目 3.1.2@RequestMapping 注解介绍 3.1.3 @RequestMapping 是 post 还是 get 请求? ​编辑 3.1.4 @GetMapping 和 PostMapping 3.2 获取参数 3.2.1 传递单个参数

    2024年02月14日
    浏览(41)
  • Spring MVC 程序开发

    目录 什么是 Spring MVC? MVC 定义 MVC 和 Spring MVC 的关系 为什么要学 Spring MVC? Spring MVC 项目的创建 学习 Spring MVC 的 三个目标 Spring MVC项目的连接(用户 和 程序 的 映射) 方法1:@RequestMapping(“/xx”) @RequestMapping 是 post 还是 get 请求? 总结 拓展  方法2 和 方法 3:@GetMapping  和

    2024年02月15日
    浏览(39)
  • 三、使用注解形式开发 Spring MVC程序

    1、 创建 maven 项目,添加框架支持 2、 添加依赖,因为 maven 可以有一些资源过滤的问题,这里直接将资源过滤配置补全 3、 检查项目结构中是否有 lib 夹以及 jar 是否成功导入了,并配置 tomcat 这里配置完基本上就不用在动了,统一使用注解来解决 @Controller: @Controller 用于标

    2024年02月12日
    浏览(38)
  • Spring MVC程序开发(JavaEE进阶系列3)

    目录 前言: 1.什么是Spring MVC 1.1MVC的定义 1.2MVC和Spring MVC的关系 1.3为什么要学习Spring MVC 2.Spring MVC项目的创建 3.Spring MVC框架的使用 3.1连接的功能 3.1.1@RequestMapping 3.1.2@GetMapping  3.1.3@PostMapping 3.2获取参数的功能 3.2.1获取单个参数 3.2.2获取对象 3.2.3上传文件 3.2.4获取Cookie 3.2

    2024年02月07日
    浏览(44)
  • Servlet | Servlet原理、开发第一个带有Java小程序Servlet

    ✅作者简介:一位材料转码农的选手,希望一起努力,一起进步!  📃个人主页:@每天都要敲代码的个人主页 🔥系列专栏:Web后端 | Servlet 目录 一:模拟实现Servlet 二:开发第一个带有Java小程序Servlet【重点】 有了上一章节的分析,我们来模拟实现以下Servlet;下面先分析一

    2024年02月02日
    浏览(44)
  • Spring-2-深入理解Spring 注解依赖注入(DI):简化Java应用程序开发

      掌握纯注解开发依赖注入(DI)模式 学习使用纯注解进行第三方Bean注入 问题导入 思考:如何使用注解方式将Bean对象注入到类中 1.1 使用@Autowired注解开启自动装配模式(按类型) 说明:不管是使用配置文件还是配置类,都必须进行对应的Spring注解包扫描才可以使用。@Autowired默

    2024年02月14日
    浏览(57)
  • Spring-1-深入理解Spring XML中的依赖注入(DI):简化Java应用程序开发

    前两篇文章我们介绍了什么是Spring,以及Spring的一些核心概念,并且快速快发一个Spring项目,以及详细讲解IOC,今天详细介绍一些DI(依赖注入) 能够配置setter方式注入属性值 能够配置构造方式注入属性值 能够理解什么是自动装配 思考:向一个类中传递数据的方式有几种?(给类

    2024年02月13日
    浏览(48)
  • java版+免费商城搭建+小程序商城免费搭建+Spring Cloud + Spring Boot + MybatisPlus + 前后端分离 + 二次开发

       J2EE企业分布式微服务云快速开发架构 Spring Cloud+Spring Boot2+Mybatis+Oauth2+ElementUI 前后端分离 1. 鸿鹄Cloud架构清单 2. Commonservice(通用服务) 通用服务:对spring Cloud组件的使用封装,是一套完整的针对于分布式微服务云架构的解决方案。如:注册中心、配置中心、网关中心、

    2024年02月15日
    浏览(52)
  • [FPAG开发]使用Vivado创建第一个程序

    选择一个纯英文路径 选择合适的型号 产品 型号 ZYNQ-7010 xc7z010clg400-1 ZYNQ-7020 xc7z010clg400-2 如果型号选错,可以单击这里重新选择 可以看到文件创建成功 双击文件打开,插入代码 设置字体和缩进 软件会生成一个原理图 参数 类型 对应的FPGA引脚 I/O std 备注 sys_clk IN U18 LVCMOS33 3

    2024年02月13日
    浏览(44)
  • 创建一个微信小程序——如何注册账号,安装微信开发者工具,创建一个小程序(详细步骤版)

    注册地址 注册地址:微信公众平台 注册 右上角——【立即注册】。 选择【小程序】。 按照步骤完成注册。 按照步骤激活邮箱后,在信息登记这里选择个人。 填写相关信息。 完成注册。 这一步可以先保留,后续在创建小程序时会用到AppID——点击【前往小程序】,复制A

    2024年02月06日
    浏览(77)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包