SpringBoot访问NoSQL和简单的Thymeleaf-Spring-Spring-boot整合
SpringBoot访问NoSQL
SpringBoot访问Redis
在pom.xml添加boot-data-redis定义
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.1.RELEASE</version>
</parent> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties> <dependencies> <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency> </dependencies>在application.properties添加redis连接参数
spring.redis.host=localhost
spring.redis.port=6379定义启动类
@SpringBootApplication
public class MyBootApplication { }测试程序
public static void main(String[] args) {
ApplicationContext ac =
SpringApplication.run(MyBootApplication.class, args);
RedisTemplate<Object,Object> redis =
ac.getBean("redisTemplate",RedisTemplate.class);
redis.opsForValue().set("name", "SpringBoot");
Object name = redis.opsForValue().get("name");
System.out.println(name);
Dept dept = new Dept();
dept.setDeptno(10);
dept.setDname("JAVA");
dept.setLoc("北京");
redis.opsForValue().set("dept", dept);
Dept dept1 = (Dept)redis.opsForValue().get("dept");
System.out.println(
dept1.getDeptno()+" "+dept1.getDname()+" "+dept1.getLoc()); }
SpringBoot访问Mongodb
在pom.xml追加boot-starter-data-mongodb定义
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.1.RELEASE</version>
</parent> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties> <dependencies> <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency> </dependencies>在application.properties追加连接参数定义
spring.data.mongodb.uri=mongodb://localhost:27017/java20 #spring.data.mongodb.host=localhost
#spring.data.mongodb.port=27017
#spring.data.mongodb.database=java20定义主启动类
@SpringBootApplication
public class MyBootApplication { }测试程序
public static void main(String[] args) {
ApplicationContext ac =
SpringApplication.run(MyBootApplication.class, args);
MongoTemplate template =
ac.getBean("mongoTemplate",MongoTemplate.class);
List<Dept> list = template.findAll(Dept.class);
for(Dept dept:list){
System.out.println(
dept.getDeptno()+" "+dept.getDname()+" "+dept.getLoc());
}
}
SpringBoot MVC
主要封装了SpringMVC、Restful、内置tomcat等功能。
restful服务
SSM:SpringMVC、IOC、MyBatis
/dept/get GET 查询部门信息
/dept/list GET 分页查询部门信息
请求-->DispatcherServlet-->HandlerMapping-->DeptController-->DeptDao-->返回JSON结果
在pom.xml追加web、jdbc、mybatis-spring、驱动包定义
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.1.RELEASE</version>
</parent> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties> <dependencies> <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency> <dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2.0.3</version>
</dependency> <!-- mybatis、mybatis-spring、autocofigurer -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.0</version>
</dependency> <dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.3</version>
</dependency> </dependencies>在application.properties追加连接参数定义
#server
server.port=8888 #datasource
spring.datasource.username=SCOTT
spring.datasource.password=TIGER
spring.datasource.url=jdbc:oracle:thin:@localhost:1521:XE
spring.datasource.driverClassName=oracle.jdbc.OracleDriver编写实现DeptDao
- 定义实体类Dept(同上)
定义Mapper映射器+注解SQL
public interface DeptDao { @Select("select * from dept where deptno=#{no}")
public Dept findById(int no); @Select("select * from dept order by deptno")
public List<Dept> findAll(); }
编写实现DeptController
@RestController
public class DeptController { @Autowired
private DeptDao deptDao; @GetMapping("/dept/get")// dept/get?no=xx
public Dept load(int no){
Dept dept = deptDao.findById(no);
return dept;
} @GetMapping("/dept/list")// dept/list?page=xx&size=xx
public List<Dept> loadPage(
@RequestParam(required=false,defaultValue="1",name="page")int pageNum,
@RequestParam(required=false,defaultValue="5",name="size")int pageSize){
PageHelper.startPage(pageNum, pageSize);
List<Dept> list = deptDao.findAll();
return list;
} }定义启动类、追加@SpringBootApplication、@MapperScan标记
@SpringBootApplication
@MapperScan(basePackages={"cn.xdl.dao"})
public class MyBootApplication { public static void main(String[] args) {
SpringApplication.run(MyBootApplication.class, args);
} }启动Boot程序测试
JSP响应界面
/hello-->DispatcherServlet-->HandlerMapping-->HelloController-->ModelAndView-->ViewResolver-->/hello.jsp
在pom.xml追加web、jasper定义
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.1.RELEASE</version>
</parent> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties> <dependencies> <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency> <dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency> </dependencies>在application.properties追加server、viewresolver定义
#server
server.port=8888 #viewresolver
spring.mvc.view.prefix=/
spring.mvc.view.suffix=.jsp编写HelloController
@Controller
public class HelloController { @GetMapping("/hello")
public ModelAndView execute(){
System.out.println("进入HelloController.execute处理");
ModelAndView mav = new ModelAndView();
mav.setViewName("hello");//hello.jsp
mav.getModel().put("msg", "你好");
return mav;
} @GetMapping("/hello1")
public String execute1(ModelMap model){
System.out.println("进入HelloController.execute1处理");
model.put("msg", "Hello");
return "hello";
} }编写hello.jsp
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>SpringBoot JSP应用</h1>
<h2>${msg}</h2>
</body>
</html>编写启动类
@SpringBootApplication
public class MyBootApplication { public static void main(String[] args) {
SpringApplication.run(MyBootApplication.class, args);
} }启动测试
http://localhost:8888/hello
Thymeleaf模板响应界面
模板技术是对JSP技术的一个替代品,优点如下:
- 使用简单、方便(JSP复杂)
- 运行机制简单、效率高(JSP-->Servlet-->.class-->HTML输出)
Velocity : hello.vm + VTL
Freemarker:hello.ftl + FTL
Thymeleaf:hello.html + THTL
在pom.xml中追加boot-starter-thymeleaf定义
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.7.RELEASE</version>
</parent> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties> <dependencies>
<!-- web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency> <!-- thymeleaf -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency> </dependencies>在application.properties追加server配置
server.port=8888
定义Controller组件
@Controller
public class HelloController { @GetMapping("/hello")
public ModelAndView execute(){
ModelAndView mav = new ModelAndView();
mav.setViewName("hello");///templates/hello.html
mav.getModel().put("msg", "SpringBoot Thymeleaf");
return mav;
} }定义html模板文件,放在src/main/resources/templates目录中
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1 th:text="${msg}"></h1>
</body>
</html>定义启动类
@SpringBootApplication
public class MyBootApplication { public static void main(String[] args) {
SpringApplication.run(MyBootApplication.class, args);
} }启动程序测试
http://localhost:8888/hello
1.x版本的Boot需要取消严格的模板标记校验(开始和结束必须匹配)
<dependency>
<groupId>net.sourceforge.nekohtml</groupId>
<artifactId>nekohtml</artifactId>
</dependency>
在application.properties添加spring.thymeleaf.mode=LEGACYHTML5
SpringBoot访问NoSQL和简单的Thymeleaf-Spring-Spring-boot整合的更多相关文章
- 第一篇 Springboot + Web MVC + MyBatis + 简单UI + Thymeleaf实现
源码链接:https://pan.baidu.com/s/1-LtF56dnCM277v5lILRM7g 提取码:c374 第二篇 Springboot mybatis generate根据数据库表自 ...
- SpringBoot学习笔记(二):SpringBoot访问静态文件、捕获全局异常、集成Thymeleaf、集成JSP
SpringBoot访问静态文件 什么是静态文件? 不需要通过web容器去得到的文件,直接通过路径就能得到的文件,比如项目的css,js,img等文件. 所有的资源文件都应该在src/main/res ...
- Java结合SpringBoot拦截器实现简单的登录认证模块
Java结合SpringBoot拦截器实现简单的登录认证模块 之前在做项目时需要实现一个简单的登录认证的功能,就寻思着使用Spring Boot的拦截器来实现,在此记录一下我的整个实现过程,源码见文章 ...
- Spring Boot2 系列教程(九)Spring Boot 整合 Thymeleaf
虽然现在慢慢在流行前后端分离开发,但是据松哥所了解到的,还是有一些公司在做前后端不分的开发,而在前后端不分的开发中,我们就会需要后端页面模板(实际上,即使前后端分离,也会在一些场景下需要使用页面模板, ...
- 极简 Spring Boot 整合 Thymeleaf 页面模板
虽然现在慢慢在流行前后端分离开发,但是据松哥所了解到的,还是有一些公司在做前后端不分的开发,而在前后端不分的开发中,我们就会需要后端页面模板(实际上,即使前后端分离,也会在一些场景下需要使用页面模板, ...
- SpringBoot + Layui +Mybatis-plus实现简单后台管理系统(内置安全过滤器)
1. 简介 layui(谐音:类UI)是一款采用自身模块规范编写的前端UI框架,遵循原生HTML/CSS/JS的书写与组织形式,门槛极低,拿来即用.其外在极简,却又不失饱满的内在,体积轻盈,组件丰 ...
- spring boot整合Thymeleaf的那些坑(spring boot 学习笔记之四)
这里简单记录一下Thymeleaf配置和使用的步骤 1.修改pom文件,添加依赖 <dependency> <groupId>org.springframework.boot& ...
- springboot学习之构建简单项目搭建
概述 相信对于Java开发者而言,spring和springMvc两个框架一定不陌生,这两个框架需要我们手动配置的地方非常多,各种的xml文件,properties文件,构建一个项目还是挺复杂的,在这 ...
- 一站式SpringBoot for NoSQL Study Tutorial 开发教程学习手册
SpringBoot2.0 + NoSQL使用教程,项目名称:“SpringBoot2NoSQL” 项目地址: https://gitee.com/475660/SpringBoot2NoSQL 项目 ...
随机推荐
- 使用C#创建windows服务续之使用Topshelf优化Windows服务
前言: 之前写了一篇“使用C#创建windows服务”,https://www.cnblogs.com/huangwei1992/p/9693167.html,然后有博友给我推荐了一个开源框架Tops ...
- openvswitch datapath 内核态流表创建过程(ovs_flow_cmd_new)
datapath流表更新的入口函数都定义在dp_flow_genl_ops中,流表创建的入口函数是ovs_flow_cmd_new函数,通过该函数,我们可以一窥流表相关信息的建立. 1.ovs_flo ...
- Greedy- 621. Task Scheduler
Given a char array representing tasks CPU need to do. It contains capital letters A to Z where diffe ...
- 2018年Android面试题含答案--适合中高级(下)
这里是我整理出来的面试题,答案我花了很久的时间.加上我自己的理解整理出来的,作者不易,请谅解.有答案的的:https://xiaozhuanlan.com/topic/6132940875 1.A ...
- Flask从入门到精通之跨站请求伪造保护
默认情况下,Flask-WTF 能保护所有表单免受跨站请求伪造(Cross-Site Request Forgery,CSRF)的攻击.恶意网站把请求发送到被攻击者已登录的其他网站时就会引发CSRF ...
- Dockerfile指令详解上
COPY复制文件指令 和RUN命令一样,COPY命令也有两种格式,一种类似与命令行,一种类似与函数调用,命令格式如下: COPY ... COPY ["",...] COPY将构建 ...
- CSS3盒子模型(下)
绝对定位的盒子水平/垂直居中 普通的盒子是左右margin 改为 auto就可, 但是对于绝对定位就无效了 定位的盒子也可以水平或者垂直居中,有一个算法. 首先left 50% 父盒子的一半大小 然后 ...
- Process Explore & Windbg
遇到点内存泄漏.句柄泄漏,应该是家常便饭了.这次就是,程序运行内存一点点增加,句柄也是只增不减,个数竟然可以达到几十万,真是瞪大了我的双眼. 借此机会,学习下相关工具~ Process Explore ...
- POJ 2389
#include <iostream> #include <algorithm> #include <string> #define MAXN 300 using ...
- 快捷键&小技巧
shift+鼠标滚轮:实现左右移动 alt+鼠标左键双击:打开属性 chrome中在F12下的Element中,可以先选中某一项,可以直接按住F2进行编辑 chrome中element的右下方我们可以 ...