【Spring MVC】_SpringMVC项目返回静态页面

目录

[1. 创建与设计前端页面](#1. 创建与设计前端页面)

[2. 返回HTML静态页面](#2. 返回HTML静态页面)

[2.1 示例1:使用@RestController](#2.1 示例1:使用@RestController)

[2.2 示例2:使用@Controller](#2.2 示例2:使用@Controller)

[3. @RestController与@Controller](#3. @RestController与@Controller)


在本专栏关于SpringMVC项目的相关文章中,已经介绍了操作HTTP请求的方式,包括多种传方式,获取参数,上传文件等等内容。

接下来将介绍使用SpringMVC项目操作HTTP响应的方式,包括返回静态页面,返回数据@ResponseBody,返回HTML代码片段,返回JSON,设置状态码等等内容,将分篇详述。

本篇介绍SpringMVC项目返回静态页面的方式。

1. 创建与设计前端页面

我们知道,SpringMVC中的V即View,视图,用于与浏览器产生交互。则SpringMVC项目必然可以操作前端页面来控制显示内容。

在resources目录下的static目录下创建index.html:

我们把重点仍放在后端代码实现上,简单实现前端页面即可:

(英文输入模式下,!+tab可以生成一个默认模板)

html文件内容如下:

html 复制代码
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>index首页</title>
</head>
<body>
    <h1>This is an index page</h1>
</body>
</html>

注:检验页面正确性:

第一步:运行启动类:

第二步:输入对应URL访问html页面:

注意:static目录下的index.html文件可以直接访问;

可见当前页面正常,接下来实现页面的返回。

2. 返回HTML静态页面

在Controller目录下新建ReturnController.java文件,

分别对Controller类使用@RestController与@Controller两个注解进行测试,查看返回的页面情况:

2.1 示例1:使用@RestController

.java内容如下:

java 复制代码
package com.example.demo.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RequestMapping("/return")
@RestController
public class ReturnController {
    @RequestMapping("/index")
    public String returnIndex(){
        return "/index.html";
    }
}

运行启动类,根据RequestMapping注解的两级路径进行访问:

可见在使用@RestController注解时,"index.html"被视为字符串数据而非HTML页面进行了返回。

2.2 示例2:使用@Controller

.java文件内容如下:

java 复制代码
package com.example.demo.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RequestMapping("/return")
@Controller
public class ReturnController {
    @RequestMapping("/index")
    public String returnIndex(){
        return "/index.html";
    }
}

启动后再次进行访问:

此时页面访问成功,将index.html成功解析为HTML页面进行返回。

3. @RestController与@Controller

此处仅做简单介绍:

1、对于@RestController,按住Ctrl并点击左键查看其源码:

可见@RestController注解包括@Controller注解,可以简单理解为:
@RestController = @Controller注解 + @ResponseBody;

注:元注解用于定义其他的注解,当定义一个注解时,最起码需要有@Target与@Retention注解;

2、 其实Spring是一个容器(Container),而**@Controller注解就是用于定义一个容器**,

用于告知Spring,把这个类交给Spring进行管理。我们后续访问时才能访问到。

本专栏前文已经介绍过,SpringMVC中M、V、C的含义,

详情请见下文:

【JavaEE】_Spring Web MVC简介-CSDN博客https://blog.csdn.net/m0_63299495/article/details/136397828其实SpringMVC是一种思想,表示Controller接收请求后,选择对其进行处理的Model,Model将处理结果返回给Controller后,Controller选择View返回给浏览器(客户端)。

早期是需要有严格的Controller,也就是我们使用的**@Controller注解用于返回视图**;

后来随着前后端分离,后端很少进行前端页面的开发,后端不再返回视图(View)而是返回前端需要的数据,数据的展示交给前端完成。@ResponseBody就是用于返回数据。

将@Controller注解与@ResponseBody的功能进行累加,合为了@RestController注解。

相关推荐
AI人工智能+电脑小能手12 分钟前
一次请求打几个下游,这个Java并行任务工具类6个方法按序聚合
java·线程池·并发编程·1024程序员节·批量处理·并行任务
paopaokaka_luck2 小时前
心理咨询管理系统(WebSocket实时沟通、基于用户的协同过滤、 ECharts多维分析、 预约业务流程、预约校验与定时处理)
java·vue.js·spring boot·mysql·spring·echarts·1024程序员节
2301_32241428042 小时前
springboot农产品交易平台的设计与实现08055-计算机毕设 原创(免费领源码+部署教程+开发环境)
java·spring boot·redis·mysql·tomcat·maven·mybatis
考虑考虑3 小时前
JDK26的JEP 500属性
java·后端·java ee
LMT流氓兔3 小时前
第五单元——第十二课:把脚本整理成项目
java·数据库·python·langchain·1024程序员节
yuniko-n3 小时前
【JUC】四种内存屏障示例
java·1024程序员节
雷一言说4 小时前
Spring AI 2.0 Tool Calling 实战:用一个订单查询跑通整个调用链
spring
念何架构之路5 小时前
Go reflect 包:结构体反射 —Field、Tag 与 VisibleFields
java·数据库·golang
liangbo75 小时前
03-JDK 10/11 局部变量推断与 LTS:var 到底该怎么用
java
Percep_gan6 小时前
调用天翼云的对象存储ZOS,很详细
java·1024程序员节