搭建教程参考:www.jianshu.com/p/d6b7a2806…javascript
IDE推荐:Intellij IDEA
php
HelloController
控制类,主要用于处理发送的一系列请求import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.RequestMapping;
复制代码
//@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";
}
}
复制代码
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/
复制代码
HelloController
当中修改头RestController
为Controller
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
经过设置@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请求实现成功!
举个例子而言,若是用户但愿,地址栏输入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;
}
复制代码
传参后端:
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为后端传递的参数
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-->
复制代码
做用是添加数据库依赖
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为本身的数据库名便可。
//数据库相关包
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数据则说明搭建成功。
功能实现参考过该文章https://zhuanlan.zhihu.com/p/55796334
经过实例学习Spring Boot 登陆、注册功能,既能够学习如何使用数据库,并且对post请求,能够有必定的用法了解。
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
添加MySQL
、thymeleaf
、JPA
配置信息
# 设置寻找目录
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);
}
复制代码