从零开始搭建springboot项目骨架–新手小白
工具:Idea
文件结构
接下来大概解释一下这些文件,下面列的为主要文件,其他的都是一些自动生成文件,不用管
- src
- main
- java(主要写java后端代码)
- resources(主要是一些前端静态资源)
- pom.xml
pom.xml作用:(系统配置文件,包括项目的一些信息以及项目依赖,需要什么依赖在里面添加idea会自动导入)
后端结构 1. entity层 实体层:也被称为model层。封装一个个的实体对象。如用户、商品等。 实体类中封装类的属性以及属性的构造方法(getter和setter等)
2.dao层: 持久层:也叫mapper层,和数据库底层进行交互。 简单来说,就是访问数据库,向数据库发送sql语句,完成数据的增删改查。 3.service层:(调用dao层) 业务逻辑层:进行业务逻辑应用处理。 先写接口,再写实现类。 4.controller层:(调用service层) 控制层:控制业务逻辑和流程。 前端 可直接找静态资源,放到java目录下,标记目录为源根。
1.新建一个springboot项目
a.选择合适的java版本,这里选的是java1.8
b.填写信息 group:组名(一般填个人或公司名) Aritifact:坐标(也就是项目位置)
c.选择项目依赖 这里我们勾选上springboot工具,以及spring web工具 (少了什么依赖不要紧,后面可以添加) d.修改项目名称,完成 创建好的项目就是这个样子的
2.配置相关依赖和编写运行方法类
(1)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 https://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.6.7</version>
<relativePath/>
</parent>
<groupId>com.shida.cn</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.26</version>
</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>
<optional>true</optional>
<scope>true</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
因为我们使用的静态资源是jsp类型,加上jsp依赖就可以解析了 要在浏览器中运行,必须加上tomacat和热部署支持 使用的是mybatis框架,加上mybatis依赖
(2)在resource里面建立一个配置文件 (3)编写运行方法类 调用SpringbootApplication的run方法
package com.shida.cn.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class DemoApplication1 {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
编写完后,自动配置好了环境
3.编写entity层(用户实体类)
定义用户的所有私有属性,对所有属性生成getter和setter方法。
package com.shida.cn.demo.entity;
public class User {
private int userid;
private String username;
private String password;
private String email;
public int getUserid() {
return userid;
}
public void setUserid(int userid) {
this.userid = userid;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
@Override
public String toString() {
return "User{" +
"userid=" + userid +
", username='" + username + '\'' +
", password='" + password + '\'' +
", email='" + email + '\'' +
'}';
}
}
4.编写Dao层(必须注入Mapper)
才能用数据库语句
package com.shida.cn.demo.dao;
import com.shida.cn.demo.entity.User;
import org.apache.ibatis.annotations.*;
import org.springframework.stereotype.Component;
import java.util.List;
@Component("userMapper")
@Mapper
public interface UserDao {
@Insert("insert into user(username,password,email) values(#{username},#{password},#{email}) ")
int addUser(User user);
@Delete("delete from user where userId=#{userId}")
int deleteById(int userId);
@Update("update user set password=#{password} where username=#{username}")
int update(User user);
@Select("select * from user")
List<User> findAll();
@Select("select * from user where username=#{username}")
User findByName(String username);
}
5.编写Service层(必须注入Service)
Service层的结构:分为接口和Impl实现类
UserService:接口用来定义业务,相当于下发一个指令
package com.shida.cn.demo.service;
import com.shida.cn.demo.entity.User;
import java.util.List;
public interface UserService {
void addUser(User user);
void deleteById(User user);
void update(User user);
User findUser(String username);
List<User> findAll();
}
Impl:用来编写实现接口的方法 UserServiceImpl 注入Service,需要使用Autowired自动注入Dao层
package com.shida.cn.demo.service.Impl;
import com.shida.cn.demo.dao.UserDao;
import com.shida.cn.demo.entity.User;
import com.shida.cn.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserServiceImpl implements UserService {
@Autowired
UserDao userDao;
@Override
public void addUser(User user) {
userDao.addUser(user);
}
@Override
public void deleteById(User user) {
userDao.deleteById(user.getUserid());
}
@Override
public void update(User user) {
userDao.update(user);
}
@Override
public User findUser(String username) {
User user = userDao.findByName(username);
return user;
}
@Override
public List<User> findAll() {
return userDao.findAll();
}
}
6.编写controller层(必须注入Controller)
还需要自动注入service层,控制业务
package com.shida.cn.demo.controller;
import com.shida.cn.demo.entity.User;
import com.shida.cn.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class indexController {
@Autowired
UserService userService;
@RequestMapping("/userRegister")
public String getIndex(User user){
userService.addUser(user);
return "login.jsp";
}
}
前端 前端页面直接拿过来用,注册页面长这样观察register.jsp,发现点击注册页面表单内容提交到userRegister 因此Controller层使用@RequestMapping请求userRegister,当点击注册按钮,我们获取userRegister的内容(用户名字。密码,邮箱),调用Service层的addUser方法把数据写入数据库。
接下来配置数据库,这里我使用的是mysql数据库
mysql的下载安装步骤可以参考这篇文章: http://t.csdn.cn/OA8Uq
这里我使用Navicat工具来管理mysql数据库: Navicat的安装与破解
1.确定mysql的版本,加上数据库配置 如,我的版本是8.0.26,则在pom.xml文件里加上mysql依赖
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.26</version>
</dependency>
加上数据库的配置
server.port=8080 spring.datasource.url=jdbc:mysql://localhost:3306/shida?serverTimezone=UTC&useSSL=false&characterEncoding=utf-8 spring.datasource.username=root spring.datasource.password=123456 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
server.port是指定端口号 url里面改成自己的数据库名字 username改成自己的mysql用户名 password同理 注意: mysql8使用
com.mysql.cj.jdbc.Drive
mysql5使用
com.mysql.jdbc.Drive
2.建立一个user的空表
接下来点击运行,运行成功就是这样的 进入注册页面,输入相关信息,点击注册 接下来神奇的事情发生了! 我们刷新一下数据库 这就意味着controller层的点击注册添加用户到数据库成功了。 其他的操作也都类似。 之后就可以自己造数据啦。
|