Java一个入门级MVC基于Spring Boot项目
首先根据上一篇文章内容创建一个Spring Boot项目,如图所示:

一,创建Controller并返回数据
在src/main/java/项目文件夹下面创建package,继续里面可以创建模块的package,然后可以右键创建Class,命名为helloController,然后就可以写控制器代码了。
package xxh.springbootmvc.xxhdemo1.helloController; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest; @RestController
@RequestMapping("/v1/hello")
public class helloController { @RequestMapping("/world")
public String world() {
return "Hello World !!!你好世界";
} }
例如,如上代码就是最简单的一个返回字符串的Controller,如图:

如果要指定请求方式,接收URL参数,并根据参数返回数据,可以增加增加一个处理:
@RequestMapping(value = "/getworld", method = RequestMethod.GET)
public MVHelloWord getWorld(@RequestParam(value = "id", required = true) int id, HttpServletRequest request) {
MVHelloWord entity = null;
if (123 == id) {
entity = new MVHelloWord(123, "诸葛亮");
} else {
entity = new MVHelloWord(0, "不认识");
}
return entity;
}
效果如图:

注意:因为控制器前面加了标注@RestController,所以默认以接口形式返回json数据application/json,标注@RequestMapping就制定了改页面/接口的名称,调用方法RequestMethod等规则,标注@RequestParam指明了接收的参数规则,或者通过HttpServletRequest对象来接收请求信息效果是一样的。
然后MVHelloWord这个自己创建的模型,下面提到。
如果URL参数里面的id不等于123则输出的内容就不一样了。
二,创建Model
与创建Controller一样,在模块package里创建一个Class,不加任何标注的Class就是一个普通的类,当做Model你可以在里面写自己的属性。比如:
private int id;
private String name;
然后选中他们,右键找到Generate生成构造函数和get,set方法:

最终生成的代码:
package xxh.springbootmvc.xxhdemo1.helloController; /*这是一个Model*/
public class MVHelloWord {
public int getId() {
return id;
}
public void setId(int id) { this.id = id; } public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
} /*私有属性*/
private int id;
private String name; public MVHelloWord(int id, String name) {
this.id = id;
this.name = name;
} @Override
public String toString() {
return "MVHelloWord{" +
"id=" + id +
", name='" + name + '\'' +
'}';
}
}
这样一个最简单的Model就创建好了。
三,返回json
当我们在控制器前面加标注@RestController,@RequestMapping,并且在方法里返回Model时,Spring Boot将默认给我们返回json数据。
四,返回视图
返回视图稍微麻烦点,其中就是我们要引入thymeleaf框架。首先在项目结构文件中找到pom.xml,这是项目的引入配置文件。插件包需要在这里引入才能被加载出来。
打开pom.xml后找到:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
这是web项目默认的插件,将它复制并粘贴一份,将artifactId改成spring-boot-starter-thymeleaf,保存。也可以将下面的代码直接复制进去:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
idea工具会自动帮助加载插件框架。
然后在项目结构文件中找到application.properties,这是应用程序(项目)的关键属性配置文件。一些自定义配置或变量都可以写在这里。
例如:设置项目的端口,设置视图的根路径和视图文件的后缀名:
#设置项目的端口
server.port=8888 #设置视图的根路径和视图文件的后缀名
spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.suffix=.html
这样设置就可以在resources/templates/目录下创建后缀名为.html的视图文件了。
点击templates右键新建HTML文件,按照W3C标准创建html代码即可。
注意:html标签加协议 xmlns:th="http://www.thymeleaf.org" ,然后页面才可以用th引用从Controller传过来的Model实体。
Controller代码:
package xxh.springbootmvc.xxhdemo1.helloController; import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; /*标注是控制器*/
@Controller
@RequestMapping("/v1/hello2")
public class hello2Controller { @RequestMapping("/world")
public String world(HttpServletRequest request,HttpServletResponse response) {
System.out.print("Hello World!!!");
MVHelloWord entity = new MVHelloWord(123, "诸葛亮");
request.setAttribute("myEntity",entity); // 请求返回实体变量名及实体对象
return "a"; // 这是视图名称 或 路径/视图名称
} }
视图a.html代码:
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>我的第一个视图页面</title>
</head>
<body>
<h3>下面显示实体信息:</h3>
<!--第一种展示实体数据方式-->
myEntity:<span th:text="${myEntity}"></span><br />
id= <span th:text="${myEntity.id}"></span><br />
name= <span th:text="${myEntity.name}"></span><br />
<!--第二种展示实体数据方式-->
<div th:object="${myEntity}">
<p>ID:<span th:text="*{id}"></span></p>
<p>name:<span th:text="*{name}"></span></p>
</div> </body>
</html>
请求访问效果如图:

当然还有另外2种返回视图的Controller代码写法:
package xxh.springbootmvc.xxhdemo1.helloController; import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; /*标注是控制器*/
@Controller
@RequestMapping("/v1/hello2")
public class hello2Controller { @RequestMapping("/world")
public String world(HttpServletRequest request,HttpServletResponse response) {
System.out.print("Hello World!!!");
MVHelloWord entity = new MVHelloWord(123, "诸葛亮");
request.setAttribute("myEntity",entity); // 请求返回实体变量名及实体对象
return "a"; // 这是视图名称 或 路径/视图名称
} @RequestMapping("/world2")
public ModelAndView world2() {
MVHelloWord entity = new MVHelloWord(123, "诸葛亮");
ModelAndView mv = new ModelAndView();
mv.setViewName("Vhello/a"); // 这是视图名称 或 路径/视图名称
mv.addObject("myEntity", entity); // 请求返回实体变量名及实体对象
return mv;
} @RequestMapping("/world3")
public String world3(Integer id, Model model, HttpServletRequest request, HttpServletResponse response) {
MVHelloWord entity = new MVHelloWord(123, "诸葛亮");
model.addAttribute("entity", entity); // 请求返回实体变量名及实体对象
model.addAttribute("id", id == null ? 99 : id); //这是自定义放回白能量id
model.addAttribute("msg", "第一战立威之战:火烧博望坡"); //这是自定义放回白能量msg
return "Vhello/d"; // 这是视图名称 或 路径/视图名称
} }
请求world2效果如图:

请求world3效果如图:

其中,视图d.html代码如下:
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>MVC测试</title>
</head>
<body>
<h3>world3测试</h3>
<p><label>参数id=</label><input type="text" name="id" th:id="'data'+${id}" readonly="readonly" th:value="${id}"></p> <p><label>id=</label><span th:text="${entity.id}"></span></p>
<p><label>name=</label><span th:text="${entity.name}"></span></p> <p style="color: orangered" th:utext="${msg}"><label>id=</label><span></span></p>
</body>
</html>
代码结构如图;

上一篇:idea创建一个入门Spring Boot项目(controller层)使用Maven代码管理
Java一个入门级MVC基于Spring Boot项目的更多相关文章
- 错误: 找不到或无法加载主类(IDEA中启动spring boot项目)
版权声明:本文为博主原创文章,如果转载请给出原文链接:http://www.jufanshare.com/content/142.html 提示:需要对IDEA编辑工具使用熟悉 出现一个问题,就是sp ...
- 1024|推荐一个开源免费的Spring Boot教程
2020-1024=996! 今天,星期六,你们是否加班了?我反正加了!早上去公司开了一早上会,中午回家写下了这篇文章. 今天,我要推荐一个开源免费的Spring Boot项目,就是我最近日更的Spr ...
- 如何基于Spring Boot搭建一个完整的项目
前言 使用Spring Boot做后台项目开发也快半年了,由于之前有过基于Spring开发的项目经验,相比之下觉得Spring Boot就是天堂,开箱即用来形容是绝不为过的.在没有接触Spring B ...
- step6----->往工程中添加spring boot项目------->修改pom.xml使得我的project是基于spring boot的,而非直接基于spring framework
文章内容概述: spring项目组其实有多个projects,如spring IO platform用于管理external dependencies的版本,通过定义BOM(bill of mater ...
- 一个很有趣的示例Spring Boot项目,使用Giraphe CMS和Spring Boot
6: 这是一个很有趣的示例Spring Boot项目,使用Giraphe CMS和Spring Boot. Giraphe是基于Spring Boot的CMS框架. https://github.co ...
- 创建一个 Spring Boot 项目,你会几种方法?
我最早是 2016 年底开始写 Spring Boot 相关的博客,当时使用的版本还是 1.4.x ,文章发表在 CSDN 上,阅读量最大的一篇有 42W+,如下图: 2017 年由于种种原因,就没有 ...
- 只需两步!Eclipse+Maven快速构建第一个Spring Boot项目
随着使用Spring进行开发的个人和企业越来越多,Spring从一个单一简介的框架变成了一个大而全的开源软件,最直观的变化就是Spring需要引入的配置也越来越多.配置繁琐,容易出错,让人无比头疼, ...
- 基于VS Code创建Spring Boot项目开发REST API(一)
公司从.NET转向Java不仅仅是简单的代码变成Java,趁此机会对原有的架构和代码重构,融入新的概念和技术.目前通过前后端分离,将后端更多的微服务化.从.NET转向Java我们更多的是用Java开发 ...
- [Java]Java 9运行Spring Boot项目报错的解决办法
简介 为了学习和尽快掌握 Java 9 的模块化(Module System)新特性,最近安装了 JDK 9,新建了一个 Spring Boot 进行尝试, 过程中遇到了一下报错问题,写下此文谨作为个 ...
- IDEA新建一个Spring Boot项目
Maven构建项目模板 maven构建的是maven风格的纯净模板,要转变成spring boot项目需要自己添加依赖等配置. mvn archetype:generate: Maven插件原型是一个 ...
随机推荐
- visual studio当中动态库和静态库的联系
一.为什么要写这篇博客 公司需要调用MNN框架编译之后的动态库和静态库文件来在另外一台没有编译过MNN框架上的机器运行对应的程序,比如说人体关键点检测之类的程序,这个时候了解静态库和动态库的关系就很有 ...
- PostgreSQL加密连接SSL配置
PostgreSQL加密连接SSL配置 环境说明 操作系统 主机名 IP 类型 说明 CentOS Linux release 7.6.1810 (Core) centos7.6 192.168.1. ...
- 国密SSL证书,为政务数据安全保驾护航
随着数字化转型的加速,政务信息化建设已成为提升政府服务效率和质量的关键.近期,国家相关部门发布了<互联网政务应用安全管理规定>,为政务应用的安全管理提供了明确的规范和要求.该规定自2024 ...
- 进程管理工具之PM2
Github地址 https://github.com/Unitech/pm2 官方文档 http://pm2.keymetrics.io/docs/usage/quick-start/ npm安装 ...
- 新型大语言模型的预训练与后训练范式,苹果的AFM基础语言模型
前言:大型语言模型(LLMs)的发展历程可以说是非常长,从早期的GPT模型一路走到了今天这些复杂的.公开权重的大型语言模型.最初,LLM的训练过程只关注预训练,但后来逐步扩展到了包括预训练和后训练在内 ...
- canvas(一)描边与填充
1.画布大小 canvas默认的大小是 300*150,通过操作width/height属性可以设置画布的大小,属性值只能是具体是像素值,而不能是百分比. <body> <div c ...
- acode连接termux
在acode中安装AcodeX - Terminal插件 在termux中运行 curl -sL https://raw.githubusercontent.com/bajrangCoder/acod ...
- 鸿蒙NEXT开发案例:颜文字搜索器
[引言] 本文将介绍一个名为"颜文字搜索器"的开发案例,该应用是基于鸿蒙NEXT平台构建的,旨在帮助用户快速查找和使用各种风格的表情符号.通过本案例的学习,读者可以了解如何在鸿蒙平 ...
- WinDbg: Failed to find runtime module (coreclr.dll or clr.dll or libcoreclr.so)
当我们通过 WinDbg 启动一个 .NET 的程序时,WinDbg 将会在运行可执行之前执行一个中断,此时还没有加载 .NET 的运行时. 但是,SOS 扩展需要 clr.dll 或者 corecl ...
- 【uni-app】【01】底部导航栏与页面切换
1.(配置文件在哪)uni-app 路由控制是在 pages.json文件中的. 2.(基本配置项有哪些)初学的时候主要有三个配置项,①pages ② globalStyle ③ tabbar [!T ...