Java Spring Boot 框架学习笔记 (未完待续)

Java Spring Boot 框架学习笔记

项目搭建

搭建教程参考:www.jianshu.com/p/d6b7a2806…javascript

IDE推荐:Intellij IDEAphp

项目使用

1、新建HelloController控制类,主要用于处理发送的一系列请求

2、导入Http相关类,用于处理前端发送的请求

import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.RequestMapping;
复制代码

3、控制类的实现:

//@RestController为@ResponseBody和@Controller的结合
@RestController
public class HelloController {
    //value为url后缀 method为http请求方法,默认为get
    @RequestMapping(value="/hello",method = RequestMethod.GET)
    public String hello() {
        return  "Hello,World!" ;
    }

    @RequestMapping("goodbye")
    public String goodbye(){
        return "Say goodbye";
    }
}

复制代码

4、实现访问静态Html页面

  • 1.在pom.xml中添加thymeleaf模板引擎字段css

    <!-- 添加thymeleaf 模板引擎 -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-thymeleaf</artifactId>
            </dependency>
    复制代码
  • 2.在application.properties中设置寻找目录html

    spring.thymeleaf.prefix=classpath:/templates/
    复制代码
    1. HelloController当中修改头RestControllerController
    package com.mainpackage.webchat;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    import org.springframework.web.bind.annotation.RestController;
    import org.springframework.web.bind.annotation.RequestMapping;
    
    // 项目搭建参考:https://www.jianshu.com/p/d6b7a2806655
    
    //@RestController为@ResponseBody和@Controller的结合
    //@Controller 实现静态页面访问
    @Controller
    public class HelloController {
        //value为url后缀 method为http请求方法,默认为get
        @RequestMapping(value="/hello",method = RequestMethod.GET)
        public String hello() {
            return  "indexs" ;
        }
    }
    复制代码
  • 前端加载 css文件方法前端

    在对应的html文件中加入如下内容便可:java

    <html lang="zh-CN" xmlns:th="http://www.thymeleaf.org">
    复制代码

    做用是引入thymeleaf框架mysql

    <link rel="stylesheet" type="text/css" media="all" th:href="@{/base.css}" />
    复制代码

    其中base.css是相对于static而言web

5、实现get请求

1.实现返回参数给前端

经过设置@RequestParam 参数 来实现get请求,其中一个注意点是参数名要和请求名是一致的。spring

示例代码:sql

package com.mainpackage.webchat;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.RequestMapping;
import java.net.http.HttpRequest;
import org.springframework.web.bind.annotation.RequestParam;

// 项目搭建参考:https://www.jianshu.com/p/d6b7a2806655

//@RestController为@ResponseBody和@Controller的结合
@RestController
public class HelloController {
    //value为url后缀 method为http请求方法,默认为get
    @RequestMapping(value="/login",method = RequestMethod.GET)
    //name 为get请求的请求名,须要与参数名相一致。
    public String login(@RequestParam String name) {
        return  name;
    }
}

复制代码

在本地运行:只须要在地址栏输入http://localhost:8080/login?name=smm 其中smm为自定义参数,能够随便输入字符串,浏览器将会在界面上只显示该字符,说明简单的get请求实现成功!

2.绑定Url返回参数到前端

举个例子而言,若是用户但愿,地址栏输入http://localhost:8080/ddd,前端页面结果会带有ddd,这种需求要实现。

这种是最简单的url绑定,参考代码以下:

//使用这种能够直接避免参数不一样
    //其中value的account参数要与底下的PathVariable相同,实现url绑定的一种方式。
    @RequestMapping(value = "/{account}",method = RequestMethod.GET)
    public String account(@PathVariable("account") String accountInfo ) {
        return accountInfo;
    }
复制代码
3.实现返回参数到前端html显示

传参后端:

package com.mainpackage.webchat;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import java.util.Map;

import java.net.http.HttpRequest;

//用户类
@Controller
public class UserController {

    //登陆模块测试
    @RequestMapping(value="/userlogin",method = RequestMethod.GET)
    //map 能够被传到前端去
    public String login(Map <String, Object> map) {
        map.put("message2","mm");
        //name = "测试";
        return  "passparam";
    }
}
复制代码

tip: Map<String,Object>有点相似于Json格式传到前端中,前端只要经过[[${param}]]获取便可

前端代码:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <title>传递参数实例</title>
    <script type="javascript"> </script>
</head>
<body>
<!--使用先后不分离技术传参测试-->
<h1>测试参数</h1>
<p id="message2"> 传参:[[${message2}]] </p>
</body>
</html>
复制代码

前端获取[[${message2}]]:前端message2为后端传递的参数

6、实现post请求

7、后台搭建MySQL数据库

1.在pom.xml文件中添加以下文件:
<!--添加mysql数据库依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-freemarker</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <!--end-->
复制代码

做用是添加数据库依赖

2.在application.properties当中添加数据库配置
#数据库配置
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#数据库链接
spring.datasource.url = jdbc:mysql://localhost:3306/login_db?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
#用户名
spring.datasource.username=root
#密码
spring.datasource.password=123456  #此处为mysql数据库的密码
复制代码

须要注意的一点是spring.datasource.url当中,须要login_db为数据库名,你们后面改的话只有改login_db为本身的数据库名便可。

3.在Controller当中添加测试代码,测试是否链接成功。
//数据库相关包
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.sql.DataSource;
import org.springframework.beans.factory.annotation.Autowired;


 //测试mysql数据库链接状况 参考教程:https://www.jianshu.com/p/c440b57f4531
    @Autowired
    DataSource dataSource;

    @RequestMapping("/mysqltest")
    public Object mysqltest() throws Exception {
        Connection connect = dataSource.getConnection();
        PreparedStatement pre = connect.prepareStatement("select * from login_tb");
        ResultSet result = pre.executeQuery();
        List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
        while (result.next()) {
            Map<String,Object> map = new HashMap<String, Object>();
            map.put("id", result.getObject("id"));
            map.put("name", result.getObject("name"));
            list.add(map);
        }
        if(result!= null ) result.close();
        if(pre!= null ) pre.close();
        if(connect!= null ) connect.close();
        return list;
    }
复制代码

其中注意的一点是login_tb指的是表,这个是本身提早建的表。

而后启动项目,在地址栏输入http://localhost:8080/mysqltest 有返回值Json数据则说明搭建成功。

8、实例1:Spring Boot 实现用户登陆、注册请求功能

功能实现参考过该文章https://zhuanlan.zhihu.com/p/55796334

1.目的:

经过实例学习Spring Boot 登陆、注册功能,既能够学习如何使用数据库,并且对post请求,能够有必定的用法了解。

2.实战准备:
  • MySQL数据库配置完成,配置教程参照七;

  • 配置依赖,主要就是四个依赖,Thymeleaf,JPA,MySQL,Web

    实现:

    pom.xml文件中,添加下列依赖:

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.2.0.M5</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
        <groupId>com.mainpackage</groupId>
        <artifactId>webchat</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <name>webchat</name>
        <description>build a site for online webchat</description>
    
        <properties>
            <java.version>12</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>
    
            <!--添加mysql数据库依赖-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-freemarker</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-jdbc</artifactId>
            </dependency>
    
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
            </dependency>
            <!--end-->
    
            <!--添加JPA依赖-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-jpa</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
                <exclusions>
                    <exclusion>
                        <groupId>org.junit.vintage</groupId>
                        <artifactId>junit-vintage-engine</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>junit</groupId>
                        <artifactId>junit</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
    
    
    
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    
        <repositories>
            <repository>
                <id>spring-milestones</id>
                <name>Spring Milestones</name>
                <url>https://repo.spring.io/milestone</url>
            </repository>
        </repositories>
        <pluginRepositories>
            <pluginRepository>
                <id>spring-milestones</id>
                <name>Spring Milestones</name>
                <url>https://repo.spring.io/milestone</url>
            </pluginRepository>
        </pluginRepositories>
    
    </project>
    
    复制代码
  • application.properties添加MySQLthymeleafJPA配置信息

    # 设置寻找目录
    spring.thymeleaf.prefix=classpath:/templates/
    
    #MySQL数据库配置
    spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
    #数据库链接
    spring.datasource.url = jdbc:mysql://localhost:3306/login_db?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
    #用户名
    spring.datasource.username=root
    #密码
    spring.datasource.password=445578963dhf
    
    #jpa选择模式:create表示开发模式,每次启动都会建立新的表格
    #none表示结束模式
    spring.jpa.hibernate.dll-auto = none
    复制代码
  • 建立实体User类

    做用:就是映射到数据库,有点相似于Django框架中的Model的做用,讲道理,Spring Boot框架相较于Django框架,至关不智能。

    实现:

    package com.mainpackage.webchat.model;
    
    //做用:建立用户类,包括了用户名,密码等等信息
    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.GenerationType;
    import javax.persistence.Id;
    
    @Entity
    public class User {
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        private Integer id;
        private String name;
        private String email;
        private String password;
    
        //重写toString方法
        @Override
        public String toString() {
            return "{" +
                    " id='" + getId() + "'" +
                    ", name='" + getName() + "'" +
                    ", email='" + getEmail() + "'" +
                    ", password='" + getPassword() + "'" +
                    "}";
        }
    
        public String getPassword() {
            return this.password;
        }
    
        public void setPassword(String password) {
            this.password = password;
        }
    
        public Integer getId() {
            return this.id;
        }
    
        public void setId(Integer id) {
            this.id = id;
        }
    
        public String getName() {
            return this.name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getEmail() {
            return this.email;
        }
    
        public void setEmail(String email) {
            this.email = email;
        }
    }
    
    复制代码
  • 实现增删改查的接口:

    建立UserRepository.java文件,继承于CrudRepository方法,实现接口

    package com.mainpackage.webchat.model;
    
    import java.util.List;
    
    import org.springframework.data.repository.CrudRepository;
    
    //接口 提供外部调用,方法自动生成
    public interface UserRepository extends CrudRepository<User,Integer> {
        List<User> findByEmail(String email);
        void deleteByEmail(String email);
    }
    
    复制代码
相关文章
相关标签/搜索