Web入门-08.Tomcat-基本使用
目录
介绍
Apache Tomcat 是一个开源的 Java Servlet 容器和 Web 服务器,由 Apache 软件基金会开发和维护。它提供了运行 Java Servlet 和 JavaServer Pages (JSP) 的平台,广泛用于开发和部署 Java Web 应用程序。在这篇文章中,我们将介绍 Tomcat 的基本使用,包括安装、配置、部署应用和常见管理任务。
Tomcat的安装与配置
下载与安装
Tomcat 可以从 Apache Tomcat 官方网站 下载。下载页面提供了多个版本的 Tomcat,选择与您的需求相匹配的版本。
- 访问 Tomcat 下载页面。
- 根据操作系统选择相应的二进制文件(例如 Windows、Linux、macOS),并下载压缩包。
- 解压下载的压缩包到您选择的目录。
例如,在 Linux 系统中,您可以使用以下命令:
bashCopy Codewget https://downloads.apache.org/tomcat/tomcat-9/v9.0.73/bin/apache-tomcat-9.0.73.tar.gz
tar -xzvf apache-tomcat-9.0.73.tar.gz
mv apache-tomcat-9.0.73 /opt/tomcat
配置环境变量
为了方便使用 Tomcat,建议将 Tomcat 的 bin
目录添加到系统的环境变量中。以 Linux 系统为例,您可以在 ~/.bashrc
文件中添加以下行:
bashCopy Codeexport CATALINA_HOME=/opt/tomcat
export PATH=$PATH:$CATALINA_HOME/bin
对于 Windows 系统,您可以通过系统属性中的环境变量设置界面来添加 CATALINA_HOME
和 PATH
变量。
启动Tomcat
Tomcat 的启动和停止脚本位于 bin
目录中。您可以使用以下命令启动 Tomcat:
bashCopy Codecd $CATALINA_HOME/bin
./startup.sh
在 Windows 上,使用:
cmdCopy Codecd %CATALINA_HOME%\bin
startup.bat
要停止 Tomcat,使用 shutdown.sh
或 shutdown.bat
脚本。
Tomcat目录结构
Tomcat 的目录结构包括以下几个主要目录:
bin
:包含启动和停止 Tomcat 的脚本。conf
:配置文件目录,包括server.xml
、web.xml
等。logs
:日志文件目录,Tomcat 运行时生成的日志文件存放在此。webapps
:Web 应用程序目录,您可以将自己的应用部署到此目录。work
:Tomcat 编译 JSP 文件并缓存生成的 Servlet 类文件的目录。temp
:临时文件目录,Tomcat 在运行时生成的临时文件存放在此。
部署Web应用
创建一个简单的Web应用
我们将创建一个简单的 Java Web 应用程序,使用 Servlet 和 JSP 技术。以下是一个示例 Web 应用程序结构:
Copy Codemyapp/
│
├── WEB-INF/
│ ├── web.xml
│ └── classes/
│ └── com/
│ └── example/
│ └── HelloServlet.class
│
└── index.jsp
web.xml
文件定义了应用程序的 Servlet 配置,HelloServlet.class
是一个简单的 Servlet 实现,而 index.jsp
是一个 JSP 页面。
web.xml
示例
xmlCopy Code<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_3_1.xsd"
version="3.1">
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>com.example.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
</web-app>
HelloServlet.java
示例
javaCopy Codepackage com.example;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
resp.setContentType("text/html");
resp.getWriter().println("<h1>Hello, World!</h1>");
}
}
index.jsp
示例
jspCopy Code<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>My Web App</title>
</head>
<body>
<h1>Welcome to My Web App</h1>
<a href="hello">Say Hello</a>
</body>
</html>
将应用部署到Tomcat
将 myapp
目录打包为 myapp.war
文件,并将其放置在 webapps
目录中。Tomcat 会自动解压并部署此应用。
例如,使用以下命令打包:
bashCopy Codecd myapp
jar -cvf myapp.war *
然后将 myapp.war
文件复制到 $CATALINA_HOME/webapps
目录中。
访问部署的应用
启动 Tomcat 后,您可以在浏览器中访问以下 URL 来查看应用:
- 首页:
http://localhost:8080/myapp/index.jsp
- Servlet:
http://localhost:8080/myapp/hello
Tomcat的管理
使用Tomcat管理界面
Tomcat 提供了一个 Web 管理界面,允许您通过浏览器管理部署的应用程序。要访问管理界面,请使用以下 URL:
Copy Codehttp://localhost:8080/manager/html
默认情况下,Tomcat 的管理界面需要用户名和密码。您可以通过编辑 conf/tomcat-users.xml
文件来配置用户。
配置用户权限
在 conf/tomcat-users.xml
文件中,添加以下内容来创建一个具有管理权限的用户:
xmlCopy Code<tomcat-users>
<role rolename="manager-gui"/>
<role rolename="admin-gui"/>
<user username="admin" password="password" roles="manager-gui,admin-gui"/>
</tomcat-users>
修改完成后,重新启动 Tomcat。
Tomcat的常见配置
修改服务器端口
Tomcat 的默认端口是 8080。如果需要修改端口,可以编辑 conf/server.xml
文件中的 <Connector>
元素。例如,将端口修改为 9090:
xmlCopy Code<Connector port="9090" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
配置虚拟主机
如果需要在同一 Tomcat 实例中托管多个网站,可以配置虚拟主机。在 conf/server.xml
文件中添加以下内容:
xmlCopy Code<Host name="www.example.com" appBase="webapps/example"
unpackWARs="true" autoDeploy="true">
<Context path="" docBase="/path/to/your/app" />
</Host>
设置JVM参数
可以在 bin
目录下的