首页 > 其他分享 >手动部署第一个 Servlet 案例

手动部署第一个 Servlet 案例

时间:2024-09-20 19:22:30浏览次数:3  
标签:文件 java Tomcat 编译 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-mapping>标签。

<servlet>中的

  • <servlet-name>: 定义了 Servlet 的名称为 servlet
  • <servlet-class>: 指定了 Servlet 的实现类的路径 org.example.servlet01.HelloServlet

<servlet-mapping>中的

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

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

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

          3.<url-pattern>:表示访问地址,也可以随意定义,如果按上面的路径定义,则访问路径为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" %>

<!DOCTYPE html>

<html>

<head>

  <title>JSP - Hello World</title>

</head>

<body>

<h1><%= "Hello World!" %></h1>

</body>

</html>

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代码

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"

         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>

        <servlet-name>servlet</servlet-name>

        <servlet-class>org.example.servlet01.HelloServlet</servlet-class>

    </servlet>

   

    <servlet-mapping>

        <servlet-name>servlet</servlet-name>

        <url-pattern>/servlet</url-pattern>

    </servlet-mapping>

</web-app>

标签:文件,java,Tomcat,编译,Servlet,手动,案例,servlet
From: https://blog.csdn.net/qq_74804896/article/details/142383775

相关文章

  • springboot+vue云农门户经典案例子系统【开题+程序+论文】
    系统程序文件列表开题报告内容研究背景随着信息技术的飞速发展,云计算、大数据与物联网等前沿技术在农业领域的深度融合,正逐步改变着传统农业的面貌。云农门户作为现代农业信息化的重要载体,旨在通过集成化、智能化的服务平台,为农民、农场主及农业相关从业者提供便捷、高效的......
  • 案例269购物商城网站的设计与实现[SSM+MySQL+Vue]
    目录系统展示项目背景系统设计总结系统展示项目背景网络技术和计算机技术发展至今,已经拥有了深厚的理论基础,并在现实中进行了充分运用,尤其是基于计算机运行的软件更是受到各界的关注。计算机软件可以针对不同行业的营业特点以及管理需求,设置不同的功能,可以符合各个行......
  • Linux-手动扩容磁盘分区
    Linux-手动扩容磁盘分区1.手动扩容磁盘分区实例演示:使用fdisk扩容ext4磁盘分区在本示例中,我们将阿里云的高效云盘从50GB扩容到60GB。1.1扩容前检查磁盘分区信息检查并记录分区表信息:fdisk-l/dev/vdb输出示例:Disk/dev/vdb:60GiB,64424509440bytes,1258291......
  • 【python爬虫案例】利用python爬取豆瓣读书评分TOP250排行数据
    一、爬取案例-豆瓣读书TOP250上一期给大家分享了个python爬虫案例:豆瓣电影TOP250的排行榜数据爬取【python爬虫案例】利用python爬虫爬取豆瓣电影评分TOP250排行数据!今天再给大家分享一下:豆瓣读书排行榜TOP250的python爬虫案例!因为是同一个网站,所以流程和逻辑上都是差不多的。......
  • 广州浮点Moldflow软件许可优化实施成功案例
    浮动版Moldflow软件许可证优化、降本增效实施行业:塑料注塑、模具设计实施软件:Moldflow软件一、背景概述1.项目背景Moldflow是一款广泛应用于塑料注塑成型和模具设计的模拟软件,帮助工程师进行流动、冷却、翘曲等方面的分析。某塑料制造企业高度依赖Moldflow进行产品设计与优化,......
  • Python-tkinter界面设计案例---快捷编辑json文件
    前言:为了方便测试员编辑一些json文件信息,我打算提供一个简洁清晰的ui界面来提高工作效率。该ui基于轻量化tkinter实现。大致效果如下图所示:前置环境:python3importtkinterastkfromtkinterimportmessageboximportjsonimportosimport_locale_locale._getdefault......
  • modbus设备数据 转 profinet IO项目案例
    目录1 案例说明 12 VFBOX网关工作原理 13 准备工作 24 设置网关采集MODBUS从站数据 25 用PROFINETIO协议转发数据 86 案例总结 101 案例说明设置网关采集Modbus设备数据把采集的数据转成profinetIO协议转发给其他系统。2 VFBOX网关工作原理VFBOX网关是协议转换网关......
  • MyFlash MySQL数据恢复实战案例:将MySQL Docker容器误删除DELETE的数据进行闪回恢复
    创建MySQL容器mkdir-p{data,conf.d}cat>conf.d/log-bin.cnf<<-EOF[mysqld]log_bin=mysql-binlogserver_id=1EOFdockerrm-fmysqldockerrun-d--namemysql-eMYSQL_ROOT_PASSWORD=123456-p3306:3306-v/etc/localtime:/etc/localtime-v./data:......
  • MySQL shell脚本案例:实现每隔一小时统计MySQL数据更新次数,并将结果记录到文件中
    要编写一个Shell脚本,每隔一小时统计MySQL中数据更新的次数,并将结果写入一个文本文件update-record.txt中,你可以按照以下步骤来实现:创建脚本文件:首先创建一个Shell脚本文件,比如命名为mysql_update_stats.sh。编写脚本内容:在脚本中编写执行SQL查询并将结果写入文件的逻辑。设......
  • 离散制造 vs 流程制造:锚定精准制造未来,从装配线到化学反应,实时数据集成在制造业案例中
    使用TapData,化繁为简,摆脱手动搭建、维护数据管道的诸多烦扰,轻量替代OGG,Kettle等同步工具,以及基于Kafka的ETL解决方案,「CDC+流处理+数据集成」组合拳,加速仓内数据流转,帮助企业将真正具有业务价值的数据作用到实处,将“实时数仓”方法论落进现实。TapData持续迭代产品......