java整合html_springBoot整合mybatis、jsp 或 HTML

springBoot整合mybatis、jsp

Spring Boot的主要优点:

1:  为所有Spring开发者更快的入门;

2:开箱即用,提供各种默认配置来简化项目配置;

3:  内嵌式容器简化Web项目;

4:  没有冗余代码生成和XML配置的要求

本项目使用到的工具:

开发工具:Intellij IDEA 2018.1.4

springboot:2.0.1.RELEASE

jdk:1.8.0_40

maven:3.3.9

开始搭建:

项目创建

2478c69afce1f34a0432052757ae611a.png

e9e695d955d8c9f270c4c36102313e2f.png

b261a85b3ec1eb8ae0a0cb65b2b25c0e.png

65b2fdc49c380e753b14f1e4f028a8d4.png

finish即可。

建好后的 项目结构:

5f9ac520dba75288c9286512d3bc4e9b.png

pom.xml:

1 <?xml version="1.0" encoding="UTF-8"?>

2

3 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

4 4.0.0

5

6 com.dengwei

7 springdemo

8 0.0.1-SNAPSHOT

9 jar

10

11 springdemo

12 Demo project for Spring Boot

13

14

15 org.springframework.boot

16 spring-boot-starter-parent

17 2.0.1.RELEASE

18

19

20

21

22 UTF-8

23 UTF-8

24 1.8

25

26

27

28

29 org.springframework.boot

30 spring-boot-starter-jdbc

31

32

33 org.springframework.boot

34 spring-boot-starter-web

35

36

37 org.mybatis.spring.boot

38 mybatis-spring-boot-starter

39 1.3.2

40

41

42

43 mysql

44 mysql-connector-java

45 runtime

46

47

48 org.springframework.boot

49 spring-boot-starter-test

50 test

51

52

53

54

55 org.springframework.boot

56 spring-boot-starter-tomcat

57

58

59 org.apache.tomcat.embed

60 tomcat-embed-jasper

61

62

63

64

65

66

67 org.springframework.boot

68 spring-boot-maven-plugin

69

70

71

72

73

74

我们先建一个controller层,写一个简单的类访问一下:

8d05561ea1d4bb105c9b7d91f11f3a02.png

HelloSpringBootController:

1 packagecom.dengwei.springdemo.controller;2

3 importorg.springframework.web.bind.annotation.RequestMapping;4 importorg.springframework.web.bind.annotation.RestController;5

6 importjava.util.HashMap;7 importjava.util.Map;8

9 @RestController10 public classHelloSpringBootController {11 @RequestMapping("/index")12 publicString hello(){13 return "hello springBoot";14 }15

16 @RequestMapping("/hello")17 public MapgetMap(){18 HashMap map = new HashMap();19 map.put("key1","姓名");20 map.put("key2","年龄");21 map.put("key3","性别");22 returnmap;23 }24

25 }

下面我们启动一下:

每一个springBoot项目中都有一个XXXAplication类,这个类就是springBoot的启动类。

注意:因为我们前面添加了数据库相关的依赖,但是我们还没有具体配置,如果直接运行的话会报错:

***************************

APPLICATION FAILED TO START

***************************

Description:

Failed to auto-configure a DataSource: 'spring.datasource.url' is not specified and no embedded datasource could be auto-configured.

Reason: Failed to determine a suitable driver class

Action:

Consider the following:

If you want an embedded database (H2, HSQL or Derby), please put it on the classpath.

If you have database settings to be loaded from a particular profile you may need to activate it (no profiles are currently active).

解决:

在@EnableAutoConfiguretion中添加   exclude= {DataSourceAutoConfiguration.class},排除此类的autoconfig。启动以后就可以正常运行。

1afae31ee4e7a5ebc14a51e822ef88db.png

好的,启动没问题,我们下面正式进入mybatis与jsp的整合:

建model层:

8da59e71d7efd5181386555b50950b4e.png

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 packagecom.dengwei.springdemo.model;2

3 public classUser {4 privateInteger id;5 privateString userName;6 privateString password;7

8 publicInteger getId() {9 returnid;10 }11

12 public voidsetId(Integer id) {13 this.id =id;14 }15

16 publicString getUserName() {17 returnuserName;18 }19

20 public voidsetUserName(String userName) {21 this.userName =userName;22 }23

24 publicString getPassword() {25 returnpassword;26 }27

28 public voidsetPassword(String password) {29 this.password =password;30 }31

32 @Override33 publicString toString() {34 return "User{" +

35 "id=" + id +

36 ", userName='" + userName + '\'' +

37 ", password='" + password + '\'' +

38 '}';39 }40 }

View Code

2:建mapper层:

注意:我们这里的sql语句是通过注解的形式和接口写在一起的,也可以通过xml的形式配置,可以见另外一篇博客:

6b71500421c36ab4cb428e9f17385ec3.png

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 packagecom.dengwei.springdemo.mapper;2

3

4 importcom.dengwei.springdemo.model.User;5 importorg.apache.ibatis.annotations.Param;6 importorg.apache.ibatis.annotations.Select;7

8

9 public interfaceIUserMapper {10

11 @Select("SELECT id,user_name userName, pass_word password FROM user WHERE id = #{id}")12 User queryById(@Param("id") Integer id);13 }

View Code

3:建Service层:

509656496adc3c6216a021a6a501c189.png

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 packagecom.dengwei.springdemo.Service;2

3

4 importcom.dengwei.springdemo.mapper.IUserMapper;5 importcom.dengwei.springdemo.model.User;6 importorg.springframework.beans.factory.annotation.Autowired;7 importorg.springframework.stereotype.Service;8

9 @Service10 public classUserService {11 @Autowired12 privateIUserMapper userMapper;13 publicUser queryUser(Integer id){14 returnuserMapper.queryById(id);15 }16 }

View Code

4:控制层访问:

6f35756d8a99f4a0d786b187e88e7cc8.png

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 packagecom.dengwei.springdemo.controller;2

3

4 importcom.dengwei.springdemo.Service.UserService;5 importcom.dengwei.springdemo.model.User;6 importorg.springframework.beans.factory.annotation.Autowired;7 importorg.springframework.stereotype.Controller;8 importorg.springframework.web.bind.annotation.RequestMapping;9 importorg.springframework.web.bind.annotation.ResponseBody;10

11 @Controller12 @RequestMapping("/controller")13 public classUserController {14 @Autowired15 privateUserService userService;16

17 @RequestMapping("/user")18 @ResponseBody19 publicUser getUser(Integer id){20 User user =userService.queryUser(id);21 returnuser;22 }23

24 }

View Code

数据库连接配置文件:

e083fb48cf19ae283de6a67343bcf788.png

1 spring.mvc.view.prefix=/WEB-INF/jsp/

2 spring.mvc.view.suffix=.jsp3 #jdbc相关4 spring.datasource.url=jdbc:mysql://localhost:3306/floor_shop

5 spring.datasource.username=root6 spring.datasource.password=admin7 spring.datasource.driver-class-name=com.mysql.jdbc.Driver

启动springBoot:

注意:前面我们排除了对数据库相关的自动配置,现在我们配置了数据库实体配置,所以把之前的排除要删掉,并且多添加@MapperScan("mapper映射文件的地址")

97d0ea62f8b82dfd33c70f38878d6c1b.png

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 packagecom.dengwei.springdemo;2

3 importorg.mybatis.spring.annotation.MapperScan;4 importorg.springframework.boot.SpringApplication;5 importorg.springframework.boot.autoconfigure.EnableAutoConfiguration;6 importorg.springframework.boot.autoconfigure.SpringBootApplication;7 importorg.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;8

9 @SpringBootApplication10 @EnableAutoConfiguration11 @MapperScan("com.dengwei.springdemo.mapper")12 public classSpringdemoApplication {13

14 public static voidmain(String[] args) {15 SpringApplication.run(SpringdemoApplication.class, args);16 }17 }

View Code

好的直接启动即可。上面我们简单实现了数据库的查询,增删改就自己取写一写吧。

下面我们看看springBoot整合jsp:

1、在原来的依赖中添加依赖:

org.apache.tomcat.embed

tomcat-embed-jasper

2、跳转页面:

6f99a7e58a5248ea50cdad3f35c1108b.png

springBoot整合thymeleaf:

org.springframework.boot

spring-boot-starter-thymeleaf

跳转页面:

不用加前后缀,可以直接跳转页面:

3a8e8ce170e66fd8c08acc82996fdab7.png

关于thymeleaf的基础使用参考:

在我们第一次新建的HelloSpringBootController中 新建一个helloJsp()方法,注意:我们之前用的注解是@RestController ,这个注解相当于@Controller  +  @ResponseBody

表示标注的类或则方法返回的都是json格式的,而我们这次需要访问jsp页面所以需要换成@Controller注解。在需要的返回json格式的方法上添加@ResponseBody,而不是整个类的所有方法都返回json格式。

d532a26fdb28bf8c7db7bf71abfe64ab.png

下面我们看一下springBoot中的全局异常捕获:

异常捕获的核心标签:@ControllerAdvice   +   @ExceptionHandler(RuntimeException.class)

6f5739c7115136682125941c1ed2e175.png

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 packagecom.dengwei.springdemo.controller;2

3 importorg.springframework.web.bind.annotation.ControllerAdvice;4 importorg.springframework.web.bind.annotation.ExceptionHandler;5 importorg.springframework.web.bind.annotation.RequestMapping;6

7 @ControllerAdvice8 public classGlobalExceptionHandler {9 @ExceptionHandler(RuntimeException.class)10 @RequestMapping11 publicString errorPage(){12 return "index";13 }14 }

View Code

好了,就先到这儿吧!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/245653.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python语言及其应用电子版翁正秋_Python语言及其应用pdf

《Python语言及其应用》内容易于理解&#xff0c;而且读起来生动有趣&#xff0c;是编程和Python初学者不可多得的教程。书中首先介绍了Python的基础知识&#xff0c;然后逐渐深入多种主题&#xff0c;结合教程和攻略式风格来讲解Python 3中的概念。每章结尾的练习可以帮助你巩…

回溯法基本思想_LeetCode--回溯法心得

这两天在刷LeetCode37题解数独时&#xff0c;被这个回溯法折腾的不要不要的&#xff0c;于是我疼定思疼发誓一定要找个能解决这类回溯法的套路出来&#xff0c;方便以后快速解决此类题目。于是我在网上找了两个很经典的回溯法题目--八皇后问题和迷宫问题&#xff0c;认真总结了…

汇编语言 把最大值放入max 把最小值放入min_Excel求最大值地球人都知道,那要求出第2、第3、第N大值呢?...

只要稍稍懂点excel的人&#xff0c;都会轻松地求出最大值、最小值。那要求出第2大值、第3大值……第N大值呢&#xff1f;往下看&#xff0c;掌握了方法&#xff0c;排序又变得很简单了。最大最小值最大值&#xff1a;max(B:B)&#xff0c;最小值&#xff1a;min(B:B)其中B:B为最…

python3 for_python3 for循环-range遍历

for循环、range遍历 for循环range遍历 range&#xff08;1,10&#xff09; 注&#xff1a;是1-9&#xff0c;而不包括最后的10。实例&#xff1a; 九九乘法表&#xff1a; # -*- coding: UTF-8 -*- # 乘法表 for i in range(1,10): for j in range(1,10): print(‘{}*{}{}‘.fo…

php撒意思,php表示是什么意思

php表示超文本预处理器&#xff0c;它是一种通用的开源脚本语言。php是常用的网站编程语言&#xff0c;有着开源性、免费性、快捷性、数据库连接的广泛性、面向过程和面向对象并用等特点。php介绍&#xff1a;PHP即“超文本预处理器”&#xff0c;是一种通用开源脚本语言。PHP是…

python暂停和恢复_python-线程的暂停, 恢复, 退出

我们都知道python中可以是threading模块实现多线程, 但是模块并没有提供暂停, 恢复和停止线程的方法, 一旦线程对象调用start方法后, 只能等到对应的方法函数运行完毕. 也就是说一旦start后, 线程就属于失控状态. 不过, 我们可以自己实现这些. 一般的方法就是循环地判断一个标志…

织梦直接写php标签,怎么在自己的php页面中使用dedecms标签

怎么在自己的php页面中使用dedecms标签&#xff1f;这篇文章主要介绍了在自己的php页面中使用dedecms标签的代码示例,需要的朋友可以参考下推荐学习&#xff1a;织梦cms第一步&#xff1a;外部php页面中加入如下代码&#xff1a;require_once (dirname(__FILE__)./../include/c…

xshell搭建宝塔没有远程命令密码框框弹出来_服务器安装宝塔控制面板+wordpress搭建个人网站...

准备工作服务器一台&#xff1a;服务器购买域名一个&#xff1a;随便买一个就行软件环境&#xff1a;宝塔面板第1步&#xff1a;SSH远程连接服务器通过ssh远程连接工具进行服务器主机连接&#xff08;Xshell、Putty等&#xff0c;百度下载&#xff09;需要更加详细的关于ssh远程…

python类有什么用_python 定制类 有什么用

展开全部 C.__init__(self[, arg1, ...]) 构造2113器(带一5261些可选的参数) C.__new__(self[, arg1, ...]) 构造器(带一些可选的参数);通常用在设置不变数4102据类型的子类。 C.__del__(self) 解构1653器 C.__str__(self) 可打印的字符输出;内建 str()及 print 语句 C.__repr_…

php列目录设置密码,PHP输入密码并列出目录文件生成超链接代码

一个可以加密文件夹&#xff0c;并且可以展示文件夹内文件的php代码&#xff1a;$password "123456"; // 这里是密码$p "";if(isset($_COOKIE["isview"]) and $_COOKIE["isview"] $password){$isview true;}else{if(isset($_POST[…

php8vsgo,vscode编辑好go语言代码要怎么运行

vscode运行go语言代码需要安装vscode-go插件。然后使用F5(continue)、F10(step over)、F11(step into)等快捷键运行go语言代码。安装vscode-go 插件进入vscode界面,打开命令面板Ctrl Shift P,输入install,插件特性包括:Completion Lists (using gocode)Signature Help (using…

python送心小人_使用Python画出小人发射爱心的代码

我就废话不多说了&#xff0c;直接上代码吧&#xff01; #2.14 from turtle import * from time import sleep def go_to(x, y): up() goto(x, y) down() def head(x,y,r): go_to(x,y) speed(1) circle(r) leg(x,y) def leg(x,y): right(90) forward(180) right(30) forward(10…

c 函数多次声明_C++核心准则C.132:不要没有理由就将函数声明为虚函数

岫玉C.132: Dont make a function virtual without reasonC.132:不要没有理由就将函数声明为虚函数Reason(原因)Redundant virtual increases run-time and object-code size. A virtual function can be overridden and is thus open to mistakes in a derived class. A virtu…

anaconda3卸载python_机器学习Python编程环境:VSCode+Anaconda

机器学习Python编程环境&#xff08;Windows&#xff09;&#xff1a;VSCodeAnaconda安装顺序&#xff1a;Anaconda ->VSCode (不必下载Python)->机器学习常用Python包为什么选择VSCode &#xff1f;Anaconda pycharm是大家都熟悉的Python编程环境,但是pycharm比较笨重&…

bat窗口大小设置_8-Flink中的窗口

戳原文&#xff1a;1-Flink入门2-本地环境搭建&构建第一个Flink应用3-DataSet API 4-DataSteam API5-集群部署6-分布式缓存7-重启策略8-Flink中的窗口9-Flink中的Time窗口窗口类型flink支持两种划分窗口的方式&#xff08;time和count&#xff09; 如果根据时间划分窗口&am…

php中pandans,Python地信专题 | 基于geopandas的空间数据分析-文件IO篇

本文对应代码和数据已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes1 简介在上一篇文章中我们对geopandas中的坐标参考系有了较为深入的学习&#xff0c;而在日常空间数据分析工作中矢量文件的读入和写出&#xff0c;是至关重要的环节。作为基于geo…

ros创建工作空间_ROS入门学习之七Moveit机械臂控制

1.MoveIt!系统架构MoveIt是什么&#xff1a;一个易于使用的集成化开发平台由一系列移动操作的功能包组成&#xff1a;运动规划、操作控制、3D感知、运动学、控制与导航算法提供友好的GUI可应用于工业、商业、研发和其他领域ROS社区中使用度排名前三的功能包系统架构用户接口(Us…

常用于评价回归模型优劣的统计量包括( )。_第四十一讲 R-判断回归模型性能的指标...

当回归模型建立好以后&#xff0c;如何评价该回归模型是否与另一个回归模型有区别&#xff0c;如何比较两个回归模型的性能&#xff1f;这一讲中&#xff0c;我们将给大家介绍几个评价回归模型性能的统计指标。1. 模型性能指标在回归模型中&#xff0c;最常用的评估指标包括&am…

python 常用包_Python常用指引

Python常用指引Python常用指引的形式来源于Linux文档项目的常用指引章节&#xff0c;是一系列独立、指定主题并尝试完全覆盖该主题的文章集合。致力于提供比Python库参考帮助更详尽的文档。Python 3 是 Python 的未来&#xff0c;但 Python 2 仍处于活跃使用阶段&#xff0c;最…

读取当前linux进程内存_(笔记)Linux上的内存分配

作者: LemonNan原文: https://juejin.im/post/5ee3c34a518825430c3ad31d前言本篇是对Linux内存分配的一个学习笔记.程序内存结构下面是在 Linux/x86-32 中典型的一个进程内存结构文本段包含了进程运行的程序机器语言指令. 文本段具有只读属性, 以防止进程通过勘误指针意外修改自…