基于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 应用的所有资源都存放在这个目录下。 | 是 |
\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
-