下面是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技术站