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应用的目录结构

结构图:

9.14JavaWeb之Servlet的部署和访问_tomcat

目录结构图分析:

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

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

目录描述:

目录 描述 是否必需
\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 中包含应用程序的配置和部署信息。

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

部署方式:

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

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

部署步骤

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

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

    • javac :编译命令;

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

    • javac -d:带包编译 ;

    • .:表示当前位置。

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

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

  • 对 webapps\servletDemo\WEB-INF 目录的 web.xml 中进行配置

  • 浏览器访问


关键步骤
  • JavaWeb的目录结构

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

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

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

    • 在 WEB-INF 内创建配置文件 web.xml(可以复制 \webapps\ROOT\WEB-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!!!