Spring MVC 程序开发

目录

1.Spring MVC的定义

1.1 MVC 的定义

1.2 MVC 和 Spring MVC 的关系 

1.3  学习Spring MVC的必要性

1.4 Spring MVC的功能

2.Spring MVC 创建和连接 

2.1 创建Spring MVC项目

2.2 实现Spring MVC的连接

2.2.1 @RequestMapping 注解介绍

3.Spring MVC 获取参数

3.1 传递单个参数

3.2 传递对象 

3.3 @RequestBody 接收JSON对象

3.4 @PathVariable 获取URL中参数

3.5 @RequestPart 上传文件

3.6 获取Cookie/Session/header

3.6.1 @CookieValue 获取Cookie

3.6.2 @RequestHeader获取header

3.6.3 @SessionAttribute获取Session

4.返回数据

4.1 返回静态页面 

4.1.1 创建前端静态页面

4.1.2 创建控制器controller

4.2 返回 text/html

4.3 返回JSON对象

4.4 请求转发和请求重定向

4.4.1  forward 是请求转发

4.4.2 redirect:请求重定向

4.4.3  请求转发和请求重定向的区别


1.Spring MVC的定义

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

1.1 MVC 的定义

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

1.2 MVC 和 Spring MVC 的关系 

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

1.3  学习Spring MVC的必要性

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

1.4 Spring MVC的功能

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

2.Spring MVC 创建和连接 

2.1 创建Spring MVC项目

 注意事项:Spring MVC 可以基于 Spring Boot 创建

2.2 实现Spring MVC的连接

@RestController //进行页面跳转而是直接返回数据
public class UserController {
    @RequestMapping("/say")
    public String sayHi(){
        return "hello Spring MVC";
    }

访问地址:http://localhost:8080/say 时就能打印“hello Spring MVC”的信息 了。 

2.2.1 @RequestMapping 注解介绍

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

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

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

@RequestMapping 支持post请求也支持get请求

@GetMapping只支持get请求

@PostMapping只支持post请求

3.Spring MVC 获取参数

3.1 传递单个参数

@RestController //进行页面跳转而是直接返回数据
public class UserController {
    @RequestMapping("/say")
    public String sayHi(String name){
        return "hello Spring MVC "+name;
    }

执行结果:

注意事项:可以传递多个参数,当有多个参数时,前后端进行参数匹配时,是以参数的名称进行匹配的,因此参数的位置 是不影响后端获取参数的结果。

3.2 传递对象 

Userinfo对象: 

@Data //代替setter、getter方法,配置好以后就可反复使用
@ToString
public class Userinfo {
    private int id;
    private String name;
    private int age;
}

传递对象代码实现: 

 @RestController //进行页面跳转而是直接返回数据
    public class UserController {
 @RequestMapping("/reg")
    public Object reg(Userinfo userinfo) {
        System.out.println(userinfo.getName());
        System.out.println(userinfo.getId());
        return userinfo;
    }
}

postman执行结果:

程序执行结果:

 3.3 @RequestBody 接收JSON对象

 @RestController //进行页面跳转而是直接返回数据,等同于@Controller + @ResponseBody
    public class UserController {
 @RequestMapping("/reg2")
    public Object reg2(@RequestBody Userinfo userinfo){
//@RequestBody可以帮助我们从 HTTP 请求体中获取请求参数,并将其转换为指定的 Java 对象
        System.out.println(userinfo);
        return userinfo;
    }
}

 postman执行结果:

 程序执行结果:

3.4 @PathVariable 获取URL中参数

  @RestController //进行页面跳转而是直接返回数据,等同于@Controller + @ResponseBody
    public class UserController {
  @RequestMapping("/reg3/{name}/{password}")
        public Object reg3(@PathVariable String name,@PathVariable String password){
            return "name="+name+" | "+"password="+password;
        }
}

 注意事项:

postman执行结果:

注意事项:

1.使用 @RequestParam 来重命名前后端的参数值。@RequestParam传的是URL问号(?)之后的参数,@PathVariable传的是URL问号(?)之前的参数

2. @PathVariable(required=false)代表非必传参数

3.5 @RequestPart 上传文件

上传⼀个图片到本机的某个目录 

 @RestController //进行页面跳转而是直接返回数据,等同于@Controller + @ResponseBody
    public class UserController {
 @RequestMapping("/myUpload")
    public Object upload(@RequestPart("myimg")MultipartFile file){
//        获取新文件名=随机名称+文件后缀名
        String filename= UUID.randomUUID()+file.getOriginalFilename().
                substring(file.getOriginalFilename().lastIndexOf("."));
//        新文件保存路径
        File savefile=new File("D:\\code\\"+filename);
        try {
            file.transferTo(savefile);
            return true;
        }catch (IOException e){
            e.printStackTrace();
        }
        return false;
    }
}

 postman模拟选择上传要移动的照片

 执行结果:

3.6 获取Cookie/Session/header

3.6.1 @CookieValue 获取Cookie

   @RequestMapping("/getck")
    public Object getCk(@CookieValue(value = "java",required = false)String java){
        return java;
    }

3.6.2 @RequestHeader获取header

@RequestMapping("/gethd")
    public Object gethd(@RequestHeader("User-Agent")String ua){
        return "header -> "+ua;
    }

 3.6.3 @SessionAttribute获取Session

@RequestMapping("/getsess")
        public Object getsess(@SessionAttribute(value = "username",required = false)
    String username){
        return "session -> "+username;
    }

4.返回数据

4.1 返回静态页面 

4.1.1 创建前端静态页面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>index</title>
</head>
<body>
    <h1>hello index</h1>
</body>
</html>

4.1.2 创建控制器controller

@Controller
@RequestMapping("/test")
public class TestController {
    @RequestMapping("/p")
    public Object index(){
        return "/index.html";
    }
}

 执行结果:

 4.2 返回 text/html

@Controller
@RequestMapping("/test")
public class TestController {
    @ResponseBody  //不加这个注解会报错
    @RequestMapping("/p1")
    public Object index1(){
        return "<h3>hello html</h3>";
    }
}

 执行结果:

注意事项:通过上⾯的学习我们知道,默认请求下无论是 Spring MVC 或者是 Spring Boot 返回的是视图 (xxx.html),而现在都是前后端分离的,后端只需要返给给前端数据即可,这个时候我们就需要使用 @ResponseBody 注解了。 

4.3 返回JSON对象

@Controller
@RequestMapping("/test")
public class TestController {
    @ResponseBody  //不加这个注解会报错
    @RequestMapping("/p1")
    public HashMap<String,String> hashMap(){
        HashMap<String,String>hashMap=new HashMap<>();
        hashMap.put("java","111");
        hashMap.put("java2","222");
        hashMap.put("java3","333");
        return hashMap;
    }
}

执行结果:

4.4 请求转发和请求重定向

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

  • forward 是请求转发;
  • redirect:请求重定向。 

4.4.1  forward 是请求转发

 @RequestMapping("/fw")
    public Object fw(){
        return "forward:/index.html";
    }

执行结果:

4.4.2 redirect:请求重定向

 @RequestMapping("/rd")
    public Object rd(){
        return "redirect:/index.html";
    }

 执行结果:

4.4.3  请求转发和请求重定向的区别

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

本文内容到此结束了,
如有收获欢迎点赞收藏💖关注✔️,您的鼓励是我最大的动力。
如有错误疑问💬欢迎各位指出。
主页:爱放阳的小女孩的博客_CSDN博客-软件测试,spring领域博主

求同存异,与光同尘🏃‍🏃‍

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Spring MVC是一种基于Java的Web开发框架,旨在简化Web应用程序的开发。它使用模型-视图-控制器(MVC)模式来处理Web请求和响应。 以下是Spring MVC的基础开发步骤: 1.配置Web容器:首先需要选择一个Web容器(例如,Apache Tomcat),并将它配置到开发环境中。该容器为Web应用程序提供了运行环境。 2.引入Spring MVC库:Spring MVC库包含了许多类和接口,它们是开发Spring MVC应用程序所必需的。为了使用这些类和接口,需要将相应的库引入到项目中。 3.配置Spring MVCSpring MVC框架配置主要包括两个部分:一是配置DispatcherServlet,它是Spring MVC框架中的核心组件,用于处理所有的HTTP请求;二是配置Spring容器,它提供IOC(反转控制)和DI(依赖注入)功能。 4.定义控制器:控制器是Spring MVC应用程序中的核心组件,用于处理来自用户的HTTP请求,并返回相应的HTTP响应。在控制器中,需要定义处理请求的方法,并且指定对应的URL映射。 5.定义视图:视图是用户界面的表示形式。在Spring MVC中,可以使用多种模板引擎(例如,JSP,Velocity)来定义视图。 6.运行应用程序:最后,将应用程序部署到Web容器中,并启动它。用户可以通过浏览器访问应用程序,并使用定义的控制器和视图来处理请求和显示响应。 以上就是Spring MVC基础开发的步骤。在实际开发中,还需要注意一些细节,例如如何处理异常、如何进行数据绑定等等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

发呆的百香果子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值