JavaEE(一):SpringBoot框架学习之环境搭建、初步前后端交互

SpringBoot 框架学习与应用(一)

1、创建SpringBoot项目

下面打红框的地方是根据你的需要来填写的!

下面需要勾选一些依赖!

填写项目名称,注意根目录,初学Web后台编程需要注意一下!

接下来,一个完整的SpringBoot的项目结构就好了!

2、了解项目结构和相关文件

2.1、了解Maven

通过《File》------《Settings》------《Maven》查看你的Maven路径

如果你没有Maven,请去官网下载并安装,检查是否安装成功的方法是:

当然,同样也可以通过cmd查看Maven的路径

那么,什么是Maven呢?它说白了是一个包管理工具,Java应用程序需要依赖很多jar包来完成编程。这一点和python很像,如果学过python,想必对pip这个命令很熟悉!pip和maven在包管理上有异曲同工之妙。

打开咱们的Maven,可以发现有用的信息其实很少:

(1)、请更换你的软件源

和pip一样,原始的软件源很慢!你需要去换源!建议用阿里源,代码如下:

xml 复制代码
   <mirrors>
	    <mirror>  
        <id>alimaven</id>  
          <name>aliyun maven</name>  
          <url>http://maven.aliyun.com/nexus/content/groups/public/</url>  
          <mirrorOf>central</mirrorOf>          
      </mirror>  
  </mirrors>
(2)、请关注你的jar包下载的位置

2.2、了解程序运行的入口

项目创建好后,你的程序运行入口就是《"项目名称"+Application》,从上面的代码你可以清晰地看到,main函数在这,众所周知,main函数是程序运行的入口!

2.3、了解一个关键文件:pom.xml

你会发现,所有的依赖就尽在其中!但是数据库的配置还不止如此!

3、运行第一个SpringBoot程序

3.1、后台向前端发送一个响应Hello World

java 复制代码
package com.springdemo1.webdemo1.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author jiangzl
 */
@RestController
public class SayHello {
    @RequestMapping("/hello")
    public String sayHello() {
        return "Hello World!";
    }
}

这里的RestController就是控制后台给前端的Respond的!而Mapping就是从根目录开始的相对路径,前端展示如下:

3.2、前端向后端发送信息

首先写一个前端页面(很丑,只做演示):

相关的HTML代码是:

html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>User Infomation</title>
    <style>
        .info {
            margin: 0px auto;
            height: 1000px;
            width: 800px;
        }

        .content {
            border: red solid 2px;
            margin: 0px auto;
        }

        input {
            font-size: 40px;
            font-weight: bold;
            margin: 10px auto;
            width: 80%;
        }

        td {
            font-weight: bolder;
            font-size: 40px;
        }
    </style>
</head>
<body>
<form class="info" method="post" action="/hello">
    <h2>学生信息填写</h2>
    <table class="content">
        <tr>
            <td>学号:</td>
            <td>
                <input type="text" name="userId">
            </td>
        </tr>
        <tr>
            <td>姓名:</td>
            <td>
                <input type="text" name="userName">
            </td>
        </tr>
        <tr>
            <td>密码:</td>
            <td>
                <input type="password" name="userPassword">
            </td>
        </tr>
        <tr>
            <td>年龄:</td>
            <td>
                <input type="text" name="userAge">
            </td>
        </tr>
        <tr>
            <td colspan="2">
                <input type="submit" value="提交信息" style="width: 100%">
            </td>
        </tr>
    </table>
</form>

</body>
</html>

提交后,看看后台是否能够接受并处理数据:

后端处理的代码:

java 复制代码
package com.springdemo1.webdemo1.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletRequest;

/**
 * @author jiangzl
 */
@RestController
public class SayHello {
    @RequestMapping("/hello")
    @ResponseBody
    public String sayHello(HttpServletRequest request) {
        String userName = request.getParameter("userName");
        return "Hello World! " + userName;
    }
}

4、数据库及MyBatis的配置

先引用一张图来描述SpringBoot的项目结构及各个包、文件的作用:

这里引用的是:

https://zhuanlan.zhihu.com/p/143798465

4.1、配置阿里巴巴的Druid数据库连接池

xml 复制代码
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.1.17</version>
</dependency>

如果失效了,就去看:

https://github.com/alibaba/druid/tree/master/druid-spring-boot-starter

去找最新的版本,替代version标签的值即可!

4.2、更改项目配置

yaml 复制代码
# 端口的配置
server.port=8080
# 数据库访问配置
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#将webdemo1改成自己的数据库的名称
spring.datasource.url=jdbc:mysql://localhost:3306/webdemo1?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
spring.datasource.username=root
spring.datasource.password=jzl123456

mybatis.mapper-locations=classpath:mybatis/*.xml

4.3、以User表格为例,写Mapper.xml

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">
<!-- namespace:改mapper.xml映射文件的唯一标识并且必须和数据处理层的接口的路径相同-->
<mapper namespace="com.cody.sbootmybatis.sbootmybatis.mapper.UserMapper">
    <!--   必须添加property属性 ,区别于是否加主键-->
    <resultMap id="User" type="User">
        <id column="userid" property="userid" javaType="String" ></id>
        <result column="username" property="username" javaType="String" ></result>
        <result column="age" property="age" javaType="int" ></result>
        <result column="password" property="password" javaType="String" ></result>
    </resultMap>
    <!--id的值必须和数据处理层的接口名一致-->
    <!--此处的User-->
    <select id="queryAllUser" resultType="User">
        select * from  user
    </select>
    <select id="queryUserById"   parameterType="String" resultMap="User" resultType="User">
        select * from  user
        <trim suffixOverrides="and"  prefixOverrides="and">
            <where>
                <if test="userid!=null">
                    and userid = #{userid}
                </if>
            </where>
        </trim>
    </select>
    <select id="queryUserByName" resultType="User" parameterType="String" resultMap="User">
        select * from  user
        <trim suffixOverrides="and"  prefixOverrides="and">
            <where>
                <if test="username!=null">
                    and username = #{username}
                </if>
            </where>
        </trim>
    </select>
    <update id="UpdUser" parameterType="User">
    </update>
    <delete id="DelUser"></delete>
    <insert id="AddUser" parameterType="User" >
        insert into  User value (${userid},#{username},${age},#{password})
    </insert>
</mapper>

理解为什么要写一个Mapper.xml???

因为MyBatis是一个半自动的ORM模型(Object-Related-Mapping),于是你需要以配置XML文件的方式,告诉它关于你的表的信息!要知道,一个表就对应着一个对象,这个对象的属性和操作(增删改查)是需要你限定的!

于是,在我们上面的mapper.xml文件里就有了数据库表的内容和操作信息。

5、结束

本次内容只写到SpringBoot的项目配置、阿里巴巴Druid数据库连接池的配置、MyBatis与Mapper、Model的关系!

以及最简单的,后端向前端通信、前端向后端请求等内容。下一次有时间了我再以《学生登陆注册管理网站》项目作为着力点,深化SpringBoot的应用架构、数据模型、后台程序设计思想等内容。