文章目录
准备工作
IDE:Intellij Idea 2018.03版本
数据库:MySQL
其实可以去Spring官网下载SpringBoot搭建好的工程,网址是:
(https://start.spring.io/)
我在这里使用了IDEA提供的Spring框架搭建的。
创建项目
图1
- 打开IDEA,左上角File–>new–>project进入图片界面
- 左侧选择Spring Initializr
- 右侧如果提示没有JDK的话,点 New 把自己的JDK找到就可以了
- 都选好后点 Next
图2
- Group:是包名,我的就是默认的。
- Artifact:是项目名,我的改为了ssmspringboot。
- Type:我们选默认的Maven Project就好。
- Java Version:选自己的JDK版本。
- 选好后就点 Next 下一步。
图3
- 在这里我们要勾选我们项目的依赖,会帮我们自动添加到
pom.xml
中。 - 左侧Core下,选DevTools 和 Lombok(可选可不选)。其中Lombok 插件可以让我们写代码更快更爽,谁用谁知道,2333。至于安装插件去网上搜吧。
- Web下,选Web,必须选,否则这还能是web工程吗。。
- SQL下,选MySQL,JDBC,MyBatis,我们需要用到的与数据库进行交互的工具。
- 选好后 Next下一步。
图4
- 同上项目名称为ssmspringboot。
- 保存路径自己选就行。
- 下方更多设置,没意外默认就行。
- 弄好后点 Finish 。
到了这里,我们就可以说项目已经搭建起来了!!!!!!!
工程目录
他是长这个样子的
代码编写
目的:我们要实现数据库交互完成登陆页面的操作。
工程刚刚建好后,右下角会出现一个弹窗。点 Enable Auto-Import 即可,让IDEA帮我们自动导包。
数据库
1.建表
#为了方便主键id也没弄,就用户名和密码
CREATE TABLE `user` (
`username` varchar(255) COLLATE utf8_bin NOT NULL COMMENT '用户名',
`password` varchar(255) COLLATE utf8_bin NOT NULL COMMENT '密码'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
2.添加信息
#就插入一条数据
INSERT INTO `user` VALUES('xiaofang','1234')
pom文件修改
<?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>
<!--你的项目概述-->
<groupId>com.example</groupId>
<artifactId>ssmspringboot</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>ssmspringboot</name>
<description></description>
<!--SpringBoot启动需要的父依赖,好多pom的依赖帮我们配好了,可以ctrl点开看-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.5.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<!--依赖注入-->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<!--默认生成的代码包括下面这行,我们必须删掉
具体原因在application.properties编写中-->
<!--<scope>runtime</scope>-->
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--页面跳转依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
完整项目目录
如下图所示:
User类(创建一个来接收查询出来数据的对象)
代码如下:
package com.example.ssmspringboot.domain;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
/*
由于Lombok插件的原因只需要
@Data:生成所有,getter() setter() toString()等等方法
@Setter :生成setter()方法
@Getter:生成getter()方法
*/
@Data
public class User {
@Setter @Getter
private String username;
@Setter @Getter
private String password;
}
UserMapper接口
代码如下:
package com.example.ssmspringboot.dao;
import com.example.ssmspringboot.domain.User;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
@Mapper //声明是一个Mapper,与springbootApplication中的@MapperScan二选一写上即可
@Repository
public interface UserMapper {
User findByUsername(String username);
}
UserMapper.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.example.ssmspringboot.dao.UserMapper" >
<!--由于application.properties配置文件中,声明了实体类在哪个包下
所以直接写User就行。
如果不声明:必须写全 com.example.ssmspringboot.domain.User
-->
<select id="findByUsername" resultType="User">
SELECT * FROM user WHERE username = #{username}
</select>
</mapper>
Service层
1.UserService接口:
package com.example.ssmspringboot.service;
import com.example.ssmspringboot.domain.User;
public interface UserService {
User getUser(String username);
}
2.UserServiceImpl.class:
package com.example.ssmspringboot.service.impl;
import com.example.ssmspringboot.dao.UserMapper;
import com.example.ssmspringboot.domain.User;
import com.example.ssmspringboot.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class UserServiceImpl implements UserService {
//依赖注入
@Autowired
UserMapper userMapper;
@Override
public User getUser(String username) {
return userMapper.findByUsername(username);
}
}
UserController
代码如下:
package com.example.ssmspringboot.controller;
import com.example.ssmspringboot.domain.User;
import com.example.ssmspringboot.service.UserService;
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.RequestMethod;
@Controller //声明这是Controller层
public class UserController {
//依赖注入
@Autowired
UserService userService;
@RequestMapping(value="/login",method = RequestMethod.POST)
public String login(User user) {
//调用dao层
System.out.println("前端"+user);
User u = userService.getUser(user.getUsername());
System.out.println("数据库"+u);
if (u.getPassword().equals(user.getPassword())){
return "success";
}
return "failed";
}
}
SsmspringbootApplication类
代码如下:
package com.example.ssmspringboot;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.transaction.annotation.EnableTransactionManagement;
@SpringBootApplication //声明这是SpringBoot启动类
@EnableTransactionManagement //开启事务管理
public class SsmspringbootApplication {
public static void main(String[] args) {
SpringApplication.run(SsmspringbootApplication.class, args);
}
}
application.properties配置文件
#数据库指向,school是我的数据库名,改成自己的
spring.datasource.url=jdbc:mysql://localhost:3306/school?useUnicode=true&characterEncoding=UTF-8
#数据库用户名
spring.datasource.username=root
#数据库密码
spring.datasource.password=admin
#出现mysql jdbc标红报错问题------>去pom.xml中删除mysql-connector-java下面的runtime那一行
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.jpa.database = mysql
#Mybatis扫描
mybatis.mapper-locations=classpath*:mapper/*.xml
#起别名。可省略写mybatis的xml中的resultType的全路径
mybatis.type-aliases-package=com.example.ssmspringboot.domain
前端页面
1.index.html页面
由于SpringBoot的特性,没有之前的WEB-INF文件夹了,所以 static 文件夹下的index页面,只要访问localhost:8080
就能访问到主页,不再需要项目名了。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>首页</title>
</head>
<body>
<h1 align="center">请登录</h1>
<form action="/login" method="post">
<table align="center" width="80%" border="1">
<tr>
<td width="40%">USERNAME:</td>
<td><input type="text" name="username"></td>
</tr>
<tr>
<td width="40%">PASSWORD:</td>
<td><input type="password" name="password"></td>
</tr>
<tr>
<td colspan="2" align="center">
<input type="submit" value="LOGIN">
</td>
</tr>
</table>
</form>
</body>
</html>
2.success.html页面
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>成功了</title>
</head>
<body>
<h1>恭喜你,登陆成功!</h1>
</body>
</html>
3.failed.html页面
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>出错了</title>
</head>
<body>
<h1>你出错了,你知道吗?</h1>
</body>
</html>
测试
到此为止,我们的项目已经彻底的搭建好了,接下去就是测试了,见证奇迹吧~
1.运行SsmspringbootApplication类的 main 方法
2.浏览器输入 localhost:8080
恭喜你,成功了~~~~~~~~~~~~~