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

最近开始接触后端开发,原本在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文件,进行数据库配置

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

目录结构如下:

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

import model.UserBean;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import utils.JDBCUtils;
import utils.UserDBUtils;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;

public class UserLogin extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//        super.doGet(req, resp);
        String account = req.getParameter("account");
        String password = req.getParameter("password");
        System.out.println("account:" + account + "\npassword:" + password); // 打印出来看一看
        String result = "数据库读取异常!";
        if (account.isEmpty()){
            result = "用户名不能为空!";
        }else if (password.isEmpty()){
            result = "密码不能为空!";
        }else{
            QueryRunner runner = new QueryRunner(JDBCUtils.getDataSource());
            try {
                UserBean userBean = UserDBUtils.userLogin(runner,account,new BeanHandler<UserBean>(UserBean.class));
                System.out.println(userBean);
                if (userBean == null) {
                    result = "用户不存在";
                }else{
                    if (account.equals(userBean.getUserName()) && password.equals(userBean.getUserPwd())){
                        result = account+"登录成功!";
                    }else {
                        result = "密码错误!";
                    }
                }

            } catch (SQLException e) {
                e.printStackTrace();
            }
        }

        resp.setContentType("text/html;charset=utf-8"); // 设置响应报文的编码格式
        PrintWriter pw = resp.getWriter(); // 获取 response 的输出流
        pw.println(result); // 通过输出流把业务逻辑的结果输出
        pw.flush();
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//        super.doPost(req, resp);
        doGet(req,resp);
    }
}

 

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

<servlet>
    <servlet-name>userLogin</servlet-name>
    <servlet-class>servlet.UserLogin</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>userLogin</servlet-name>
    <url-pattern>/userLogin</url-pattern>
</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

 

 

  • 5
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
学生成绩管理系统是一个比较典型的Web应用程序,可以使用Java Servlet和JSP技术实现。下面是一个简单的实现步骤: 1. 确定系统功能和设计数据库表 首先,我们需要确定学生成绩管理系统的功能需求,例如学生信息管理、课程信息管理、成绩录入和查询等等。然后,设计数据库表格以存储数据。 例如,我们可以设计以下几个表格: 学生表(Student):学生ID、姓名、性别、出生日期、联系方式等。 课程表(Course):课程ID、课程名称、学分等。 成绩表(Score):学生ID、课程ID、成绩等。 2. 创建项目和配置环境 使用IntelliJ IDEA创建一个Web项目,然后配置环境。我们需要配置Tomcat服务器、MySQL数据库连接和JDBC驱动程序等。 3. 实现数据访问层 在项目中创建一个Java类,用于实现数据库的访问操作。我们可以使用JDBC技术连接数据库,然后实现数据的增删改查操作。 4. 实现业务逻辑层 在项目中创建另一个Java类,用于实现业务逻辑。例如,实现学生信息管理、课程信息管理、成绩录入和查询等功能。 5. 实现表示层 使用JSP技术实现用户界面,为用户提供交互界面。例如,实现学生信息管理页面、课程信息管理页面、成绩录入页面和查询页面等。 6. 部署和测试系统 最后,我们需要将项目部署到Tomcat服务器上,并测试学生成绩管理系统的功能和性能。 总之,使用IntelliJ IDEAJava Servlet、JSP、MySQLTomcat等技术实现学生成绩管理系统是非常简单的。只需要按照上述步骤一步步实现,就可以得到一个完整的Web应用程序。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值