当前位置: 首页 > news >正文

Spring Boot + Spring MVC 项目结构

下面一个既能返回 JSP 页面,又能提供 JSON APISpring Boot + Spring MVC 项目结构,这样你就能同时用到 @Controller@RestController 的优势。


🏗 项目结构

springboot-mvc-mixed/
├── src/main/java/com/example/demo/
│   ├── controller/
│   │   ├── PageController.java       // 返回 JSP 页面
│   │   └── ApiController.java        // 返回 JSON 数据
│   └── DemoApplication.java          // 启动类
├── src/main/resources/
│   └── application.properties
└── src/main/webapp/WEB-INF/views/├── home.jsp└── about.jsp

⚙ Maven 依赖(pom.xml

Spring Boot 默认不强推 JSP,所以需要额外加 tomcat-embed-jasperjstl

<dependencies><!-- Spring Boot Web --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- JSP 支持 --><dependency><groupId>org.apache.tomcat.embed</groupId><artifactId>tomcat-embed-jasper</artifactId></dependency><dependency><groupId>javax.servlet</groupId><artifactId>jstl</artifactId></dependency>
</dependencies><packaging>war</packaging>

🧩 配置(application.properties

spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp
server.port=8080

🖥 控制器示例

1. 返回 JSP 页面(@Controller

package com.example.demo.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;@Controller
public class PageController {@GetMapping("/")public String home() {return "home"; // 对应 /WEB-INF/views/home.jsp}@GetMapping("/about")public String about() {return "about"; // 对应 /WEB-INF/views/about.jsp}
}

2. 返回 JSON 数据(@RestController

package com.example.demo.controller;import org.springframework.web.bind.annotation.*;import java.util.Map;@RestController
@RequestMapping("/api")
public class ApiController {@GetMapping("/status")public Map<String, String> status() {return Map.of("status", "ok", "version", "1.0");}@PostMapping("/echo")public Map<String, String> echo(@RequestBody Map<String, String> payload) {return Map.of("received", payload.toString());}
}

🖼 JSP 页面示例(home.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Home Page</title>
</head>
<body><h1>欢迎来到首页</h1><p>这是 JSP 渲染的页面。</p><a href="/about">关于我们</a>
</body>
</html>

🚀 启动与访问

  1. 运行项目(IDEA 直接运行 DemoApplication
  2. 浏览器访问:
    • http://localhost:8080/ → JSP 页面
    • http://localhost:8080/api/status → JSON 数据

✅ 这样你就能在一个项目里同时支持:

  • 传统页面渲染@Controller + JSP)
  • REST API 接口@RestController + JSON)

http://www.dtcms.com/a/362909.html

相关文章:

  • Jenkins 拉取 Git 仓库时报错:there are still refs under ‘refs/remotes/origin/release‘
  • 在 Elasticsearch 中使用用户行为分析:使用 UBI 和 search-ui 创建一个应用程序
  • 【序列晋升】25 Spring Cloud Open Service Broker 如何为云原生「服务市集」架桥铺路?
  • 【JavaScript】前端两种路由模式,Hash路由,History 路由
  • UBUNTU之Onvif开源服务器onvif_srvd:2、测试
  • @Value注解底层原理(二)
  • 云端职达:你的AI求职专属猎头,颠覆传统招聘模式
  • 哈尔滨云前沿服务器托管与租用服务
  • STM32——串口
  • 在windows上使用ROS2 kilted
  • Pytorch Yolov11目标检测+window部署+推理封装 留贴记录
  • LeetCode算法日记 - Day 30: K 个一组翻转链表、两数之和
  • Unity核心概率④:MonoBehavior
  • @Hadoop 介绍部署使用详细指南
  • 从 WPF 到 Avalonia 的迁移系列实战篇6:ControlTheme 和 Style区别
  • R 语言科研绘图第 71 期 --- 散点图-边际
  • 小白也能看懂!“找不到 msvcp140.dll无法继续执行代码” 的6种简易解决方法,5 分钟快速修复
  • Watt Toolkit下载安装并加速GitHub
  • C# 原型模式(C#中的克隆)
  • 基因表达数据的K-M生存曲线的数据处理及绘制
  • Anaconda安装与使用详细教程
  • 服务器CPU飙高?排查步骤与工具推荐
  • 深入探索 HarmonyOS Stage 模型与 ArkUI:构建现代化、高性能应用
  • 【NestJS】HTTP 接口传参的 5 种方式(含前端调用与后端接收)
  • 面试新纪元:无声胜有声,让AI成为你颈上的智慧伙伴
  • 基于YOLO8的番茄成熟度检测系统(数据集+源码+文章)
  • 利用飞算Java打造电商系统核心功能模块的设计与实现
  • Controller返回CompletableFuture到底是怎么样的
  • 【DSP28335 入门教程】定时器中断:为你的系统注入精准的“心跳”
  • 在windows平台oracle 23ai 数据库上使用bbed