首页 > 其他分享 >servlet部署和访问

servlet部署和访问

时间:2023-03-08 09:23:53浏览次数:37  
标签:JavaWeb Tomcat 编译 部署 Servlet 访问 应用 servlet 目录

Servlet 没有 main() 方法,不能独立运行,但它可以作为 JavaWeb 应用的一个组件被部署到 Servlet 容器中,由容器来实例化和调用 Servlet 的方法,例如:doGet() 、doPost() 等。

那么,JavaWeb 应用是什么呢?Servlet 是如何部署和访问的呢?本节我们将针对这些问题进行讲解。

JavaWeb 应用

JavaWeb 应用由一组 Servlet/JSP、HTML 文件、相关 Java 类、以及其他的资源组成,它可以在由各种供应商提供的 Servlet 容器中运行。由 JavaWeb 应用的定义可知, Servlet 是 JavaWeb 应用的一个组件。

为了让 Servlet 容器顺利地找到 JavaWeb 应用的各个组件,Servlet 规范规定,JavaWeb 应用必须采用固定的目录结构,即每种组件在 JavaWeb 应用中都有固定的存放目录。

以 Tomcat 为例,通常将 JavaWeb 应用存放到 Tomcat 的 webapps 目录下。在 webapps 下,每一个子目录都是一个独立的 Web 应用,子目录的名字就是 Web 应用的名字,也被称为 Web 应用的上下文根。用户可以通过这个上下文根来访问 JavaWeb 应用中的资源。

webapps 的目录结构如下图。

JavaWeb 结构图
下表中对 webapps 下各个目录进行了介绍。

目录描述是否必需
\servletDemo Web 应用的根目录,属于该 Web 应用的所有资源都存放在这个目录下。
\servletDemo\WEB-INF 存放 web.xml、lib 目录以及 classes 目录等。
\servletDemo\WEB-INF\classes 存放各种 .class 文件或者包含 .class 文件的目录,Servlet 类的 .class 文件也存放在此。
\servletDemo\WEB-INF\lib 存放应用所需的各种 jar 包,例如 JDBC 驱动程序的 jar 包。
\servletDemo\WEB-INF\web.xml web.xml 中包含应用程序的配置和部署信息。

部署

在 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 系统命令行窗口,如图。

cmd

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 calsspath  
注:set classpath命令用来为当前窗口设置临时环境变量,只在当前窗口下有效。

3. 编译 Servlet

1)在命令提示符中使用 cd命令进入 MyServlet.java 所在的目录。

servlet cd
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 创建目录。
  1. 在 Tomcat 的 webapps 目录中创建 servletDemo(web 应用的名字,由自己定义)文件夹;
  2. 在 servletDemo 文件夹内创建 WEB-INF 文件夹;
  3. 在 WEB-INF 内创建 classes 文件夹;
  4. 在 WEB-INF 内创建配置文件 web.xml(可以复制 \webapps\ROOT\WEB-INF 中的 web.xml 使用)。

5. 将 Servlet 移动到 Tomcat 目录中

将编译好的字节码和目录移动到 Tomcat\webapps\servletDemo\WEB-INF\classes 目录下。

6. 配置 web.xml

对 webapps\servletDemo\WEB-INF 目录的 web.xml 中进行配置,具体配置代码如下。
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app xmlns="http://java.sun.com/xml/ns/javaee"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
  5. http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
  6. version="3.0" metadata-complete="true">
  7. <servlet>
  8. <servlet-name>MyServlet</servlet-name>
  9. <servlet-class>net.biancheng.www.MyServlet</servlet-class>
  10. </servlet>
  11. <servlet-mapping>
  12. <servlet-name>MyServlet</servlet-name>
  13. <url-pattern>/MyServlet</url-pattern>
  14. </servlet-mapping>
  15. </web-app>

web.xml 中各元素含义及用法如下:
  • <web-app>: 根元素。
  • <servlet> :用于注册 Servlet,即给 Servlet 起一个独一无二的名字。
  • <servlet> 包含两个主要的子元素 <servlet-name> 和 <servlet-class>,分别用于指定 Servlet 的名称和 Servlet 的完整限定名(包名+类名)。
  • <servlet-mapping> :用于定义 Servlet 与 URL 之间的映射。
  • <servlet-mapping> 包含两个子元素 <servlet-name> 和 <url-pattern>,分别用于指定 Servlet 的名称和虚拟路径。

访问

进入 Tomcat\bin 目录下双击 startup.bat,启动 Tomcat。   tomcat 启动
Tomcat 启动成功后,在地址栏中输入“http://localhost:8080/servletDemo/MyServlet”,访问 MyServlet,结果如下图。


访问路径 http://localhost:8080/servletDemo/MyServlet 中,各部分含义如下:

  • http:// 表示 HTTP 协议;
  • localhost: 表示服务器 IP;
  • 8080 表示端口号;
  • /servletDemo 表示 Web 应用的上下文根路径;
  • /MyServlet 表示资源路径,即 web.xml 中 <url-pattern> 元素的取值。

标签:JavaWeb,Tomcat,编译,部署,Servlet,访问,应用,servlet,目录
From: https://www.cnblogs.com/GELY0007/p/17190752.html

相关文章

  • Servlet
    Servlet(ServerApplet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成......
  • 初识Servlet
    一、简述Servlet,服务器端的小程序,Servlet,是接受来自网络的请求(form表单,以及其他的请求),并对不同请求作出不同的响应Servlet,是基于Http协议的,是运行在web服务器中的程序。这......
  • 如何屏蔽国外IP访问
    宝塔如何屏蔽恶意CC和ddoss攻击以及国外IP访问呢?在我们服务器资源有限的情况下,各大搜索引擎每天不断爬取我们的服务器上的站点,但是有很多国外恶意蜘蛛抓取我们的网页,这对于......
  • 认识Servlet
    Servlet(ServerApplet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生......
  • 【.NET Core 6】使用EF Core 访问Oracle+Mysql+PostgreSQL并进行简单增改操作与性能比
    前言唠嗑一下。都在说去O或者开源,但是对于数据库选型来说,很多人却存在着误区。例如,去O,狭义上讲,是去Oracle数据库。但是从广义上来说,是去Oracle公司产品或者具有漂亮国垄断......
  • 云原生时代顶流消息中间件Apache Pulsar部署实操之轻量级计算框架
    @目录PulsarFunctions(轻量级计算框架)基础定义工作流程函数运行时处理保证和订阅类型窗口函数定义窗口类型滚动窗口滑动窗口函数配置函数示例有状态函数示例窗口函数示例......
  • 部署服务器
    date:2023-02-21category:-部署tag:-服务器部署-finalShell项目部署到服务器下载finalShell项目bulid打包压缩dist文件夹为zip格式配置如下,密码是......
  • windows下使用nginx + waitress 部署django
    虽然不喜欢IIS,不过有些项目又必须部署在windows上,windows下部署django的方案有IIS+wfastcgi,apache+mod_wsgi,也有超简单的部署方式如:nginx+waitress,本文主要讲的是最......
  • gitee突然无法访问
    gitee突然拉不了代码,报如下错误:Failedtoconnecttogitee.comport443:Operationtimedout情况一:仓库域名无法访问1、查询可以用的IP在https://www.ipaddress.co......
  • Docker启动RabbitMQ访问15672连接超时解决方法
    docker成功启动rabbitmq后访问15672端口报连接超时原因:rabbitmq默认web界面管理插件是关闭的,需要通过命令开启解决办法:1、查看rabbit的容器id:dockerps2、进入......