SpringMVC---详细介绍+使用

文章目录

什么是SpringMVC?

SpringMVC它的正式名称是"Spring Web MVC",是一个基于Servlet API构建的原始Web框架。MVC是Model View Controller 的缩写,它是软件工程中的一种软件架构模型,把软件系统分为模型、视图和控制器三部分。MVC是一种思想,而SpringMVC是对MVC思想的具体实现。

我们要学习SpringMVC是因为绝大多数Java项目都是基于Spring(SpringBoot)的,而Spring的核心就是SpringMVC。我们学习SpringMVC主要学习下面介绍的三个方面:

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

使用SpringMVC

SpringMVC创建和连接

创建

连接

java 复制代码
@Controller  //让spring框架启动时就加载类
@ResponseBody    //返回非页面数据
@RequestMapping("/user")
// 可以把@Controller和@ResponseBody两个注解合并为一个@RestController注解
public class UserController {
    @RequestMapping("/sayHi")
    public String sayHi() {
        return "hi,spring mvc";
    }

}

注:

  1. 我们要创建一个类来做路由映射,借此建立起浏览器页面与后端程序的连接
  2. @RequestMapping是被用来做接口的路由映射的,当用户访问某一个url时,会将用户的请求对应到程序中的某个类的某个方法上。
@RequestMapping的基础使用
java 复制代码
	//接收GET请求的三种方法
    //方法一
    @RequestMapping("/sayHi")
    //方法二
    @RequestMapping(value = "/sayHi",method = RequestMethod.GET)
    //方法三
    @GetMapping("/sayHi")
java 复制代码
    //接收POST请求的三种方法
    //方法一
    @RequestMapping("/sayHi")
    //方法二
    @RequestMapping(value = "/sayHi",method = RequestMethod.POST)
    //方法三
    @PostMapping("sayHi")

注:

  1. @RequestMapping即可以修饰类也可以修饰方法。当修饰类和方法的时候,访问的地址是类+方法;当 url 路径唯一时可以只修饰方法,访问的地址是方法。
  2. @RequestMapping即可以用来接收 Get请求 也可以用来接收 Post请求。
  3. 接收 Get请求 和接收 Post请求分别有三种方法,上面的代码示例已经给出。

获取参数

我们对十一种传来的参数的类型进行处理:传递单参数、传递对象、传递多个参数、参数重命名、传递JSON对象、直接从 url 中传递参数、上传文件、得到Cookie、得到header、设置session、读取session。

由于篇幅太长,单独总结为一篇博客大家点击此链接查看!详细介绍+代码演示SpringMVC获取参数的十一种方法

返回数据

  1. 在返回前端静态页面时,不需要加上@ResponseBody注解;在返回前端普通数据时,要加上@ResponseBody注解。

  2. @ResponseBody返回的值如果是字符,将转化成 text/html;如果是对象,将转化成 application/json。

  3. @ResponseBody即可以修饰类也可以修饰方法,修饰类表示类中的所有方法都会返回 html 或者 json

返回静态页面

java 复制代码
//返回前端一个静态的页面   需要多添加一个依赖  然后设置配置文件
@Controller
@RequestMapping("/toFront")
public class FrontController {
    @RequestMapping("/front")
    public Object toFront(){
        return "front.html";
    }
}

返回非页面的普通数据(text/html)

java 复制代码
//返回非页面的普通数据
@Controller
@ResponseBody
@RequestMapping("/p")
public class ResponseController {
    @RequestMapping("/index")
    public String index(){
        return "index.html";
    }
}

返回JSON对象

java 复制代码
@RestController
@RequestMapping("/retJson")
public class JsonController {
    @RequestMapping("/respJson")
    public HashMap<String,String> retJson(){
        //注 HashMap的key不能相同  相同时下一次插入的值会替换掉上一次的值  使HashMap中只有一个值
        HashMap<String,String> hashMap = new HashMap<>();
        hashMap.put("say1","hello");
        hashMap.put("say2","hi");
        hashMap.put("say3","spring muc");

        return hashMap;
    }
}

请求转发或者请求重定向

java 复制代码
@Controller
@RequestMapping("/toSend")
//@RestController  返回页面不是数据
// redirect和forward的三点区别
public class ResendController {
    @RequestMapping("/redirect")
    //请求重定向
    public String redirect(){
        return "redirect:/front.html";
    }

    @RequestMapping("/forward")
    //请求转发
    public String forward(){
        return "forward:/front.html";
    }
}

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

  1. 请求重定向将请求重新定位到资源,不需要经过服务器;请求转发需要经过服务器进行转发。
  2. 请求重定向地址发生变化;请求转发地址不发生变化。
  3. 请求重定向和直接访问新地址效果一致,不存在原来的外部资源不能访问的问题;请求转发需要经过服务器转发,有可能造成原外部资源不能访问的问题。
相关推荐
24k小善1 小时前
Flink TaskManager详解
java·大数据·flink·云计算
想不明白的过度思考者1 小时前
Java从入门到“放弃”(精通)之旅——JavaSE终篇(异常)
java·开发语言
.生产的驴1 小时前
SpringBoot 封装统一API返回格式对象 标准化开发 请求封装 统一格式处理
java·数据库·spring boot·后端·spring·eclipse·maven
猿周LV1 小时前
JMeter 安装及使用 [软件测试工具]
java·测试工具·jmeter·单元测试·压力测试
晨集1 小时前
Uni-App 多端电子合同开源项目介绍
java·spring boot·uni-app·电子合同
时间之城1 小时前
笔记:记一次使用EasyExcel重写convertToExcelData方法无法读取@ExcelDictFormat注解的问题(已解决)
java·spring boot·笔记·spring·excel
椰羊~王小美2 小时前
LeetCode -- Flora -- edit 2025-04-25
java·开发语言
凯酱2 小时前
MyBatis-Plus分页插件的使用
java·tomcat·mybatis
程序员总部2 小时前
如何在IDEA中高效使用Test注解进行单元测试?
java·单元测试·intellij-idea
oioihoii2 小时前
C++23中if consteval / if not consteval (P1938R3) 详解
java·数据库·c++23