SpringBoot Web(SpringMVC)
入门工程:
package com.example.demo.controller; import com.example.demo.entity.User;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import java.util.Arrays;
import java.util.HashMap;
import java.util.Map; @RestController//返回json格式数据
public class DemoController { @RequestMapping(value="/demo/hello")
//http://localhost:8080/demo/hello
public String hello() {
return "hello";
} @RequestMapping(value="/demo/json")
//http://localhost:8080/demo/json
public Map<String, Object> json() {
Map<String, Object> map = new HashMap<>();
map.put("status", "OK");
map.put("data", Arrays.asList("aaa","bbb","ddd")); return map;
} @RequestMapping(value="/demo/auto")
//http://localhost:8080/demo/auto?id=1&no=2 自动复制到参数中
public Map<String, Object> auto(Integer id, int no) {
Map<String, Object> map = new HashMap<>();
map.put("id", id);
map.put("no", no); return map;
} @RequestMapping(value="/demo/xxx")
//http://localhost:8080/demo/xxx 可以单独赋值一个参数
public Map<String, Object> ann(
@RequestParam(name = "user", required = false, defaultValue = "admin") String account,
@RequestParam(name = "pass", required = false, defaultValue = "123") String password) {
Map<String, Object> map = new HashMap<>();
map.put("account", account);
map.put("password", password); return map;
} @RequestMapping(value="/demo/bean")
//http://localhost:8080/demo/bean 可以直接赋值给实体类的属性
public Map<String, Object> bean(User user) {
Map<String, Object> map = new HashMap<>();
map.put("account", user.getAccount());
map.put("password", user.getPassword()); return map;
}
}
实体类
package com.example.demo.entity; public class User {
private String account;
private String password; public String getAccount() {
return account;
} public void setAccount(String account) {
this.account = account;
} public String getPassword() {
return password;
} public void setPassword(String password) {
this.password = password;
} @Override
public String toString() {
return "User{" +
"account='" + account + '\'' +
", password='" + password + '\'' +
'}';
}
}
Rest风格的使用
package com.example.demo.controller; import com.example.demo.entity.User;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*; import java.util.List; @RestController
public class RestUserController {
// 通过id查询用户信息
// @RequestMapping(value = "/user/{id}", method = RequestMethod.GET)
@GetMapping("/user/{id}")
// @PathVariable从请求中找到id为可以的值赋值方法参数id
public void getUser(@PathVariable int id) {
System.out.println("查询到了id="+id);
} // 查询所有用户信息
@RequestMapping(value = "/user", method = RequestMethod.GET)
public void getUser() {
System.out.println("查询到所有信息");
} // 添加用户信息,同样可以将参数直接赋值给实体类
@RequestMapping(value = "/user", method = RequestMethod.POST)
public void saveUser(User user, Model model) {
System.out.println(model);
System.out.println("添加用户信息 user:"+ user);
} // 修改用户信息 可以使用json传参
@RequestMapping(value = "/user", method = RequestMethod.PUT)
public void updateUser(@RequestBody List<User> user) {
System.out.println("修改用户信息");
} // 修改用户信息
@RequestMapping(value = "/user/{id}", method = RequestMethod.DELETE)
public void deleteUser(@PathVariable int id) {
System.out.println("删除用户信息 id = " + id);
}
}
SpringBoot默认不支持jsp,需要配置支持
jsp配置
工程结构:
引入依赖tomcat-embed-jasper(版本号可以去掉)
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
修改打包方式为war
<packaging>war</packaging>
手动建立webapp目录,并生成web.xml
Idea生成web.xml方式:
到这里依然不能访问jsp
要在application.properties中添加如下配置:
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp
并写配置类
package com.boot.jsp.bootjsp.controller; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping; @Controller
public class JspController { @GetMapping("/jsp")
public String index() {
return "index";
}
}
使用插件运行后,就可以使用http://localhost:8080/jsp访问jsp了
freemarker配置
工程目录:
引入freemarker依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
index.ftl---freemarke页面
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>测试</title>
</head>
<body>
boot集成freemarker引擎
<br>
姓名: ${user.name}
年龄: ${user.age}
<#--生日: ${user.birth}-->
</body>
</html>
package com.boot.freemark.demo.bootfreemarker1.controller; import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping; import java.util.Date;
import java.util.HashMap;
import java.util.Map; @Controller
public class FreemarkerController {
@GetMapping("/index")
public String index() {
return "index";
} @GetMapping("/data")
public String data(Model model) {
Map<String, Object> map = new HashMap<>();
map.put("name","往屋里");
map.put("age", 10);
map.put("birth", new Date());
model.addAttribute("user", map); return "index";
}
}
配置后就可以直接通过url访问了
templates文件夹中放置模板文件
thymeleaf配置
工程结构:
引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
模板:
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>测试</title>
</head>
<body>
boot集成thymeleaf
<img src="data:images/tt.jpg">
</body>
</html>
配置类:
package com.boot.thyemeleaf.boootthyemeleaf.controller; import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping; import java.util.HashMap;
import java.util.Map; @Controller
public class ThymeleafController { @GetMapping("/index")
public String index() {
return "index";
} @GetMapping("/data")
public String data(Model model) {
Map<String, Object> map = new HashMap<>();
map.put("name","往屋里");
map.put("age", 10);
model.addAttribute("user", map); return "index";
}
}
静态资源配置:
spring.resources.staticLocations=修改静态资源的路径(一般不改)
默认路径在static目录下
静态资源可以在页面中直接使用路径进行访问,也可以通过URL进行访问,如上边的img资源
SpringBoot Web(SpringMVC)的更多相关文章
- Springboot系列(四)web静态资源配置详解
Springboot系列(四)web静态资源配置 往期精彩 SpringBoot系列(一)idea新建Springboot项目 SpringBoot系列(二)入门知识 SpringBoot系列(三)配 ...
- SpringBoot 基础(二)
目录 SpringBoot基础(二) 一.操作数据库 1. SpringBootJdbc 2. SpringBoot 整合 Mybatis 3. SpringBott 使用JPA 二.使用 Thyme ...
- Springboot 系列(九)使用 Spring JDBC 和 Druid 数据源监控
前言 作为一名 Java 开发者,相信对 JDBC(Java Data Base Connectivity)是不会陌生的,JDBC作为 Java 基础内容,它提供了一种基准,据此可以构建更高级的工具和 ...
- SpringBoot入门(三)——入口类解析
本文来自网易云社区 上一篇介绍了起步依赖,这篇我们先来看下SpringBoot项目是如何启动的. 入口类 再次观察工程的Maven配置文件,可以看到工程的默认打包方式是jar格式的. <pack ...
- SpringBoot入门(四)——自动配置
本文来自网易云社区 SpringBoot之所以能够快速构建项目,得益于它的2个新特性,一个是起步依赖前面已经介绍过,另外一个则是自动配置.起步依赖用于降低项目依赖的复杂度,自动配置负责减少人工配置的工 ...
- SpringBoot入门(二)——起步依赖
本文来自网易云社区 在前一篇我们通过简单几步操作就生成了一个可以直接运行的Web程序,这是因为SpringBoot代替我们做了许多工作,概括来讲可以分为起步依赖和自动配置.这一篇先来看看起步依赖. 项 ...
- SpringBoot入门(一)——开箱即用
本文来自网易云社区 Spring Boot是什么 从根本上来讲Spring Boot就是一些库的集合,是一个基于"约定优于配置"的原则,快速搭建应用的框架.本质上依然Spring, ...
- Java EE 学习(9):IDEA + maven + spring 搭建 web(5)- 博客文章管理
转载:Gaussic(一个致力于AI研究却不得不兼顾项目的研究生) . 注:在阅读本文前,请先阅读: Java EE 学习(5):IDEA + maven + spring 搭建 web(1) Jav ...
- Java EE 学习(8):IDEA + maven + spring 搭建 web(4)- 用户管理
转载:Gaussic(一个致力于AI研究却不得不兼顾项目的研究生) 注:在阅读本文前,请先阅读: Java EE 学习(5):IDEA + maven + spring 搭建 web(1) ava E ...
随机推荐
- ACM数论-卡特兰数Catalan
Catalan 原理: 令h(0)=1,h(1)=1,catalan 数满足递归式: (其中n>=2) 另类递推公式: 该递推关系的解为: (n=1,2,3,...) 卡特兰数的应用实质上都是递 ...
- SpringBoot 解决ModelAndView强转Json问题
最近一直在做SpringBoot升级的项目,碰到了一个很蛋疼的问题. 我们项目和前端的AngularJs通过Json来传递信息,但是我们有一块的代码在Controller返回的是ModelAndVIe ...
- 网络相关知识点:nginx相关概念
今天我们来介绍一下反向代理以及负载均衡相关内容: 反向代理: 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求, 然后将请求转发给内部网络上的服务器,并将从 ...
- Filter配置多个url-pattern
java开发中会用的Filter过滤器,有时候开发需要,在一个Filter中需要配置多个过滤地址,即<url-pattern>,下面就说一下一个Filter过滤器中多个<url-pa ...
- Date 工具类(包含常用的一些时间方法)
package com.fh.util; import java.sql.Timestamp; import java.text.DateFormat; import java.text.ParseE ...
- 浅谈如何提高自动化测试的稳定性和可维护性 (pytest&allure)
装饰器与出错重试机制 谈到稳定性,不得不说的就是“出错重试”机制了,在自动化测试中,由于环境一般都是测试环境,经常会有各种各种的抽风情况影响测试结果,这样就为测试的稳定性带来了挑战,毕竟谁也不想自己的 ...
- Django学习总结-之-URLS反向解析
2018-09-15 09:58:49 在CSDN博客审核效率提高之前, 又要在此处向各位唠叨了~ URL 与 URI URL : 统一资源定位符 相当于绝对路径 URI : 统一资源标志符 相当于 ...
- 数据库Mysql的学习(三)-各种约束
删除数据库表 drop table [if exists] 表一,表二.....; 表分区:比如图书信息表有1000万个图书信息,如何优化他,其中一种方式就是表分区.就是把一张表的数据分成多个区块,这 ...
- Vue-cli 工具 / 通过 Vue-cli 工具重构 todoList
本博文归纳在 Vue 学习过程中, Vue-cli 工具的使用说明.除此之外还通过 Vue-cli 工具将之前 Vuejs 基本语法当中实现的 todoList 进行重构. 安装 npm instal ...
- scatter注记词
say illness thumb ginger brass atom twenty omit fine thought staff poverty