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