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线程协作的两种方式小结

    Java线程协作是指多个线程之间的相互协作来完成一个任务。在Java中,线程协作有两种方式:wait和notify/notifyAll。 1. wait和notify 当线程需要等待某个条件时,可以调用wait方法。调用wait方法会使线程进入等待状态,直到另一个线程调用notify或notifyAll方法来唤醒它。 示例1:wait和notify的简单使用…

    Java 2023年5月26日
    00
  • 在Java的Hibernate框架中使用SQL语句的简单介绍

    在Java的Hibernate框架中,使用SQL语句可以通过以下几个步骤完成: 步骤一:建立映射文件或注解 在使用Hibernate的过程中,通常需要建立映射文件或注解来完成ORM(对象关系映射)的功能。在需要使用SQL语句时,需要在映射文件或注解中增加以下配置信息: <sql-query name="query_name">…

    Java 2023年5月20日
    00
  • jsp学习之scriptlet的使用方法详解

    JSP学习之Scriptlet的使用方法详解 一、Scriptlet的概念 Scriptlet是一段嵌入在JSP文档中的Java代码,它用于在JSP页面中执行Java代码。 在Scriptlet中,可以定义变量、定义方法,或者调用方法等等。 二、Scriptlet的语法 JSP页面中使用Scriptlet时,需要使用<% %>标签。其中,标签中间…

    Java 2023年6月15日
    00
  • Java利用Dijkstra算法求解拓扑关系最短路径

    以下是“Java利用Dijkstra算法求解拓扑关系最短路径”的完整攻略。 1. 理解Dijkstra算法 Dijkstra算法是一种单源最短路径算法,用于计算一个节点到图中所有其他节点的最短路径。算法最早由荷兰计算机科学家狄克斯特拉于1959年提出,因此得名。该算法常用于路由算法或作为其他图算法的一个子模块。 Dijkstra算法的基本思想是从起点开始,对…

    Java 2023年5月19日
    00
  • Java IO流—异常及捕获异常处理 try…catch…finally

    Java IO流是Java常用的输入输出流,通常用于读取和写入文件、从网络接收数据、发送数据到网络等。在进行IO流的相关操作时,由于可能会发生各种异常,因此需要了解异常及捕获异常的处理方式。 异常的处理 在进行Java IO流操作时,可能会出现各种异常,如文件不存在、文件不可读写、网络异常等。这些异常会导致程序的中断,因此需要对这些异常进行捕获和处理。Jav…

    Java 2023年5月26日
    00
  • 浅谈spring security入门

    浅谈Spring Security入门 简介 Spring Security是Spring框架的安全性解决方案之一。它为Spring应用程序提供了身份验证、授权和其他安全功能。Spring Security是一种基于过滤器的安全性实现,可通过在Web应用程序中添加一组过滤器来提供许多基本的安全性机制,如基本认证、表单认证、单点登录等。 安装 在maven项目…

    Java 2023年5月20日
    00
  • java实现单机限流

    Java实现单机限流,可以通过限制每秒钟能处理多少次请求、对同一IP的请求进行限制等手段来避免服务被恶意请求压垮。下面是实现单机限流的完整攻略: 步骤一:引入限流工具包 Java实现单机限流可以使用开源限流工具包,比如Guava、Redis等。 以Guava为例,引入Guava限流工具包的步骤如下: 在pom.xml文件中添加以下依赖 <depende…

    Java 2023年5月19日
    00
  • JSON 与对象、集合之间的转换的示例

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,常用于前后端数据传输。在JavaScript中,可以轻松将JSON格式的数据存储在对象或集合中,也可以将对象或者集合转换为JSON格式的数据。下面,我们通过两个示例来详细讲解JSON与对象、集合之间的转换攻略。 示例一:JSON字符串转对象 我们假设有如下JSON字符…

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