zoukankan      html  css  js  c++  java
  • 9.14JavaWeb之Servlet的部署和访问

    9.14JavaWeb之Servlet的部署和访问

    基于Servlet的特点分析Servlet的部署和访问

    Servlet的特点:

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

    Servlet类相当于写JavaWeb应用的组件

    JavaWeb应用

    组成:

    由一组 Servlet/JSP、HTML 文件、相关 Java 类、以及其他的资源组成

    特点:

    可以在由各种供应商提供的 Servlet 容器中运行--->由此可知,Servlet只是JavaWeb应用中的一个组件

    Servlet规范规定:

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

    Tomcat当中存放JavaWeb应用的目录结构

    结构图:

    目录结构图分析:

    • JavaWeb 应用存放到 Tomcat 的 webapps 目录下--->每一个子目录都是一个独立的 Web 应用--->子目录的名字就是 Web 应用的名字-->被称为 Web 应用的上下文根。

    用户可以通过这个上下文根来访问 JavaWeb 应用中的资源。

    目录描述:

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

    部署JavaWeb应用到Servlet容器(Tomcat)上

    部署方式:

    • 开放式目录结构--->只编译不打包

    • 也可以运行 Web 应用的打包文件(WAR 文件)

    部署步骤

    • Servlet 是 JavaEE 下的技术标准,不是 JDK 的组成部分,所以在编译 Servlet 前,需要先引入 servlet-api.jar 包

    • 编辑.java文件成字节码文件

      • javac :编译命令;

      • -encoding UTF-8:用于指定编译源文件时的字符编码,这里指定为 UTF-8;

      • javac -d:带包编译 ;

      • .:表示当前位置。

    • 依照 JavaWeb 应用的固定目录结构,在 Tomcat 中为该 Servlet 创建目录

    • 将编译好的字节码和目录移动到 TomcatwebappsservletDemoWEB-INFclasses 目录下

    • 对 webappsservletDemoWEB-INF 目录的 web.xml 中进行配置

    • 浏览器访问


    关键步骤
    • JavaWeb的目录结构

      • 在 Tomcat 的 webapps 目录中创建 servletDemo(web 应用的名字,由自己定义)文件夹;

      • 在 servletDemo 文件夹内创建 WEB-INF 文件夹;

      • 在 WEB-INF 内创建 classes 文件夹;

      • 在 WEB-INF 内创建配置文件 web.xml(可以复制 webappsROOTWEB-INF 中的 web.xml 使用)。

    • 配置web.xml

      • <web-app>: 根元素。

      • <servlet> :用于注册 Servlet,即给 Servlet 起一个名字。

      • <servlet> 包含两个主要的子元素 :

        • <servlet-name>--->指定 Servlet 的名称

        • <servlet-class>,--->指定 Servlet 的完整限定名(包名+类名)。

      • <servlet-mapping> :用于定义 Servlet 与 URL 之间的映射。

      • <servlet-mapping> 包含两个子元素 :

        • <servlet-name> --->指定 Servlet 的名称--->与上面的元素对应

        • <url-pattern>,--->指定虚拟路径--->浏览器上输入该虚拟路径就找到配置文件中的路径然后打开资源

    示例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>MyServletDemoNo3</servlet-name>
           <servlet-class>net.MyServletDemoNo3</servlet-class>
       </servlet>
      <servlet-mapping>
           <servlet-name>MyServletDemoNo3</servlet-name>
           <url-pattern>/MyServletDemoNo3</url-pattern>
       </servlet-mapping>
    </web-app>
    • 启动Tomca访问指定资源

      • http://localhost:8080/servletPractice/MyServletDemoNo3

    It's a lonely road!!!
  • 相关阅读:
    Ansible自动部署lnmp架构+上线电商
    elastalert 基于EFK环境的邮件报警
    冒泡法、选择法、插入法排序
    Java的基本数据类型
    cmd运行java程序找不到或无法加载主类解决办法
    JavaBean进行表单开发
    Web项目各目录详解
    【数论】整数分块及详细证明
    题解 P4874 【[USACO14DEC] Piggyback_Silver 背负式运输(银)】
    题解 P3792 【由乃与大母神原型和偶像崇拜】
  • 原文地址:https://www.cnblogs.com/JunkingBoy/p/15269287.html
Copyright © 2011-2022 走看看