servlet部署和访问
JavaWeb 结构图
部署
在 Tomcat 中部署 JavaWeb 应用最快捷的方式,就是直接将 JavaWeb 应用的所有文件复制到 Tomcat 的 /webapps 目录下。在默认情况下,Tomcat 会自动加载 webapps 目录下的 JavaWeb 应用,并把它发布到名为 localhost 的虚拟主机中。
Tomcat 既可以运行采用开放式目录结构(只编译不打包)的 Web 应用,也可以运行 Web 应用的打包文件(WAR 文件)。在开发阶段,为了方便程序调试,通常采用开放式的目录结构部署 JavaWeb 应用。在开发完成,进入产品发布阶段时,就应该将整个应用打包成 WAR 文件,再进行部署。
即使采用 WAR 文件的形式发布,Tomcat 启动时也会将 WAR 文件自动展开为开放式的目录结构。
在本案例中,我们将采用开放式的目录结构进行部署,具体操作步骤如下。
1. 进入 Windows DOS 命令行窗口
我们知道,编译 Java 源代码一般可以通过两种方式完成:DOS 命令行 和 IDE(集成开发环境)。使用 IDE 可以一键完成编译工作,十分的方便,但 IDE 给我们带来方便的同时,也隐藏了编译过程中的许多细节,我们无法了解其中的原理和机制。
对于初学者来说,为了更加深刻地理解 Servlet 的运行原理和机制,最好的办法就是使用 DOS 命令行进行编译。
使用快捷键 “Windows + R”,打开运行对话框,在对话框输入cmd
,点击“确定”,进入 Windows 系统命令行窗口,如图。

2. 引入 javax.servlet 包
由于 Servlet 是 JavaEE 下的技术标准,不是 JDK 的组成部分,所以在编译 Servlet 前,需要先引入 servlet-api.jar 包(在 Apache Tomcat 安装目录下的 lib 文件夹中提供了此 jar 包)。
使用命令set classpath
可以将 servlet-api.jar 引入,该命令的语法如下,其中 path 表示引入 jar 包的路径。
- set classpath = path
为了方便操作,可以先在命令行中输入set classpath=
,然后将 servlet-api.jar 文件拖进命令行内,回车执行。

注:set classpath
命令用来为当前窗口设置临时环境变量,只在当前窗口下有效。
3. 编译 Servlet
1)在命令提示符中使用 cd
命令进入 MyServlet.java 所在的目录。

2)使用 javac -encoding UTF-8 -d . MyServlet.java
命令进行编译,若没有报错,则编译成功。

其中:
javac
:编译命令;-encoding UTF-8
:用于指定编译源文件时的字符编码,这里指定为 UTF-8;javac -d
:带包编译 ;.
:表示当前位置。
3)进入 MyServlet.java 文件所在的目录,可发现新增了编译后的目录和 .classes 字节码文件,自此我们就完成了对 Servlet 的编译工作。

4. 创建目录结构
在完成对 Servlet 的编译后,下一步依照 JavaWeb 应用的固定目录结构,在 Tomcat 中为该 Servlet 创建目录。
- 在 Tomcat 的 webapps 目录中创建 servletDemo(web 应用的名字,由自己定义)文件夹;
- 在 servletDemo 文件夹内创建 WEB-INF 文件夹;
- 在 WEB-INF 内创建 classes 文件夹;
- 在 WEB-INF 内创建配置文件 web.xml(可以复制 \webapps\ROOT\WEB-INF 中的 web.xml 使用)。
5. 将 Servlet 移动到 Tomcat 目录中
将编译好的字节码和目录移动到 Tomcat\webapps\servletDemo\WEB-INF\classes 目录下。

6. 配置 web.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <web-app xmlns="http://java.sun.com/xml/ns/javaee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
- http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
- version="3.0" metadata-complete="true">
- <servlet>
- <servlet-name>MyServlet</servlet-name>
- <servlet-class>net.biancheng.www.MyServlet</servlet-class>
- </servlet>
- <servlet-mapping>
- <servlet-name>MyServlet</servlet-name>
- <url-pattern>/MyServlet</url-pattern>
- </servlet-mapping>
- </web-app>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)