入门工程:

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)的更多相关文章

  1. Springboot系列(四)web静态资源配置详解

    Springboot系列(四)web静态资源配置 往期精彩 SpringBoot系列(一)idea新建Springboot项目 SpringBoot系列(二)入门知识 SpringBoot系列(三)配 ...

  2. SpringBoot 基础(二)

    目录 SpringBoot基础(二) 一.操作数据库 1. SpringBootJdbc 2. SpringBoot 整合 Mybatis 3. SpringBott 使用JPA 二.使用 Thyme ...

  3. Springboot 系列(九)使用 Spring JDBC 和 Druid 数据源监控

    前言 作为一名 Java 开发者,相信对 JDBC(Java Data Base Connectivity)是不会陌生的,JDBC作为 Java 基础内容,它提供了一种基准,据此可以构建更高级的工具和 ...

  4. SpringBoot入门(三)——入口类解析

    本文来自网易云社区 上一篇介绍了起步依赖,这篇我们先来看下SpringBoot项目是如何启动的. 入口类 再次观察工程的Maven配置文件,可以看到工程的默认打包方式是jar格式的. <pack ...

  5. SpringBoot入门(四)——自动配置

    本文来自网易云社区 SpringBoot之所以能够快速构建项目,得益于它的2个新特性,一个是起步依赖前面已经介绍过,另外一个则是自动配置.起步依赖用于降低项目依赖的复杂度,自动配置负责减少人工配置的工 ...

  6. SpringBoot入门(二)——起步依赖

    本文来自网易云社区 在前一篇我们通过简单几步操作就生成了一个可以直接运行的Web程序,这是因为SpringBoot代替我们做了许多工作,概括来讲可以分为起步依赖和自动配置.这一篇先来看看起步依赖. 项 ...

  7. SpringBoot入门(一)——开箱即用

    本文来自网易云社区 Spring Boot是什么 从根本上来讲Spring Boot就是一些库的集合,是一个基于"约定优于配置"的原则,快速搭建应用的框架.本质上依然Spring, ...

  8. Java EE 学习(9):IDEA + maven + spring 搭建 web(5)- 博客文章管理

    转载:Gaussic(一个致力于AI研究却不得不兼顾项目的研究生) . 注:在阅读本文前,请先阅读: Java EE 学习(5):IDEA + maven + spring 搭建 web(1) Jav ...

  9. Java EE 学习(8):IDEA + maven + spring 搭建 web(4)- 用户管理

    转载:Gaussic(一个致力于AI研究却不得不兼顾项目的研究生) 注:在阅读本文前,请先阅读: Java EE 学习(5):IDEA + maven + spring 搭建 web(1) ava E ...

随机推荐

  1. 20145202马超《java》实验四

    实验指导:http://www.cnblogs.com/lxm20145215----/p/5444207.html 实验指导:http://www.cnblogs.com/Vivian517/p/6 ...

  2. 青岛Uber优步司机奖励政策(1月4日~1月10日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  3. 青岛Uber优步司机奖励政策(12月28日到1月3日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  4. springboot shiro没有注解解决方案

    颓废的悠然   springboot shiro开启注释 shiroconfiguration中增加 1 2 3 4 5 6 7 @Bean     public AuthorizationAttri ...

  5. Vs2015 遇到 CL:fatal error c1510 cannot load language clui.dll

    网上说什么点击修复VS,修改VS的,经验证都不好使,直接下载这个库,放在system32/64下面皆可以了

  6. 通过批处理命令for提取数据

    前两天有这么个小需求: 在cmd中运行某测试工具后,会返回一个json结果,其中有一个参数的值每次都变且经常要用,正常情况复制粘贴就好了,但这个值非常长,配上cmd的标记+粘贴的行为,就很酸爽了.然后 ...

  7. 各种对list,string操作函数的总结

    #encoding=utf-8#reverse,用来反转lista=['aa','bb','cc']a.reverse()print a#['cc', 'bb', 'aa']#不能直接print a. ...

  8. Python递归算法入门

    递归是一种算法,它在编程里面有着广泛的应用: 1. 递归必须满足哪两个基本条件? 一.函数调用自身 二.设置了正确的返回条件 2. 思考一下,按照递归的特性,在编程中有没有不得不使用递归的情况? 答: ...

  9. 原生js常用方法

    原生JavaScript设置cookie值 function setCookie(name, value, Hours) { var d = new Date(); var offset = 8; v ...

  10. Vue动画效果

    1.哪些元素/那些组件适合在那些条件下实现动画效果 条件渲染 (使用 v-if) 条件展示 (使用 v-show) 动态组件 组件根节点 简单经典例子:(文字隐藏到显示效果) <div> ...