如果这篇博客能给你带来帮助不胜荣幸,如果有不对的地方,都是码农欢迎指正。直接进入正题

在这里首先我要声明一下我个人的感觉如果你会ssm(spring+mybatis+springmvc)的话,那么你可以在五分钟之内就搞定了,如果你不会也无所谓。

我个人是感觉springboot项目其实就是对ssm项目的一个管理和整合。如果你用的eclipse那么你需要下载插件,所以我建议大家直接下载sts(Spring Tools Suite)这个软件.官网自己下载

我使用的是sts这个树叶的软件。现在直接上:

1:第一  新建(new)找到Spring Starter Project(这个是创建springboot项目的),然后点击就创建一个springboot项目了。

然后会让你填写一下你的项目的具体的一些信息。最后点击next(也可以选择使用默认的东西)

然后会让你选择一些maven 的依赖 全部都是从下面的列表里找的比如从sql 里面找到mysql Driver驱动等等,需要什么就可以添加什么依赖(根据实际需求来添加)

添加完成之后创建项目的话你的项目里面就会自动下载这些依赖了,到时候前往pom.xml里面进行查看。

创建的过程可能比较慢 根据你的网速来定义 请大家耐心等待  至此恭喜你你已经创建了一个简单的springboot 项目了,里面需要有一些地方给大家讲一下:

我是用的导航图的样式来看项目,大家可以使用window--> view-->Navigator来修改视图模式

有几个框从上往下依此介绍:

第一个****application.java的文件是整个项目的启动类,所有的项目都需要从这里启动(切记切记)

然后resources这个文件加下放非Java文件资源的,比如说static下存放css和js和img等等 temolates文件下是存放html界面的,这个文件夹下类似ssm项目下的WEB-INF 文件夹下

是受到保护的不可以随便访问。然后最重要的就是application.properties(application.yml)文件。这个文件可以说是springboot项目的一个全局配置文件包含众多信息比如说:端口号的配置 datasource数据源的配置我一般习惯使用application.yml来进行一个配置。最后一个就是maven依赖的pom.xml依赖了。如果你的pom.xml如果跟我的一样报了错:

把你的版本号改成小一点的,比如说2.1.4等等。还有一点就是你的application.properties(application.yml文件)下面的webapp下面的文件夹你需要添加点东西,因为你使用的是war包,所以需要新建上一个文件夹(WEB-INFO)然后里面放上一个web.xml文件 和之前ssm的一样就可以了,然后web.xml文件里面什么也可以不用写。 到此你的项目就不报错了。

例如我的web.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
version="3.0"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<display-name>myspringbootDemo</display-name>
</web-app>

其实这个东西:如果你不需要使用jsp或者其他的什么的完全可以把没有用的东西干掉。

然后开始写一点东西。写两个查询吧一个注解的一个配置文件的。老规矩还是按照学生表来实现:

咱们创建目录 student,然后在他下面创建几个包(model(实体类),dao(持久层),service(业务层),web(控制层) )可以看我的创建目录 然后在启动类的上面进行配置扫描其实如果你的实体类和接口要是写在了*****.application那个启动类的同级或统计一下目录,那么会自动帮你扫描。但是我本人也会进行强迫症的扫描。

好的然后就是上代码:实体类详情什么的我会发给大家项目的参考的。现在就说主要工作流程:然后你需要创建dao层的接口。这里要注意的是:因为你少了很多配置,然后呢你需要使用的就是注解了。所以你在创建接口的时候就需要给他加上注解@Mapper(就相当于告诉项目我这个类呢是接口):然后呢正常写接口,我们写两个方法一个是使用注解的主键查询。另一个是使用注解的形式写mapper.xml的查询:当你使用注解查询的时候你就需要在你的项目上面写上你的相关的注解比如查询使用(@select)修改使用 @Update 删除使用@Delete  等等不在一一举例 。然后括号里面写你的sql语句该怎么写就怎么写,跟ssm项目完全一样。 业务层和控制层同样使用注解来进行配置(可以这样理解:告诉项目这个是业务层,这个是控制层),配合着上面的扫描一起使用。

当然了在控制层唯一有一点不太一样的地方就是一般情况下我们再看控制层有的时候会加上一个注解@Controller 现在呢多了一个@RestController这个注解,把鼠标放上去的时候就会出现它比@Controller多了一个注解那就是@ResponseBody,也就是说如果使用@RestController这个注解的话你的控制层的所有方法返回的数据格式全部是json串。(当然了我个人建议大家使用@Controller,然后可以在每个方法上面加上@ResponseBody),当你写到这一步的时候,不妨可以停下来跟我的对照一下看看是否一样啊:

实体类:

package com.company.demo.student.model;

public class Student {

    private Integer id;
private String name;
private Integer age;
private String sex; public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public Integer getAge() {
return age;
} public void setAge(Integer age) {
this.age = age;
} public String getSex() {
return sex;
} public void setSex(String sex) {
this.sex = sex;
} public Student(Integer id, String name, Integer age, String sex) {
super();
this.id = id;
this.name = name;
this.age = age;
this.sex = sex;
} public Student() {
// TODO Auto-generated constructor stub
} @Override
public String toString() {
return "Student [id=" + id + ", name=" + name + ", age=" + age + ", sex=" + sex + "]";
} }

dao层:

package com.company.demo.student.dao;

import java.util.List;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select; import com.company.demo.student.model.Student; @Mapper
public interface StudentMapper { @Select("select * from student where id =#{id}")
public Student queryById(Integer id); public List<Student> findAll();
}

业务层的接口:

package com.company.demo.student.service;

import java.util.List;

import com.company.demo.student.model.Student;

public interface StudentService {

    public Student queryById(Integer id);
public List<Student> findAll();
}

业务层的实现类:

package com.company.demo.student.service;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import com.company.demo.student.dao.StudentMapper;
import com.company.demo.student.model.Student; @Service
public class StudentImpl implements StudentService{ @Autowired
private StudentMapper studentMapper; @Override
public Student queryById(Integer id) {
// TODO Auto-generated method stub
Student queryById = studentMapper.queryById(id);
return queryById;
} @Override
public List<Student> findAll() {
// TODO Auto-generated method stub
List<Student> findAll = studentMapper.findAll();
return findAll;
} }

控制层:

package com.company.demo.student.web;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController; import com.company.demo.Message.Result;
import com.company.demo.Message.ResultCode;
import com.company.demo.student.model.Student;
import com.company.demo.student.service.StudentService; @Controller
public class StudentController { @Autowired
private StudentService studentService; @ResponseBody
@RequestMapping("/findAll")
public Result findAll(){
Result result = new Result();
List<Student> findAll = studentService.findAll();
if(findAll!=null){
result.setData(findAll);
result.setResultCode(ResultCode.SUCCESS);
return result;
}else{
result.setResultCode(ResultCode.RESULT_IS_NOT);
return result;
}
} @ResponseBody
@RequestMapping("/selectById")
public Result selectById(Integer id){
Result result = new Result();
if(id!=null){
Student queryById = studentService.queryById(id);
if(queryById!=null){
result.setData(queryById);
result.setResultCode(ResultCode.SUCCESS);
return result;
}else{
result.setResultCode(ResultCode.RESULT_IS_NOT);
return result;
}
}else{
result.setResultCode(ResultCode.PARAM_IS_BLANK);
return result;
}
} }

完事了之后,因为是演示我就简单的做一下数据的返回处理 自己写了两个两个类当成数据的返回处理类吧算是:

第一个数据的返回类:

package com.company.demo.Message;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonInclude.Include; @JsonInclude(Include.NON_NULL)
public class Result{ private ResultCode resultCode;
private String message;
private Object data; public ResultCode getResultCode() {
return resultCode;
}
public void setResultCode(ResultCode resultCode) {
this.resultCode = resultCode;
} public Result() {
// TODO Auto-generated constructor stub
} public String getMessage() {
return message;
} public void setMessage(String message) {
this.message = message;
} public Object getData() {
return data;
} public void setData(Object data) {
this.data = data;
} //查询成功返回的东西
public static Result success(Object data){
Result result = new Result();
result.setResultCode(ResultCode.SUCCESS);
result.setData(data);
return result;
} //添加删除修改成功之后调用
public static Result success(){
Result result = new Result();
result.setResultCode(ResultCode.SUCCESS);
return result;
} //添加失败调用
public static Result failure(ResultCode resultCode){
Result result = new Result();
result.setResultCode(resultCode);
return result;
} //其他失败调用的
//查询成功返回的东西
public static Result success(Object data,ResultCode resultCode){
Result result = new Result();
result.setResultCode(resultCode);
result.setData(data);
return result;
} }

第二个:枚举的参数类型类:

package com.company.demo.Message;

public enum ResultCode {

    SUCCESS(1,"成功"),
ERROR(0,"错误"), PARAM_IS_INVALID(1001,"参数无效"),
PARAM_IS_BLANK(1002,"参数为空"),
PARAM_TYPE_BIND_ERROR(1003,"参数类型错误"),
PARAM_NOT_COMPLETE(1004,"参数缺失"), USER_NOT_LOGGED_IN(2001,"用户未登录,访问的路径须验证,请登录"),
USER_LOGIN_ERROR(2002,"账户不存在或密码错误"),
USER_ACCOUNT_FORBIDDEN(2003,"账号已被禁用"),
USER_NOT_EXIST(2004,"用户不存在"),
USER_HAS_EXISTED(2005,"用户已存在"), RESULT_IS_NOT(5000,"没有符合您想要的查询结果"),
RESULT_OTHER_ERROR(9999,"没有进入方法,直接跳转返回"); private Integer code;
private String message; private ResultCode(Integer code, String message) {
this.code = code;
this.message = message;
} public Integer code() {
return this.code;
} public String message() {
return this.message;
} }

接下来这个是重点:那就是springboot 的全局一个简单配置: 我把之前resource 下面的那个application.properties 改成了application.yml格式.(用习惯了)

server:
port: 8085 #端口号
servlet:
context-path: /myspringboot #你自定义的虚拟的项目名 方便实用
spring:
mvc:
view:
suffix: .jsp #因为有的人可能用jsp 所以添加jsp的配置
prefix: /jsp/ #所以就配置一下前后缀 其实正常情况下应该是放到/WEB-INF/下面的。
             #我为了方便演示就放到了可以直接访问的目录下,你可以自由放置
static-path-pattern: /static/** #过滤静态资源
thymeleaf: #springboot支持html文件 使用thymeleaf配置
cache: false
encoding: UTF-8
mode: LEGACYHTML5
prefix: classpath:/templates/
suffix: .html
check-template-location: true
datasource: #数据源配置
url: jdbc:mysql://localhost:3306/teststudent?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver #驱动类 看你的数据库是六以上的吗?版本高的需要使用 这个驱动
mybatis:
mapper-locations: classpath*:xml/*.xml #这个位置是配置 是配置dao层的mapper.xml存放的位置的 其中第一个是你新建的包名是什么就是什么
type-aliases-package: com.ygjy.hospital.model #实体类 别名配置 #配置pagehelper
pagehelper:
helper-dialect: mysql
reasonable: true
support-methods-arguments: true
params: count=countSql

然后如果你是用的是jsp 那么你需要干两件事      第一添加servlet 依赖:

     <!--jsp页面使用jstl标签 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
<!--用于编译jsp -->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>

第二:去那个配置文件里面进行配置:因为我刚才已经进行配置了就是配置jsp的视图解析:所以不用再配置了。

还有因为咱们还打算使用mapper.xml:所以我们需要新建一个文件夹来存放:我们在resource文件夹下新建一个叫xml()的文件:(这个跟上面的application.yml里面的配置相呼应)。然后在 pom.xml文件里面加入:<build></build>标签里面添加:  添加完成了之后你就可以使用mapper.xml文件了:

        <resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>

里面可以写你的mapper.xml例如我写了一个:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.company.demo.student.dao.StudentMapper">
<resultMap id="student" type="com.company.demo.student.model.Student">
<id column="id" jdbcType="INTEGER" property="id" />
<result column="name" jdbcType="VARCHAR" property="name" />
<result column="age" jdbcType="INTEGER" property="age" />
<result column="sex" jdbcType="VARCHAR" property="sex" />
</resultMap> <!-- 搜索全部 -->
<select id="findAll" resultMap="student">
select * from student where 1=1;
</select> </mapper>

到达这里呢!其实你的项目已经算是好了!现在让我们启动一下项目:在这里请大家记住springboot 项目跟大家说过:有一个固定的启动类:现在我们找到那个启动类右击 run as

spring boot app 点击一下那个小树叶就可以了!

你会看到  spring 的字样:

我们先来演示一下使用注解方法的那个  打开你本地的postman 如果没有直接使用浏览器都可以,测一下接口:给他一个默认的参数比如说  我给了一个 5

效果展示:

因为本人的的前台功能比较菜,所以就简单的写一个jsp的吧,目的就是为了两个验证第一 :看看我刚才的配置是否成功了如果springboot项目能兼容jsp就说明配置成功了。

(前台jsp已上传百度云,可自行下载。)

下面直接展示jsp的效果。咱们在webapp下面新建一个jsp包然后 写一个界面 这次咱们验证使用mapper.xml的哪个方法。顺便看看mapper.xml的配置成功没有。

直接看效果:

到这里呢!就算是完成了,其实还有很多东西没有放进去,以后有时间的话会不断晚上的 比如逆向工程 分页 上传 导出什么的,打算写但是今天写到这里有点累了,其实都跟ssm没什么区别,以后有机会不断完善。最后附上源码给大家吧!(虽然自己也是刚入行的菜鸡)不给源码的人一般不是善良的码农。

链接: https://pan.baidu.com/s/1fInJe4AtSXCAlfMcFa5k6Q 提取码: maay

springboot项目的创建和兼容jsp和注解开发,详细有效(注解和配置两种)的更多相关文章

  1. IDEA中SpringBoot项目快速创建单元测试

    如何在IDEA中对于SpringBoot项目快速创建单元测试 创建测试用例 右键需要进行测试的方法,选择GO TO然后选择Test 点击Create New Test 勾选需要创建单元测试的方法 然后 ...

  2. idea:spring initializr无web勾选,maven方式搭建springboot项目。jdk7创建springboot项目的版本不兼容问题。

    一.idea 使用spring initializr不选择web搭建springboot项目 1.file => new => project 2.直接next到finish结束. 3.完 ...

  3. SpringBoot项目的创建流程(初步)

    小伙伴们在学习的过程中大概也发现了这两个框架需要我们手动配置的地方非常多,不过做JavaEE开发的小伙伴们肯定也听说过“约定大于配置”这样一句话,就是说系统,类库,框架应该假定合理的默认值,而非要求提 ...

  4. springboot项目的创建

    创建springboot项目 包名和项目名 选择需要使用的框架,web 然后再点击下一步,完成即可创建springboot项目

  5. 多模块springboot项目启动访问不了jsp页面

    被springboot项目maven打包.启动.访问折腾的头都大了,一步一个坑,在解决了所有的问题之后,那种欣喜若狂的心情只有自己能体会,决定要好好记录一下了,废话不多说了,直接进入正题. 问题和排查 ...

  6. jsp中使用动态数据进行mySQL数据库的两种操作方法

    使用动态数据进行数据库内容的增删改查操作有两种方法: 在此定义数据库连接为conn 假设有表单进行数据输入并提交到处理页面一种是使用预编译格式: 其格式如下: String name = reques ...

  7. idea在springboot项目中没有【新建JSP选项】的解决方法

    https://blog.csdn.net/qq_26525215/article/details/53726690 转载于CSDN

  8. SpringBoot项目刚刚创建就报异常,Failed to configure a DataSource: 'url' attribute is not specified and no embedded 的解决办法

    错误信息: Description: Failed to configure a DataSource: 'url' attribute is not specified and no embedde ...

  9. 【JSP EL】EL表达式获取当前时间(两种方式)

    第一种方式: //先在代码段定义<% long date = new Date().getTime(); request.setAttribute("date", date) ...

  10. java poi操作创建xslx或xsl文件,存本地和进行网络传输两种方式集成

    package com.java.zxf.util; import java.io.IOException; import java.io.OutputStream; import java.net. ...

随机推荐

  1. 从0-1超详细教你实现前端读取excel表格并渲染到界面

    @ 目录 说明 前提 代码仓库 步骤一:准备工作 步骤二:实现导入表格解析 步骤三:实现表格渲染 结语 本文旨在解决无需调用后端接口,实现前端读取表格文件,获取文件内容,渲染到界面的需求 我的其他文章 ...

  2. flutter 2.x运行flutter run 报错Cannot run with sound null safety, because the following dependenciesdon'

    flutter 2.x运行flutter run 报错Cannot run with sound null safety, because the following dependenciesdon' ...

  3. Nodejs后端自动化测试

    偶然看到收藏一下 const puppeteer = require('puppeteer'); const fs = require('fs'); (async () => { const b ...

  4. WPF中使用WebView2控件

    目录 WebView2简介 概述 优势 支持的运行时平台 进程模型 基本使用 安装WebView2运行时 安装WebView2Sdk 打开一个网页 导航事件 打开一个网页的过程 更改url的过程 空u ...

  5. GPS定位解决偏差

    目录 GPS定位解决偏差 开篇 实践 1.解决思路以及步骤 2.实践出真理! 3.上坐标系之间的代码. 希望大家:点赞,留言,关注咯~ 唠家常 今日推荐都在文章中了 GPS定位解决偏差 开篇 大家都知 ...

  6. 《深入理解Java虚拟机》第三章读书笔记(二)——HotSpot垃圾回收算法实现(OopMap,安全点安全区域,卡表,写屏障,三色标记算法)

    系列文章目录和关于我 前面<深入理解Java虚拟机>第三章读书笔记(一)--垃圾回收算法我们学习了垃圾回收算法理论知识,下面我们关注下HotSpot垃圾回收算法的实现,分为以下几部分 对象 ...

  7. 9月22日内容总结——计算机五大组成部分详解、编程语言及发展史、python解释器安装与环境变量设置

    内容总结 目录 内容总结 一.计算机五大组成部分详细介绍 1.控制器 2.运算器 3.存储设备 4.输入设备 5.输出设备 二.计算机三大核心硬件 1. cpu 2.内存 举例:写文档时,突然关机了. ...

  8. DownKyi安装使用教程

    哔哩下载姬 哔哩下载姬是一个简单易用的哔哩哔哩视频下载工具,具有简洁的界面,流畅的操作逻辑. 支持批量下载哔哩哔哩视频 支持批量下载bilibili视频. 哔哩下载姬可以下载几乎所有的B站视频,并输出 ...

  9. 插头dp 模板

    [JLOI2009]神秘的生物 只需要维护连通情况,采用最小表示法,表示此格是否存在,也即插头是否存在 分情况讨论当前格子的轮廓线上方格子和左方格子状态,转移考虑当前格子选不选,决策后状态最后要能合法 ...

  10. LG P4980【模板】Pólya 定理

    \(\text{Solution}\) \[ans = \frac{1}{n}\sum_{i=1}^n n^{(i,n)} = \frac{1}{n}\sum_{d|n}n^d\varphi(\fra ...