概述
作为一个搞移动端开发的人,对于web技术的更新迭代不是一般的不敏感,毕业好多年了我都只记得当时用servlet搭建建议web项目,到了后来ssh然后ssm,这些我都不太熟悉,直到现在才发现又出现了springboot和springcloud,如果是web的从业人员一定很熟悉,因此这篇入门的文章并不是写给他们的,而是希望自己搭建简易的web服务器来实现高扩展的云端功能。
选择宝塔完全是从实用主义出发,因为我研究这个的目的压根不是为了想学会高端技术,而只是为了实现我某些功能需求,哪怕用起来蹩脚,界面奇丑无比,那也可以了,毕竟对我们来说实用才是最终目的。
创建sprintboot项目并运行
通过IDEA的File project创建项目,会跳出一个新建项目的参数编辑框:
这里我们选择左侧栏的Spring Intializr,然后点击next;这个时候他会让我们等待一段时间,因为它需要从那个网址下载对应的sprint相关文件。稍等片刻,会弹出项目配置对话框:
然后点击next,会弹出一个更多选项的对话框:我这里需要创建一个带存储的sprintboot,自持常用的sql api所以其他的我没有勾选了,这几个够了。
继续next,到了最后一步,你需要配置你的项目名称和代码所在目录,我这里就不修改了直接用默认的。
然后有一个对话框是否在新的对话框打开项目,我选择是的,这个和Androidstudio一样的就不贴图了。
然后喝杯茶等待项目创建完成,因为他需要从服务器上下载一些相关的配置,这个和我们创建Android项目是一样的。一般不用很长时间,我们就能看到如下界面了:
这个时候就创建完成了,你可以选择配置本地maven我暂时不配置了,我们先创建一个jsp页面来测试一下是否能正常访问。
我们在template目录下创建一个index.html,然后在java对应包名下创建一个controller包,controller可以理解为我们Android里面的逻辑控制,像fragment,activity我们可以用来类比。为了好区分,我在index里面写了helloworld
然后我们在刚创建的controller下创建一个类,这里就叫做TestController吧,我们需要在他这个控制器的类上面加上一个@Controller的注解表示他是一个控制器,表上这个注解之后就能被spring扫描到。
除此之外我们要告诉spring这个控制器是负责哪一个请求的,比如我这里希望用户请求hello的时候由这个控制器来响应,那就是还需要加上
@RequestMapping(value = "/hello")
那具体的实现我们要怎么告诉sprint呢?我们需要写一个方法然后也是通过注解告诉sprint,这个参数来处理这个请求,最终的代码就是这样子的:
我们可以把这里的hello和test理解为hello功能模块下的test请求,如果我想增加一个delete,那么和test一样创建一个方法就行了。
注意这里的斜杠表示这个是路径,不带斜杠是找不到的,别忘记了。
顺便配置一下数据库,我们需要提前创建一个本地数据库,或者一个远程数据库,我这里用的本地的,后面我会将怎么迁移到远程。
点开application.properties,里面是空的,我们需要添加数据库的配置,这里用的jdbc:
这里截图不全,我就贴一下代码:
#数据库名称
spring.datasource.name=cloud_db
#数据库连接url
spring.datasource.url= jdbc:mysql://localhost:3306/cloud_db?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true
#用户名
spring.datasource.username=root
#密码
spring.datasource.password=123456
#数据库驱动
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
来运行一下吧,找到application点击这个运行的小图标:
运行起来了,一切正常;
连接本地数据库实现增删查改
业务逻辑
首先我们在本地mysql中创建cloud_db数据库并在里面里面创建一张表,就叫做device表吧,参数如下:
因为需要查询并处理数据库数据,我们还需要一些其他的类让分工更加明晰,我们需要创建model层,mapper层,service层以及实现service的impl层,controller层,分别如下:
定义一个实体类Config.java,这个和数据库是对应的。
package com.android.model;
/**
* Created by Administrator on 2022-09-17.
*/
public class Config {
private int id;
private String prop;
private String value;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getProp() {
return prop;
}
public void setProp(String prop) {
this.prop = prop;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
定义对应的服务类以及相关实现
package com.android.mapper;
import com.android.model.Config;
/**
* Created by Administrator on 2022-09-17.
*/
public interface ConfigMapper {
Config selectConfigById(Integer id);
}
package com.android.service.impl;
import com.android.mapper.ConfigMapper;
import com.android.model.Config;
import com.android.service.ConfigService;
import org.springframework.beans.factory.annotation.Autowired;
/**
* Created by Administrator on 2022-09-17.
*/
public class ConfigServiceImpl implements ConfigService {
/**
* 注入mapper到service层
*/
@Autowired
private ConfigMapper configMapper;
@Override
public Config selectConfigById(Integer id) {
return configMapper.selectConfigById(id);
}
}
package com.android.service;
import com.android.model.Config;
/**
* Created by Administrator on 2022-09-17.
*/
public interface ConfigService {
Config selectConfigById(Integer id);
}
```java
package com.android.service.impl;
import com.android.mapper.ConfigMapper;
import com.android.model.Config;
import com.android.service.ConfigService;
import org.springframework.beans.factory.annotation.Autowired;
/**
* Created by Administrator on 2022-09-17.
*/
public class ConfigServiceImpl implements ConfigService {
/**
* 注入mapper到service层
*/
@Autowired
private ConfigMapper configMapper;
@Override
public Config selectConfigById(Integer id) {
return configMapper.selectConfigById(id);
}
}
CloudApplication中要增加map扫描路径,否则会扫描不到对应的mapper。
CloudApplication.java
```java
package com.android;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@MapperScan("com.android.mapper")//启动类添加注解@MapperScan("com.android.mapper"),否则mapper无法注入,启动项目会报错找不到mapper
public class CloudApplication {
public static void main(String[] args) {
SpringApplication.run(CloudApplication.class, args);
}
}
需要增加mapper告诉spring具体执行的数据库语句以及有什么对象处理数据库的结果:DeviceMapper.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.android.mapper.ConfigMapper">
<select id="selectConfigById" parameterType="int" resultType="com.android.model.Config">
select * from device where id=#{id}
</select>
</mapper>
修改application.properties,增加mybatis的配置
#数据库名称
spring.datasource.name=cloud_db
#数据库连接url
spring.datasource.url= jdbc:mysql://localhost:3306/cloud_db?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true
#用户名
spring.datasource.username=root
#密码
spring.datasource.password=123456
#数据库驱动
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#mybatis配置
#配置映射文件
mybatis.mapper-locations=classpath:mapper/*.xml
#配置实体类
mybatis.type-aliases-package=com.android.model
逻辑写完了,我们把界面做一下。
UI界面
先画一个查询页面,用户输入id查询后跳转到结果页面,我们在resources文件夹下templates文件夹下新建device.html
文件,内容如下。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form role="form" action = "/device/getConfig" method="post">
设备属性ID:<input type="text" id="id" name = "id"><br>
<input type="submit" id = "show" value = "查询">
</form>
</body>
</html>
然后我们要完善上面的结果页面getConfig.html,这里弄了一个表格来装数据:
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<table>
<th>编号</th>
<th>属性</th>
<th>值</th>
<tr th:each="config: ${configs}">
<td th:text="${config.id}"></td>
<td th:text="${config.prop}"></td>
<td th:text="${config.value}"></td>
</tr>
</table>
</body>
</html>
友好起见,写一个处理错误的公共页面error.html
:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
哎呀出错了~~
</body>
</html>
指定访问链接和处理器
如果不指定controller是没办法实现路由的,我们需要创建一个,方法和上面的testController一样:
服务器安装宝塔
现在主流的云服务器都支持一键安装带宝塔的系统了,所以这里就不多说了,这里假定你杠重置为宝塔系统,我们需要来简单配置一下(这里以腾讯云服务器为例);
默认为8888端口,但是这个端口初始下没有放行,我们需要配置防火墙,暴露这个端口的数据进出。
这个时候我们就能进入宝塔面板了,默认密码需要按照提示登录到服务器使用sudo /etc/init.d/bt default拿到,拿到后我们就进行登录
登陆成功会有一个用户协议,同意就是。首页让我们绑定手机号,这个就随你了。这里我们要配置一下数据库,因为前面写的代码要用到这个,首页会弹出安装环境,选择默认的lnmp即可,接下来等待一段时间,等他安装完成。
安装完成,进到数据库选项卡,增加数据库,名称和上面一致:
然后需要使用phpadmin创建一个表,名称和上面代码对应:
然后我放开了云服务器的sql端口,只容许本机ip访问用于测试,用navicatmysql连接上去,访问时没问题的。(部署上去后建议还是不要开放3306端口,这里只是为了测试)
部署测试
本地连接远程数据库测试
接下来我们运行我们的代码,在测试之前我们需要先插入一条数据,否则查询的时候因为没有找到数据绘制到跳转到错误页面,然后,看他是否能正常运行。
nice,正常的。
接下来我们要把它部署到远程服务器上面。首先我们要打包springboot项目,有两种方法:
- 使用gradle脚本;
- 手动编译;
方法一:
建议使用第一种,比较方便。有些小伙伴在右侧看不到gradle脚本,则可以通过View-ToolWindow下的maven找到,如果你的工程是基于gradle那打开gradle就可以了:
然后在右侧的maven忠选择package打包会在工程目录下生成对应的jar包,这个jar包的配置则在pom.xml下。
方法二:
可以使用actfact的方式,点击build-buildartifacts,这个时候是灰色的,需要先添加artifacts,快捷键ctrl+alt+shift+s打开对话框,如下选择:
然后在build的时候发现可用了,选择build artfacts,方式选择jar,然后选择我们的项目模块build,就会生成一个out目录,进入宝塔,文件选项卡,吧刚刚生成的文件传上去(也可以通过mvn clean package的方式生成,我这没通提示mvn找不到,知道的朋友麻烦评论区说下,当然也可以通过View->Tool Windows->Maven projects打开Lifecycle里的package,右键点击选择第一个run maven bulid):
还需要在pom文件中配置主类,否则会出现找不到主类的问题:
注意:使用lifecycle打包的時候如果出錯,請留意輸出日志是否要求你更新maven版本,因为很多小伙伴的maven版本不够新导致打包失败问题,这个我们要去官网下载对应的包
部署到宝塔
我们需要先把文件上传到服务器上。选择文件选项卡,点击上传,如下图保证你的安装包已经上传。
部署的话有两种方式,方法一:在网站选项卡选择部署java项目,弹出对话框上选中刚刚上传的jar包会自动填充一些信息,如果需要修改端口号则修改一下,然后点击完成。这个时候他会自动启动服务器。
第二种是在宝塔软件商店安装Java项目一键部署然后按照操作部署,两种方式都没问题,我其实用第一种还多一些。
安装好之后点击设置,弹出配置对话框,先择springboot,第一次会提示我们安装tomcat,直接安装ok:
稍等片刻,等tomcat安装好了之后,还是springboot选项卡,选择路径为刚刚我们上传的jar包,会默认填充一些字段:
有绑定的域名就写域名,没有就写IP地址,端口号按照你需求修改,不冲突就行(冲突会提醒你冲突了),做完之后点击启动。还不清楚的看宝塔的官方教程
注意在自定义参数那里 --server.port=6538 前面要加空格,默认是没有加
然后就是具体的开发流程了。
最后
以上就是能干春天为你收集整理的手把手教你用IDEA搭建SpringBoot并使用部署宝塔服务器创建sprintboot项目并运行连接本地数据库实现增删查改服务器安装宝塔部署测试的全部内容,希望文章能够帮你解决手把手教你用IDEA搭建SpringBoot并使用部署宝塔服务器创建sprintboot项目并运行连接本地数据库实现增删查改服务器安装宝塔部署测试所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复