当前位置:   article > 正文

Java后端开发,从0开始,IntelliJ IDEA+Tomcat+MySQL+云服务器部署_idea+mysql+tomcat

idea+mysql+tomcat

最近开始接触后端开发,原本在Python跟Java之间徘徊,之所以不选择其他语言,主要是这两个语言都有点基础,尤其是Java用了几年,用起来个跟顺手些,虽然Java也一年多没用了,不过接触几天之后,感觉就又都回来了。

这篇文章做科普是一个目的,当然最重要的,是为自己做个存档,因为现在所有的环境搭建,日后自己都会再搭建一次(电脑会换,云服务器也只买了一年),其中踩了不少坑,所以做个记录,方便他人更方便自己!

IntelliJ IDEA环境搭建

为什么会选择IntelliJ  IDEA,因为好用!

前几年Java开发基本用的都是Eclipse(大学学的时候用的就是Eclipse),后面做android开发又用了as,体验就是AS比eclipse好用太多(当然也不排除我喜新厌旧的风格~),这次用的idea也是同样好用,就跟他的名字一样,智能!

首先配置Java环境,可以终端输入java --version查看java版本

如果java下载配置,可以参考这篇文章

https://www.jianshu.com/p/fe6b68295479

再下载idea

https://www.jetbrains.com/idea/download/#section=mac

下载之后安装,完成

Tomcat跟MySQL配置

下面分两部分分别来说下怎么配置tomcat跟mysql,本地跟云服务器

本地配置

tomcat安装可以参考这篇文章,很简单,没什么能遇到的坑

https://www.jianshu.com/p/db08d23049ce

mysql安装可以参考下面文章,在配合可视化工具使用时候使用有一个坑,后面会说

https://www.jianshu.com/p/07a9826898c0

安装完成之后,配上可视化工具使用将会方便很多,尤其在早期调试,增删改查数据时候,也会一目了然

在这边推荐一个工具Navicat Premium,下面是我当初的下载地方

百度云:https://pan.baidu.com/s/1bcJVyIvFneiEoMZPU-oIbA#list/path=/密码: qps3

安装打开之后,点击左上角的Connection,输入本地配置,如下

链接之后,可能会遇到这个问题

2059 - Authentication plugin ‘caching_sha2_password’ cannot be loaded: dlopen(../Frameworks/caching_sha2_password.so, 2): image not found

后来查了下,是最新版本的mysql不支持root直接登录,需要额外设置下,如下

解决办法:

1:命令行键入数据库:

mysql -uroot -p

2:键入密码后,执行:

ALTER USER root@localhost IDENTIFIED WITH mysql_native_password BY '密码';

密码更改为自己数据库的密码;

然后就可以自己登录配置了,顺便说下,Navicat Premium还可以登录远程的mysql,后面的云服务器配置好了之后也可以用它来登录,如下

 

云服务器配置

接下来说怎么配置云服务器的tomcat跟mysql

首先,需要介绍一个工具:Yummy FTP

这软件可以帮你把本地的文件上传到云服务器,虽然云服务器里面也可以下,不过本地下网速更快,毕竟云服务器宽带高的费用也高。

首先,也是要配置java环境,其中jdk我选的是rpm安装包,gzip安装包一直下不下来,停留在99.9%。

https://www.cnblogs.com/yjhkhnuje/p/9975307.html

tomcat安装可以参考

https://www.jianshu.com/p/6a9fa018b506

mysql安装可以参考

https://www.cnblogs.com/dadadechengzi/p/6723686.html?tdsourcetag=s_pcqq_aiomsg

mysql的安装我饶了很多弯,网上的几个火的教程都有点问题。这篇我照着做下来没啥问题,所以推荐!

记得要在云服务器防火墙打开8080(tomcat)跟3306(mysql)端口,然后用浏览器测试下tomcat链接情况跟用Navicat Premium测试下mysql远程登录看下就差不多了。

IDEA跟Tomcat,Mysql配合运行简单的服务端接口

下面来说本地环境怎么配合运行简单的接口

下面会写一个简单的例子,测试一下数据库增删改查,模拟用户注册,登录,修改用户信息等功能。

1,首先新建一个web工程,如下

2,在web的WEB-INF的目录下创建classes和lib目录

3,将classes目录作为输出目录,将lib作为Dependencies的目录,如下图

4,导入数据链接库,这里用的是c3p0和dbutils进行数据库链接

下载地址:https://pan.baidu.com/s/184HFVJCcNisitRFEya4ngw 提取码: 6tpe 

5,在src根目录下创建c3p0-config.xml文件,进行数据库配置

  1. <c3p0-config>
  2.     <!-- 默认配置,c3p0框架默认加载这段默认配置 -->
  3.     <default-config>
  4.         <!-- 配置JDBC 四个基本属性 -->
  5.         <property name="driverClass">com.mysql.jdbc.Driver</property>
  6.         <property name="jdbcUrl">jdbc:mysql://localhost:3306/fistTestDatabase</property>
  7.         <property name="user">root</property>
  8.         <property name="password">test123</property>
  9.     </default-config> <!-- This app is massive! -->
  10. </c3p0-config>

目录结构如下:

6,在src目录下创建servlet目录并创建UserLogin继承HttpServlet,测试代码如下

  1. import model.UserBean;
  2. import org.apache.commons.dbutils.QueryRunner;
  3. import org.apache.commons.dbutils.handlers.BeanHandler;
  4. import utils.JDBCUtils;
  5. import utils.UserDBUtils;
  6. import javax.servlet.ServletException;
  7. import javax.servlet.http.HttpServlet;
  8. import javax.servlet.http.HttpServletRequest;
  9. import javax.servlet.http.HttpServletResponse;
  10. import java.io.IOException;
  11. import java.io.PrintWriter;
  12. import java.sql.SQLException;
  13. public class UserLogin extends HttpServlet {
  14. @Override
  15. protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  16. // super.doGet(req, resp);
  17. String account = req.getParameter("account");
  18. String password = req.getParameter("password");
  19. System.out.println("account:" + account + "\npassword:" + password); // 打印出来看一看
  20. String result = "数据库读取异常!";
  21. if (account.isEmpty()){
  22. result = "用户名不能为空!";
  23. }else if (password.isEmpty()){
  24. result = "密码不能为空!";
  25. }else{
  26. QueryRunner runner = new QueryRunner(JDBCUtils.getDataSource());
  27. try {
  28. UserBean userBean = UserDBUtils.userLogin(runner,account,new BeanHandler<UserBean>(UserBean.class));
  29. System.out.println(userBean);
  30. if (userBean == null) {
  31. result = "用户不存在";
  32. }else{
  33. if (account.equals(userBean.getUserName()) && password.equals(userBean.getUserPwd())){
  34. result = account+"登录成功!";
  35. }else {
  36. result = "密码错误!";
  37. }
  38. }
  39. } catch (SQLException e) {
  40. e.printStackTrace();
  41. }
  42. }
  43. resp.setContentType("text/html;charset=utf-8"); // 设置响应报文的编码格式
  44. PrintWriter pw = resp.getWriter(); // 获取 response 的输出流
  45. pw.println(result); // 通过输出流把业务逻辑的结果输出
  46. pw.flush();
  47. }
  48. @Override
  49. protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  50. // super.doPost(req, resp);
  51. doGet(req,resp);
  52. }
  53. }

 

7,编辑web/WEB-INF/web.xml文件,将UserLogin进行注册 

  1. <servlet>
  2. <servlet-name>userLogin</servlet-name>
  3. <servlet-class>servlet.UserLogin</servlet-class>
  4. </servlet>
  1. <servlet-mapping>
  2. <servlet-name>userLogin</servlet-name>
  3. <url-pattern>/userLogin</url-pattern>
  4. </servlet-mapping>

8,打开Navicat Premium,建立一个表,写入一条用户登录数据

9,一条可以登录的请求就这样诞生了,用postman或者浏览器,直接请求,如下

http://localhost:8080/testServlet_2/userLogin?account=pppp&password=1233&phoneNum=1580523134

请求结果如下

截图上方是请求,下方是日志

测试完整代码已经上传到github:https://github.com/wocalage/ServletDemo

部署项目到云服务器上

首先我们把项目打包成war格式

1,如下配置好artifacts,要确保库都被引用到里面了,如下

点击OK

2,编译成artifacts,如下图

选择build artifacts

3,编译完成后,有个war文件,在out文件夹中,如下图

这个war文件就是打包后的可部署的文件

通过Yummy FTP将war包上传到云服务器上,放到Tomcat目录webapps中,重启tomcat就行了!

 

可能遇到的问题:

1,怎么看日志信息

启动tomcat之后,直接ip:8080无法访问,请求也请求不了,这时候大概率是无头绪的,如果在本地,有日志输出可以调试查看原因,如果在云服务器怎么办呢?

也是有办法的,进入到tomcat的log目录,如下

输入命令

 tail -f catalina.out

就能查看实时日志信息了!

2,重启或者关闭tomcat遇到错误怎么办?

错误信息我忘记截图,内容大概是

在这里插入图片描述

这个问题主要的原因是内存不足,具体解决办法是进入到tomcat的bin目录,打开catalina.sh文件

在最上面加上下面这行

JAVA_OPTS="-Xms512m -Xmx1024m -Xss2048K -XX:PermSize=256m -XX:MaxPermSize=512m"

如下:

 

3,jdk跟tomcat版本问题

在我接入过程中,因为jdk的版本问题,也遇到了一点麻烦,具体表现为

本机jdk版本是11,云服务器上一开始安装的是jdk8,遇到了云服务器无法运行本地编译出来war包的问题。

后来将云服务器上改为了12,又遇到一个没生效的问题,纠结了很久,最后发现还是之前安装8残留的jre路径不对,导致tomcat还是使用之前的jre来运行,但是由于之前的jre没有了,所以用了缺省的

顺便说下,jdk11以上就没有jre的文件夹了,在tomcat里面设置jdk文件夹就行。

4,‘java.net.UnknownHostException:主机名: 主机名: 未知的名称或服务’问题

在看tomcat日志的时候,发现一个问题,具体如下

首先,看下hostname,再ping下hostname,如下

可知,是由于无法解析hostname导致的。

编辑下/etc/hosts文件

加入ip hostname就行

如:

10.2.100.5 vm10-0-0-9

 

 

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号