sts上发布一个简单springboot项目

目录

前言

一、创建一个springboot项目?

二、三层架构在项目中的使用逻辑

1.数据访问层

2.业务逻辑层

 3.表现层

总结


前言

用于记录一个简单springboot项目在Spring Tool Suite4如何发布,以及应用于web端的简单的springboot项目应该包含怎样的内容,它的逻辑又是怎么样的?(自用/小白)

需求假定为:从后端获取数据到前端(增删改查)


一、创建一个springboot项目?

 创建流程:File>>New>>Spring Starter Project

以需求为从后端获取数据到前端为例(增删改查)

点击Spring Starter Project后跳转如下页面

创建项目的具体配置为:

 本页面用于配置路径、项目名、版本等基础信息,无特殊需求可以直接next,进入到如下页面。

 在左下方的选项中选择Web下拉栏,选择Spring Web选项选择Finish。

.

二、三层架构在项目中的使用逻辑

数据访问层:通过Dao层获取到数据库中的目标数据,并提供方法供Service层调用。

业务逻辑层:通过Service层获取Dao层数据,并提供方法供Controller调用。

表现层:Controller与前端页面共同构成表现层。其中:

                Controller:获取Service层提供的数据,并将数据从后端传给前端。

                前端页面:获取Controller传来的数据,并加以前端设计最终展现。

1.数据访问层

假定数据库中所需数据为:

 其中数据库为:myemployees

所需数据为员工表中的数据。

在项目中创建实体类包(entity)并创建员工类(Employees)用来接收数据库中的数据

代码如下(示例):

package com.example.demo.entity;

import java.util.Date;

import org.springframework.format.annotation.DateTimeFormat;

public class Employees {
    private int employee_id;
    private String first_name;
    private String last_name;
    private String email;
    private String phone_number;
    private String job_id;
    private double salary;
    private double commission_pct;
    private int manager_id;
    private int department_id;
    @DateTimeFormat(pattern="yyyy-MM-dd")
    private Date hiredate;
    public int getEmployee_id() {
        return employee_id;
    }
    public void setEmployee_id(int employee_id) {
        this.employee_id = employee_id;
    }
    public String getFirst_name() {
        return first_name;
    }
    public void setFirst_name(String first_name) {
        this.first_name = first_name;
    }
    public String getLast_name() {
        return last_name;
    }
    public void setLast_name(String last_name) {
        this.last_name = last_name;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    public String getPhone_number() {
        return phone_number;
    }
    public void setPhone_number(String phone_number) {
        this.phone_number = phone_number;
    }
    public String getJob_id() {
        return job_id;
    }
    public void setJob_id(String job_id) {
        this.job_id = job_id;
    }
    public double getSalary() {
        return salary;
    }
    public void setSalary(double salary) {
        this.salary = salary;
    }
    public double getCommission_pct() {
        return commission_pct;
    }
    public void setCommission_pct(double commission_pct) {
        this.commission_pct = commission_pct;
    }
    public int getManager_id() {
        return manager_id;
    }
    public void setManager_id(int manager_id) {
        this.manager_id = manager_id;
    }
    public int getDepartment_id() {
        return department_id;
    }
    public void setDepartment_id(int department_id) {
        this.department_id = department_id;
    }
    public Date getHiredate() {
        return hiredate;
    }
    public void setHiredate(Date hiredate) {
        this.hiredate = hiredate;
    }
    @Override
    public String toString() {
        return "Employees [employee_id=" + employee_id + ", first_name=" + first_name + ", email=" + email
                + ", phone_number=" + phone_number + ", salary=" + salary + ", manager_id=" + manager_id
                + ", department_id=" + department_id + ", hiredate=" + hiredate + "]";
    }
    
    
}创建接口EmpDao,用于获取到数据库的数据。
声明抽象方法供Service调用。并添加相关依赖注解。
package com.example.demo.dao;

import java.util.List;

import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;

import com.example.demo.entity.Employees;

@Mapper
@Repository
public interface EmpDao {
    public List<Employees> getEmp();

}由于接口不允许实例化,无法获取/传递具体属性与方法,所以添加@Repository注解。其作用是在内存中开辟空间,等效的实例化接口。并用@Mapper连接Dao与Mybatis进行接口具体功能的编写。
由于@Mapper是外部依赖,所以通过在pom.xml中<dependencies>标签中添加:
		<dependency>
		    <groupId>org.mybatis.spring.boot</groupId>
		    <artifactId>mybatis-spring-boot-starter</artifactId>
		    <version>2.2.0</version>
		</dependency>
进行到这步,完成了mybatis在springboot框架中的注入。
在资源文件夹下创建mappers文件夹并创建EmpDao.xml用于编写sql语句。如图:

 由于接下来要写sql语句,所以需要在pom.xml的<dependencies>中添加相关依赖的注入。

		<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
		<dependency>
		    <groupId>mysql</groupId>
		    <artifactId>mysql-connector-java</artifactId>
		    <version>8.0.28</version>
		</dependency>

并在application.properties中对于数据库进行连接与设置。

#spring的mysql和mybatis相关
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.url=jdbc:mysql://localhost:3306/myemployees?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#下两行代码分别对应资源文件夹下创建的可被识别的文件夹名称,以及项目包命名
mybatis.mapper-locations:classpath:/mappers/*.xml
mybatis.type-aliases-package:com.example.demo.*

#静态资源路径
#拦截路径
interceptor.is.url=/**@
#放行路径
interceptor.no.url=/css/*.css@/css/lib/*.css@/js/**/*.js@/js/*.js@/other/**/*.*@/user/login/**

EmpDao.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链接EmpDao.xml与EmpDao.java  其中com.example.demo.dao.EmpDao是EmpDao接口的地址名 -->       
        <mapper namespace="com.example.demo.dao.EmpDao">
        	<!-- 声明使用查找语句  其对应方法为getEmp   返回类型以Employees的格式一条一条的返回  com.example.demo.entity.Employees就是Employees的地址名 -->
        	<select id="getEmp" resultType="com.example.demo.entity.Employees">
        	SELECT * FROM `employees`
        	</select>      	
        	<insert id="addEmp" parameterType="com.example.demo.entity.Employees">
        		INSERT INTO `employees`(`first_name`,`email`,`phone_number`,`salary`,`commission_pct`,`manager_id`,`department_id`,`hiredate`)
				VALUES(#{first_name},#{email},#{phone_number},#{salary},#{commission_pct},#{manager_id},#{department_id},#{hiredate})
        	</insert>
        	
        	<select id="getEmpUpdate" resultType="com.example.demo.entity.Employees" parameterType="com.example.demo.entity.Employees">
        	SELECT *
	FROM `employees`
	WHERE `employee_id`=#{id}
        	</select>
        </mapper>

在配置自己的数据库时务必修改用户名、密码、与数据库名称为自己的想要的。

截止目前为止,Dao层数据与方法均已编译完成。进入Service层进行编译。

2.业务逻辑层

创建service包,并创建EmpService类进行Service层编写。

EmpService代码如下:

package com.example.demo.service;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.example.demo.dao.EmpDao;
import com.example.demo.entity.Employees;
//在类上添加该注解以声明将进行Service编写,并使用框架中一些集成方法
@Service
public class EmpService {
    
//    声明了Dao层对象并通过Autowired注解从内存中寻找同类型的对象并赋值。
    @Autowired
    private EmpDao empdao;

    public EmpDao getEmpdao() {
        return empdao;
    }

    public void setEmpdao(EmpDao empdao) {
        this.empdao = empdao;
    }
//    提供方法给Controller调用    
    public List<Employees> getEmpSer(){
        return empdao.getEmp();
    }
}总结:Service层获取了Dao层传来的数据并编写了方法供Controller调用

 3.表现层

表现层包括Controller与前端页面。

先进行Controller的编写

创建controller包并创建EmpController类:

Controller中代码及相关解释如下:

package com.example.demo.controller;

import java.io.IOException;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import com.example.demo.entity.Employees;
import com.example.demo.service.EmpService;
//添加注解用以使用Controller内置集成方法
@Controller
public class EmpController {
//	声明Service层对象,并通过@Autowired从内存中找到同类型对象予以赋值。
	@Autowired
	private EmpService empser;

	public EmpService getEmpser() {
		return empser;
	}

	public void setEmpser(EmpService empser) {
		this.empser = empser;
	}
//	声明网址并连接
	@GetMapping("/tomain")
//	Model为Java内置类,作用在这里是将后端数据送到前端供前端使用。
	public String toSearch(Model model) {
//运用了Model的内置方法addAttribute,作用是将 empser.getEmpSer() 传到前端 并通过"emplist"这个名字在前端进行识别。
		model.addAttribute("emplist", empser.getEmpSer());
//		设定对应网址返回到哪一个html页面
		return "main";
	}
}

Controller获取了Service传来的数据并编写了方法连接前端(供前端使用数据等)。

配置前端页面:

首先Springboot的前端语言为thymeleaf,需要在pom.xml的<dependencies>中注入依赖:

		<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-thymeleaf -->
		<dependency>
		    <groupId>org.springframework.boot</groupId>
		    <artifactId>spring-boot-starter-thymeleaf</artifactId>
		    <version>2.7.0</version>
		</dependency>

 并在application.properties中添加相关配置:

server.port=8885

#thymeleaf模板配置
spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.suffix=.html
spring.thymeleaf.mode=HTML5
spring.thymeleaf.encoding=UTF-8
spring.thymeleaf.cache=false

其中server.port=8885作用是设置端口号。 

配置结束,现在开始编写前端页面:

在资源文件夹下的templates文件夹下创建main.html

若有js.jq.css等配置文件添加在static文件夹下

 main.html的代码及相关解释如下

<!DOCTYPE html>
<!--本行代码作用是声明该页面使用了thymeleaf进行编译-->
<html lang="ch" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>


	hello springboot
<table border="1 px">
	<!-- th: 代表将要使用thymeleaf的某一个方法 each代表遍历  ${} 为控制器的固定格式 -->
	<!--${emplist} 是用来识别后端传来数据的标示名称-->
	<tr th:each="emp:${emplist}">
		<td th:text="${emp.employee_id}" ></td>
		<td th:text="${emp.first_name}"></td>
		<td th:text="${emp.email}"></td>
		<td th:text="${emp.phone_number}"></td>
		<td th:text="${emp.salary}"></td>
		<td th:text="${emp.commission_pct}"></td>
		<td th:text="${emp.manager_id}"></td>
		<td th:text="${emp.department_id}"></td>
		<td th:text="${emp.hiredate}"></td>
		
		
	</tr>
</table>

</body>
</html>

运行项目控制台显示:

打开浏览器进行查看:

 添加以及修改功能本文中未提及,故应只展示查询结果。

总结


例如:以上就是一个最简单的javaweb项目使用springboot框架的全部编译过程,仅用于初步理解三层框架的内部逻辑以及部分基础的注解、依赖的使用方法。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值