手动部署第一个 Servlet 案例

手动部署第一个 Servlet 案例

一般不会手动部署应用,这篇文章适合应付学校老师布置的作业

一.准备工作

1.首先下载一个Tomcat。

2.打开下载的Tomcat文件夹,可以看到以下文件列表。

主要讲解一下这几个文件夹的作用:

bin:放 Tomcat 启动、关闭等命令行工具和可执行文件。

conf:存放 Tomcat 的配置文件。

lib:存放 Tomcat 运行所需的 Java 类库(JAR 文件)。

logs:存放 Tomcat 运行时的日志文件。

temp:存放 Tomcat 运行时产生的临时文件。

webapps:存放所有部署的 Web 应用程序。

work:存放 Tomcat 运行时生成的与 Web 应用相关的临时文件(如 JSP 编译后的 .class 文件)。

二.部署

1.部署规范

打开webapps,所有的web应用程序都在该文件下部署,下图为该文件夹的文件结构,手动部署时需遵循如下规范。

project1为自己自行部署的文件夹,名称可以自己起;

WEB-INF:存放所有资源的根目录;

html,css,jsp,js文件为应用的入口,外界可以直接访问,也可以没有;

classes:存放编译后的 Java 类;

web.xml:存放应用的配置文件;

lib:存放应用所需的库文件 (.jar)。

2.示例:

2.1 project1目录

如图,我在webapps目录下创建了一个project1文件,该文件下除了WEB-INF目录外我还创建了一个jsp文件作为程序的入口,jsp文件内容如下(代码放在文章末尾供大家复制):

2.2 WEB-INF目录

点击进入WEB-INF文件:

会发现我这里除了classes文件和web.xml文件外还多了一个.java文件,这个.java文件有没有都无所谓,我放在这里只是为了演示编译过程,下面是.java文件的内容(代码放最后)。

这段代码中的类实现了Servlet接口,执行了三个主要的生命周期,简单的向终端打印了内容,并向前端打印了hello world。

继续来看web.xml文件:

上面的部分代码是web配置文件的基本信息,主要来看下面的标签。

中的

: 定义了 Servlet 的名称为 servlet。: 指定了 Servlet 的实现类的路径 org.example.servlet01.HelloServlet

中的

: 映射到上面定义的 Servlet 名称 servlet。: 定义了访问该 Servlet 的 URL 模式为 /servlet,当用户访问这个 URL 时,会调用对应的 Servlet。

注意: 1.两个标签中的是自己起名的,两个名称必须一样才能让后者找到前者。

2.存放的是java类编译后的字节码文件的路径及文件,注意classes文件下的文件要和该路径一致,如下图(注意路径)。

3.:表示访问地址,也可以随意定义,如果按上面的路径定义,则访问路径为http://localhost:8080/project1/servlet(端口号8080是tomcat的默认配置)。

现在教大家如何将.java文件进行编译,将编译后的文件放入classes文件夹下指定的包中即可,不过要注意 Servlet 除了导入 jre 自带 jar 包外,还导入了 Tomcat 里面的 jar 包(servlet-api.jar),所以在编译的时候要配置引用 jar 包的临时环境变量。

编译方法:在存放.java文件的目录下输入cmd打开命令行窗口。

输入编译命令:javac -classpath servlet-api.jar的路径 要编译的.Java文件

(servlet.jar在tomcat目录的lib文件夹下,找到后复制路径即可)

成功编译后会在当前文件夹位置出现一个.class文件,然后将该class文件放入上面说的指定目录即可。

该应用程序已部署完毕,下面进行测试。

1.回到Tomcat目录,双击bin目录下的startup.bat文件,启动服务器。

2.成功启动后,输入localhost:8080/project1 访问到jsp页面 。

3.在浏览器地址栏输入localhost:8080/project1/servlet,成功访问,浏览器得到打印的数据。

4.打开tomcat命令行窗口看到服务已经启动并初始化完成,部署成功。

三.附件

1.文件

我将project1的文件放在这,提取码为1234,不想写的可以自取,注意,编译该文件中的.java文件的jdk版本是11.0.22,如果版本号和你当前电脑上的jdk版本不一致则无法正常运行,需要自行编译.java文件并将其放在class目录下。

百度网盘 请输入提取码

2.jsp代码

<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>

JSP - Hello World

<%= "Hello World!" %>

3.java代码

package org.example.servlet01;

import java.io.*;

import jakarta.servlet.*;

public class HelloServlet implements Servlet {

@Override public void init(ServletConfig servletConfig) throws ServletException { System.out.println("init...");//向终端打印init...

}

@Override public ServletConfig getServletConfig() { return null; }

@Override public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException { System.out.println("service..."); //向终端打印service... PrintWriter pw=servletResponse.getWriter(); pw.println("Servlet:hello world"); //向浏览器打印hello world内容 }

@Override public String getServletInfo() { return null; }

@Override public void destroy() { System.out.println("destroy...");//向终端打印destroy...

} }

4.web.xml代码

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd"

version="5.0">

servlet

org.example.servlet01.HelloServlet

servlet

/servlet

相关文章