CentOS 7 配置Tomcat9+MySQL方案

下面是CentOS 7配置Tomcat9+MySQL的完整攻略:

1. 安装Java环境

Tomcat运行需要先安装Java环境。可以使用以下命令安装OpenJDK:

sudo yum install java-1.8.0-openjdk-devel

安装完成后,可以使用以下命令检查Java版本:

java -version

2. 安装Tomcat9

可以使用以下命令下载Tomcat9并解压:

cd /usr/local
sudo wget https://downloads.apache.org/tomcat/tomcat-9/v9.0.41/bin/apache-tomcat-9.0.41.tar.gz
sudo tar -xzvf apache-tomcat-9.0.41.tar.gz

解压后,可以启动Tomcat9:

cd /usr/local/apache-tomcat-9.0.41/bin
sudo ./startup.sh

Tomcat启动后,访问http://服务器IP:8080 可以看到Tomcat的默认页面。

3. 安装MySQL

可以使用以下命令安装MySQL:

sudo yum install mariadb mariadb-server
sudo systemctl enable mariadb
sudo systemctl start mariadb

安装完成后,可以使用以下命令执行安全设置:

sudo mysql_secure_installation

4. 创建Tomcat webapp

可以使用以下命令创建一个名为example的webapp:

cd /usr/local/apache-tomcat-9.0.41/webapps
sudo mkdir example
sudo chmod 777 example

在example目录下创建一个名为index.jsp的文件,内容可以是简单的Hello World:

sudo vi /usr/local/apache-tomcat-9.0.41/webapps/example/index.jsp

输入以下内容:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
    <title>Hello World!</title>
</head>
<body>
    <h1>Hello World!</h1>
    <p>This is a simple webapp created on CentOS 7 with Tomcat9 and MySQL.</p>
</body>
</html>

5. 创建MySQL数据库和表格

首先使用以下命令登录MySQL:

sudo mysql -u root -p

在MySQL提示符下,使用以下命令创建一个名为test的数据库:

CREATE DATABASE test;

接下来使用以下命令切换到test数据库:

USE test;

使用以下命令创建一个名为user的表格:

CREATE TABLE user (
  id INT NOT NULL AUTO_INCREMENT,
  name VARCHAR(20) NOT NULL,
  age INT NOT NULL,
  PRIMARY KEY (id)
);

6. 配置Tomcat连接MySQL

使用以下命令下载MySQL的JDBC驱动:

cd /usr/local/apache-tomcat-9.0.41/lib
sudo wget https://downloads.mysql.com/archives/get/p/3/file/mysql-connector-java-8.0.27.tar.gz
sudo tar -xzvf mysql-connector-java-8.0.27.tar.gz
sudo cp mysql-connector-java-8.0.27/mysql-connector-java-8.0.27.jar ./

修改Tomcat的配置文件,使Tomcat可以连接MySQL。使用以下命令打开tomcat-users.xml:

sudo vi /usr/local/apache-tomcat-9.0.41/conf/tomcat-users.xml

标签内添加如下内容:

<role rolename="manager-gui"/>
<role rolename="admin-gui"/>
<user username="manager" password="manager" roles="manager-gui,admin-gui"/>

使用以下命令打开context.xml:

sudo vi /usr/local/apache-tomcat-9.0.41/conf/context.xml

标签内添加如下内容:

<Resource name="jdbc/test"
          auth="Container"
          type="javax.sql.DataSource"
          maxActive="100"
          maxIdle="30"
          maxWait="10000"
          username="root"
          password="密码"
          driverClassName="com.mysql.cj.jdbc.Driver"
          url="jdbc:mysql://localhost:3306/test?characterEncoding=utf8"
          validationQuery="SELECT 1"
          testOnBorrow="true"
          testWhileIdle="true"
          timeBetweenEvictionRunsMillis="3600000"
          minEvictableIdleTimeMillis="18000000"/>

替换密码为实际MySQL的密码。使用以下命令重启Tomcat:

sudo /usr/local/apache-tomcat-9.0.41/bin/shutdown.sh
sudo /usr/local/apache-tomcat-9.0.41/bin/startup.sh

7. 编写Java代码连接MySQL

使用以下命令创建一个名为SampleServlet的Servlet:

cd /usr/local/apache-tomcat-9.0.41/webapps/example/WEB-INF/classes
sudo mkdir -p org/example
cd org/example
sudo vi SampleServlet.java

输入以下内容:

package org.example;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sql.DataSource;

public class SampleServlet extends HttpServlet {

    private static final long serialVersionUID = 1L;

    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        PrintWriter out = response.getWriter();
        out.println("<html><body>");
        try {
            // Class.forName("com.mysql.jdbc.Driver");
            // Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?user=root&password=密码");
            // String sql = "SELECT * FROM user";
            // Statement statement = conn.createStatement();
            // ResultSet res = statement.executeQuery(sql);
            // while (res.next()) {
            //     out.println("<h1>" + res.getString("name") + " " + res.getInt("age") + "</h1>");
            // }
            // conn.close();
            InitialContext ctx = new InitialContext();
            DataSource ds = (DataSource) ctx.lookup("java:/comp/env/jdbc/test");
            Connection conn = ds.getConnection();
            String sql = "SELECT * FROM user";
            Statement statement = conn.createStatement();
            ResultSet res = statement.executeQuery(sql);
            while (res.next()) {
                out.println("<h1>" + res.getString("name") + " " + res.getInt("age") + "</h1>");
            }
            conn.close();
        } catch (Exception e) {
            out.println("Exception: " + e.getMessage());
        }
        out.println("</body></html>");
    }
}

注释掉的代码是直接连接MySQL的方式,使用JNDI连接池的方式需要在MySQL的驱动中添加resource/META-INF/context.xml文件,内容如下:

<Context antiJARLocking="true">
  <Resource name="jdbc/test"
            auth="Container"
            type="javax.sql.DataSource"
            maxActive="100"
            maxIdle="30"
            maxWait="10000"
            username="root"
            password="密码"
            driverClassName="com.mysql.cj.jdbc.Driver"
            url="jdbc:mysql://localhost:3306/test?characterEncoding=utf8"
            validationQuery="SELECT 1"
            testOnBorrow="true"
            testWhileIdle="true"
            timeBetweenEvictionRunsMillis="3600000"
            minEvictableIdleTimeMillis="18000000" />
</Context>

在web.xml中添加Servlet和Mapping:

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0">
  <servlet>
    <servlet-name>SampleServlet</servlet-name>
    <servlet-class>org.example.SampleServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>SampleServlet</servlet-name>
    <url-pattern>/SampleServlet</url-pattern>
  </servlet-mapping>
</web-app>

示例

示例1:访问Tomcat默认页面

在浏览器中输入服务器IP地址和Tomcat端口号8080,例如http://192.168.0.1:8080,可以看到Tomcat的默认页面。

示例2:访问自定义webapp

在浏览器中输入服务器IP地址和Tomcat端口号8080/example,例如http://192.168.0.1:8080/example,可以看到自定义的webapp。

以上就是CentOS 7配置Tomcat9+MySQL方案的完整攻略,如果有任何问题请随时在评论区留言。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:CentOS 7 配置Tomcat9+MySQL方案 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • java 求解二维数组列最小值

    为了求解一个二维数组中每一列的最小值,我们可以采用以下步骤: 找到数组中每一列的最小值 将每一列的最小值存储到一个新数组中 以下是该过程的代码演示: public class MinInColumn { public static void main(String[] args) { int[][] array = {{1, 2, 3}, {4, 5, 6}…

    Java 2023年5月26日
    00
  • Java数组常见应用详解【创建、遍历、排序、查找】

    Java数组常见应用详解 数组是一种非常常见的数据结构,它可以用于存储一组数据,并且支持快速的遍历、排序和查找等操作。在Java中,数组是一个容器对象,可以存储相同类型的元素,并且在创建后其大小是不可改变的。本文将详细介绍Java数组的创建、遍历、排序和查找等常见应用,让大家对Java数组有更深入的了解。 创建数组 在Java中,可以通过以下方式来创建数组:…

    Java 2023年5月26日
    00
  • 把普通对象转换成json格式的对象的简单实例

    下面是将普通对象转换成JSON格式对象的简单攻略: 准备工作 要将一个普通的对象转换成JSON格式对象,我们需要先引入JSON库(如在浏览器中使用,可以使用内置的JSON对象),然后再使用其中的方法将对象转换成JSON格式对象。 示例1 首先,我们定义一个普通对象: const obj = { name: "张三", age: 18, g…

    Java 2023年5月26日
    00
  • Java JSONObject与JSONArray对象案例详解

    Java JSONObject与JSONArray对象案例详解 在Java中,我们可以使用JSONObject和JSONArray对象来解析和构建JSON格式的数据。本文将详细讲解如何在Java中使用这两个对象。 什么是JSON? JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,适用于各种编程语言。它基于JavaS…

    Java 2023年5月26日
    00
  • javascript之正则表达式基础知识小结

    JavaScript之正则表达式基础知识小结 正则表达式(Regular Expression)是一个用来处理文本的强大工具,具有非常丰富的语法和大量的用途,它可以用来处理文本的搜索、匹配、替换、验证等方面的问题。 正则表达式创建 在 JavaScript 中,正则表达式可以通过两种方式来创建: 1. 通过字面量形式创建 var reg = /ab+c/; …

    Java 2023年5月26日
    00
  • java从字符串中提取数字的简单实例

    关于“java从字符串中提取数字的简单实例”,以下是完整攻略: 1. 前言 在开发Java应用程序时,经常需要从字符串中提取数字,这种情况很常见。本文将介绍使用Java代码如何从字符串中提取数字。 2. 通过正则表达式实现 使用正则表达式可以很方便地从字符串中提取数字。代码示例1如下: import java.util.regex.Matcher; impo…

    Java 2023年5月26日
    00
  • java中的this引用及对象构造初始化

    解析Java中的this引用及对象构造初始化包含以下几个方面: this引用的作用 在Java中,this关键字代表当前对象。它可以用于访问当前对象的属性和调用当前对象的方法。通常情况下,当方法或构造器的形参与对象的成员变量重名时,我们可以使用this关键字来表示当前对象的成员变量。例如: public class Person { private Stri…

    Java 2023年5月26日
    00
  • java学生管理系统界面简单实现(全)

    下面是“java学生管理系统界面简单实现(全)”的完整攻略。 简介 “java学生管理系统界面简单实现(全)”是一篇教程,它详细介绍了如何使用Java语言实现一个学生信息管理系统。该教程包含的内容主要涉及Java Swing图形界面编程、MySQL数据库使用以及Java与MySQL之间的数据交互等方面。 步骤 下面是实现这个系统的主要步骤: 1. 创建项目并…

    Java 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部