第 01 章 Servlet

第 01 章 Servlet

学好Servlet,有助于更好的学习交互层框架的应用以及真正掌握Web开发的业务设计。JSP是J2EE非常重要的一个组成部分。

学习目标

  • 理解C/S和B/S的架构概念
  • 使用Eclipse创建web项目
  • 使用Tomcat部署静态网站(重点)
  • 掌握request和response的使用(重点、难点)
  • 掌握转发和重定向的区别(重点、难点)
  • 掌握session存取数据

理解C/S和B/S的架构概念

C/S架构程序

C/S架构程序

服务器-客户机,即Client-Server(C/S)结构。C/S结构通常采取两层结构。服务器负责数据的管理,客户机负责完成与用户的交互任务[1]

优点

  1. 应用服务器运行数据负荷较轻。最简单的C/S体系结构的数据库应用由两部分组成,即客户应用程序和数据库服务器程序。二者可分别称为前台程序与后台程序。运行数据库服务器程序的机器,也称为应用服务器。一旦服务器程序被启动,就随时等待响应客户程序发来的请求;客户应用程序运行在用户自己的电脑上,对应于数据库服务器,可称为客户电脑,当需要对数据库中的数据进行任何操作时,客户程序就自动地寻找服务器程序,并向其发出请求,服务器程序根据预定的规则作出应答,送回结果,应用服务器运行数据负荷较轻。
  2. 数据的储存管理功能较为透明。在数据库应用中,数据的储存管理功能,是由服务器程序和客户应用程序分别独立进行的,并且通常把那些不同的(不管是已知还是未知的)前台应用所不能违反的规则,在服务器程序中集中实现,例如访问者的权限,编号可以重复、必须有客户才能建立订单这样的规则。所有这些,对于工作在前台程序上的最终用户,是“透明”的,他们无须过问(通常也无法干涉)背后的过程,就可以完成自己的一切工作。在客户服务器架构的应用中,前台程序不是非常“瘦小”,麻烦的事情都交给了服务器和网络。在C/S体系下,数据库不能真正成为公共、专业化的仓库,它受到独立的专门管理
  3. C/S的优点是能充分发挥客户端PC的处理能力,很多工作可以在客户端处理后再提交给服务器。对应的优点就是客户端响应速度快。

缺点

总体概述:

  1. 系统软件升级时,每一台客户机需要重新安装,其维护和升级成本非常高。
  2. 存在平台的限制(兼容的问题),如,win10平台与win7平台。
  3. 传统的C/S体系结构虽然采用的是开放模式,但这只是系统开发一级的开放性,在特定的应用中无论是Client端还是Server端都还需要特定的软件支持。
  4. C/S架构的劣势还有高昂的维护成本且投资大。

服务端的特征 :

  1. 被动的角色(从)。
  2. 等待来自用户端的要求。
  3. 处理要求并传回结果。

用户端的特征:

  1. 主动的角色(主)。
  2. 发送要求。
  3. 等待直到收到回应。

B/S架构程序

B/S架构程序

B/S架构即浏览器和服务器架构模式,是随着Internet技术的兴起,对C/S架构的一种变化或者改进的架构。在这种架构下,用户工作界面是通过WWW浏览器来实现,极少部分事务逻辑在前端(Browser)实现,但是主要事务逻辑在服务器端(Server)实现,形成所谓三层3-tier结构。B/S架构是WEB兴起后的一种网络架构模式,WEB浏览器是客户端最主要的应用软件[2]

优点

  1. B/S最大的优点就是可以在任何地方进行操作而不用安装任何专门的软件,只要有一台能上网的电脑就能使用,客户端零安装、零维护。系统的扩展非常容易。
  2. 由需求推动了AJAX技术的发展,它的程序也能在客户端电脑上进行部分处理,从而大大的减轻了服务器的负担;并增加了交互性,能进行局部实时刷新。
  3. B/S结构主要利用了不断成熟的Web浏览器技术:结合浏览器的多种脚本语言和ActiveX技术,用通用浏览器实现原来需要复杂专用软件才能实现的强大功能,节约了开发成本。

补充SaaS架构

SaaS,是Software-as-a-Service的缩写名称,意思为软件即服务,即通过网络提供软件服务。

SaaS平台供应商将应用软件统一部署在自己的服务器上,客户可以根据工作实际需求,通过互联网向厂商定购所需的应用软件服务,按定购的服务多少和时间长短向厂商支付费用,并通过互联网获得Saas平台供应商提供的服务[3]

随着互联网技术的发展和应用软件的成熟, 在21世纪开始兴起的一种完全创新的软件应用模式。传统模式下,厂商通过License将软件产品部署到企业内部多个客户终端实现交付。SaaS定义了一种新的交付方式,也使得软件进一步回归服务本质。企业部署信息化软件的本质是为了自身的运营管理服务,软件的表象是一种业务流程的信息化,本质还是第一种服务模式,SaaS改变了传统软件服务的提供方式,减少本地部署所需的大量前期投入,进一步突出信息化软件的服务属性,或成为未来信息化软件市场的主流交付模式。

关于Servlet

Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。

使用 Servlet,您可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页。

Java Servlet 通常情况下与使用 CGI(Common Gateway Interface,公共网关接口)实现的程序可以达到异曲同工的效果。但是相比于 CGI,Servlet 有以下几点优势:

  1. 性能明显更好。
  2. Servlet 在 Web 服务器的地址空间内执行。这样它就没有必要再创建一个单独的进程来处理每个客户端请求。
  3. Servlet 是独立于平台的,因为它们是用 Java 编写的。
  4. 服务器上的 Java 安全管理器执行了一系列限制,以保护服务器计算机上的资源。因此,Servlet 是可信的。
  5. Java 类库的全部功能对 Servlet 来说都是可用的。它可以通过 sockets 和 RMI 机制与 applets、数据库或其他软件进行交互。

Servlet架构

下图显示了Servlet与Web应用程序中的位置。

Servlet架构

Servlet任务与作用

Servlet 执行以下主要任务:

  1. 读取客户端(浏览器)发送的显式的数据。这包括网页上的 HTML 表单,或者也可以是来自 applet 或自定义的 HTTP 客户端程序的表单。
  2. 读取客户端(浏览器)发送的隐式的 HTTP 请求数据。这包括 cookies、媒体类型和浏览器能理解的压缩格式等等。
  3. 处理数据并生成结果。这个过程可能需要访问数据库,执行 RMI 或 CORBA 调用,调用 Web 服务,或者直接计算得出对应的响应。
  4. 发送显式的数据(即文档)到客户端(浏览器)。该文档的格式可以是多种多样的,包括文本文件(HTML 或 XML)、二进制文件(GIF 图像)、Excel 等。
  5. 发送隐式的 HTTP 响应到客户端(浏览器)。这包括告诉浏览器或其他客户端被返回的文档类型(例如 HTML),设置 cookies 和缓存参数,以及其他类似的任务。

URI介绍

URI(统一资源标识符)[^URI]:是一个用于标识某一互联网资源名称的字符串。而这个资源由两个部分确定:资源地址信息(URL)+资源名称信息(URN);

常见的URI格式如下:
http://user:password@host.com:8080/p/a/t/h?query=string&action=add#hash

URI组成 含义
http:// 协议名称,协议头
user 用户名
password 对应密码
host.com 主机域名地址(异或主机ip地址),主机地址
:8080 端口号,默认80
/p/a/t/h 虚拟资源路径,目标资源地址
query=string&action=add 参数传递
hash 锚点

Web服务器

  • 是可以向发出请求的浏览器提供文档的程序
  • 提供网上的信息浏览服务

常见的web服务器

  1. Microsoft:IIS,是一种WEB服务组件,允许在公共Intranet或Internet上发布信息的WEB服务器,其中包括WEB服务器、FTP服务器、NNTP服务器和SMTP服务器,分别用于网页浏览、文件传输、新闻服务和邮件发送等方面,它使得在网络上发布信息成了一件很容易的事情。它提供ISAPI作为扩展WEB服务器功能的编程接口,同时还提供了Internet,可以实现对数据库的查询和更新。
  2. Apache:Apache是世界上应用最多的WEB服务器,优势主要在于源代码开放、有一支开放的开发队伍、支持跨平台应用以及其可移植性等。Apache的模块支持非常丰富,虽在速度和性能上不及其他轻量级WEB服务器,是属于重量级产品,所消耗的内存也比其他WEB服务器要高。
    1. Tomcat:Tomcat是一个开放源代码、运行servlet和JSP Web应用软件的基于Java的web应用软件容器(Web应用服务器),Tomcat server是根据servlet和jsp规范执行的,因此也可以说Tomcat server实行了Apache-Jakarta规范,且比绝大多数商用应用软件服务器要好,但是,tomcat对静态文件和高并发的处理比较弱。Tomcat本身的并发性比较差,可保证应用正常运行。其优点是:
      1. Apache Jakarta的开源项目
      2. 轻量级应用服务器
      3. 开源、稳定、资源占用小
  3. Nginx:Nginx是一款高性能的HTTP和反向代理服务器,能够选择高效的epoll、kqueue、eventport最为网络I/O模型,在高连接并发的情况下,能够支持高达5万个并发连接数的响应,而内存、CPU等系统资源消耗却非常低,运行非常稳定。
  4. IBM:WebSphere,是一种功能完善、开放的WEB应用程序服务器,它基于Java的应用环境,建立、部署和管理Internet和Intranet Web应用程序。相对于其他流行的WEB服务器而言,应用的数量很少。
  5. Oracle:WebLogic,确切的说是一个基于JAVAEE架构的中间件,WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。将Java的动态功能和Java Enterprise标准的安全性引入大型网络应用的开发、集成、部署和管理之中[^4]。

下面主要介绍Apache与Nginx的区别。

Web服务器 Apache Nginx
反向代理 非常好
Rewrite规则,重写 非常好
Fast CGI
热部署 不支持 支持
系统压力比较 很小
稳定性 非常好
安全性 一般
技术资料 较少 非常多
静态文件处理 一般 非常好
虚拟主机 支持 支持
内存消耗 很大 非常小

Tomcat安装与使用

下载Tomcat

点击Apache Tomcat进入官网页面,选择自己想要下载的版本(根据操作系统选择)即可。这里选择的是Tomcat 7.0.104。下载完成后解压压缩包即可。

安装

将下载的文件(这里下载的是tar.gz)的版本,也就是linux的版本。

tar -xzvf apache-tomcat-7.0.104.tar.gz

将解压缩的后的文件目录apache-tomcat-7.0.104目录移动至没有中文名称的路径下面即可。这样就完成了Tomcat的安装。

Tomcat目录结构

└── apache-tomcat-7.0.104
    ├── BUILDING.txt
    ├── CONTRIBUTING.md
    ├── LICENSE
    ├── NOTICE
    ├── README.md
    ├── RELEASE-NOTES
    ├── RUNNING.txt
    ├── bin/                # 存放各种平台下面用于启动和停止Tomcat的脚本文件
    ├── conf/               # 存放Tomcat服务器的各种配置文件
    │   ├── catalina.policy
    │   ├── catalina.properties
    │   ├── context.xml
    │   ├── logging.properties
    │   ├── server.xml
    │   ├── tomcat-users.xml
    │   ├── tomcat-users.xsd
    │   └── web.xml
    ├── lib/                # 存放Tomcat服务器所需的各种JAR包
    ├── logs/               # 存放Tomcat的日志文件
    ├── temp/               # Tomcat用于存放临时文件
    │   └── safeToDelete.tmp
    ├── webapps/            # 当发布web应用时,默认情况下会将web应用的文件存放于此目录中
    │   ├── ROOT
    │   ├── docs
    │   ├── examples
    │   ├── host-manager
    │   └── manager
    └── work/               # Tomcat把有JSP生成的Servlet防御此目录下

配置Tomcat

配置管理员

tomcat-users.xml是配置Tomcat管理员的。配置管理员的方式如下:

<?xml version="1.0" encoding="UTF-8"?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->
<tomcat-users xmlns="http://tomcat.apache.org/xml"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
              version="1.0">
<!--
  NOTE:  By default, no user is included in the "manager-gui" role required
  to operate the "/manager/html" web application.  If you wish to use this app,
  you must define such a user - the username and password are arbitrary. It is
  strongly recommended that you do NOT use one of the users in the commented out
  section below since they are intended for use with the examples web
  application.
-->
<!--
  NOTE:  The sample user and role entries below are intended for use with the
  examples web application. They are wrapped in a comment and thus are ignored
  when reading this file. If you wish to configure these users for use with the
  examples web application, do not forget to remove the <!.. ..> that surrounds
  them. You will also need to set the passwords to something appropriate.
-->
<!--
  <role rolename="tomcat"/>
  <role rolename="role1"/>
  <user username="tomcat" password="<must-be-changed>" roles="tomcat"/>
  <user username="both" password="<must-be-changed>" roles="tomcat,role1"/>
  <user username="role1" password="<must-be-changed>" roles="role1"/>
-->
    <!-- 配置角色 -->
  <role rolename="manager-gui"/>
    <!-- 配置用户信息,如:用户名称,登录密码以及用户的角色 -->
  <user username="root" password="123456" roles="manager-gui"/>
</tomcat-users>

<font style="color:red;font-weight:bolder">
Tomcat可以配置管理员,但是不建议配置。可能会被暴力破解。
</font>

核心配置

在Tomcat 5.0之前,是将context.xml做为核心配置文件,但是在5.0之后则是以server.xml为核心配置文件。

80端口是web服务器中一个比较特殊的端口,但是一台服务器中,只有一个80端口。如果是单应用则可以直接占用80端口(但是不建议);如果是多个应用则不建议

IDEA中Servlet开发环境集成

主要参考资料:百度经验——《intellij idea2019开发servlet(java web)项目》

下面主要讲解两种在IDEA中创建servlet工程方式:

  1. 不以Maven作为依赖管理工具的方式;
  2. 以Maven作为依赖管理的方式。
  3. 以Maven作为依赖管理工具,使用maven archetype创建webapp(目录结构更加规范)。

不以Maven作为依赖管理工具的方式

  1. 创建新的项目,如下图所示。


    第1步 创建项目
  2. 选择Java Enterprise,指定JDK版本,如果之前没有选择Tomcat。则需要创建一个TomcatServer。选择TomcatServer后。在选择Web Application,下面的扩展选项可以不选择,确定Web Application的版本号后,并勾选创建web.xml文件。配置完成后点击“下一步(next)”。

    第2步 项目基本配置

  3. 输入项目名称,以及确定项目存放位置。最后检查下自己的信息是否有误。确定后,点击“完成”即可。


    第3步 项目基本信息配置
  4. 完成后,其目录结构如下所示:

    ├── servlet-demo.iml
    ├── src
    └── web
        ├── WEB-INF
        │   └── web.xml
        └── index.jsp
    
  5. 创建Servlet Server,选中项目目录的src文件夹,右击“新建”或使用快捷键cmd+n(Mac OS)选择create new servlet,将出现如下所示弹窗。Name中输入入口文件的名称,Package中输入入口文件所在包名,create java ee 6 annotated class(是否使用JavaEE 6的相关注解)取消选中状态。完成后,点击“确定”。

    第5步 创建java文件

  6. 此时的目录结构如下所示:

    ├── servlet-demo.iml
    ├── src
    │   └── com.ermao.servlet
    │       └── ServletDemo.java
    └── web
        ├── WEB-INF
        │   └── web.xml
        └── index.jsp
    

    SerletDemo.java已经自动创建完毕。

    public class ServletDemo extends HttpServlet {
        protected void doPost (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
        }
    
        protected void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
        }
    }
    

    web.xml内容如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
             version="4.0">
        <servlet>
            <servlet-name>ServletDemo</servlet-name>
            <servlet-class>com.ermao.servlet.ServletDemo</servlet-class>
        </servlet>
    </web-app>
    
  7. 引入Tomcat相关Servlet JSP依赖jsp-api.jar以及servlet-api.jar,点击"文件(File)"选择项目结构设置。

    第7步 引入依赖
    在弹窗界面(如下所示),选择“模块”点击“Dependenceis”将之前选择的TomcatServer版本打钩。
    第7步 引入依赖-w1029

    如果之前没有选择,点击“+”添加“组件(Library)”,如下图所示,选择需要TomacatServer版本中即可。


    第7步 引入依赖-w1029

    最后点击“应用”以及“确定即可”。

  8. 确定下是否将对应的TomcatServer中的依赖引入进来。


    第8步 确定依赖
  9. 设置Artifact,点击文件中的“项目结构”菜单,如下图,再选择“Artifacts”选项卡,根据下图进行操作即可。

    第9步 设置Artifact

  10. 配置“运行配置”,创建Tomcat配置,在“Deployment”选项卡,设置刚刚新增的Artifact

    第10步 运行配置

以Maven为依赖管理工具模式搭建

  1. 创建新的项目,如下图所示。


    第1步 创建项目
  2. 选择“Maven”并确定项目的JDK版本后,点击下一步。


    第2步 确定项目类型
  3. 录入pom.xml的基础信息,如下图。录入成功后,点击“确定”即可。

    第3步 确定pom文件基础信息

  4. 此时的目录结构如下所示:

    ├── pom.xml
    └── src
        ├── main
        │   ├── java
        │   └── resources
        └── test
            └── java
    
  5. 选中项目根目录servlet-demo-maven单击鼠标右键,并选择添加新框架支持,如下图所示。

    第5步 添加框架支持

  6. 选择“Web Applications”,选择“web”应用版本并勾选创建create web.xml。如下图所示。最后点击“确定”即可。

    第6步 添加web框架支持

  7. 此时目录结构如下所示。

    ├── pom.xml
    ├── servlet-demot-maven.iml
    ├── src
    │   ├── main
    │   │   ├── java
    │   │   └── resources
    │   └── test
    │       └── java
    └── web
        ├── WEB-INF
        │   └── web.xml
        └── index.jsp
    
  8. 选中src目下的main目录的java根目录,单击鼠标右键(cmd+n ——mac OS快捷键),在下拉菜单中选择“新建”选项,并选择“创建Servlet Server”,如下图所示。

    第8步 创建Servlet Server

  9. 创建Servlet入口文件,如下图。Name中输入入口文件的名称,Package中输入入口文件所在包名,create java ee 6 annotated class(是否使用JavaEE 6的相关注解)取消选中状态。完成后,点击“确定”。

    第9步 创建Servlet入口文件

  10. 此时的目录结构如下所示。

    ├── pom.xml
    ├── src
    │   ├── main
    │   │   ├── java
    │   │   │   └── com.ermao.servlet
    │   │   │       └── ServletDemo.java
    │   │   └── resources
    │   └── test
    │       └── java
    └── web
        ├── WEB-INF
        │   └── web.xml
        └── index.jsp
    
  11. 引入TomcatServer中重要的JSP API两个:jsp-api.jar以及servlet-api.jar。这个地方的话,就直接使用maven管理即可。修改pom.xml文件,如下所示。<font style="color:red;font-weight:bolder">打包方式改为war包方式。</font>

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        
        <groupId>com.ermao</groupId>
        <artifactId>learn_servlet</artifactId>
        <version>1.0</version>
        <packaging>war</packaging>
    </project>
    

    在IDEA的选项卡Maven中,更新pom.xml的设置。并确认导入信息无误。

    第11步 导入依赖

  12. 确定下是否将对应的TomcatServer中的依赖引入进来。


    第12步 确定依赖
  13. 设置Artifact,点击文件中的“项目结构”菜单,如下图,再选择“Artifacts”选项卡,根据下图进行操作即可。

    第13步 设置Artifact

  14. 配置“运行配置”,创建Tomcat配置,在“Deployment”选项卡,设置刚刚新增的Artifact

    第14步 运行配置

当然也可以使用,非maven方式导入这两个依赖包。至此,项目的初始化基本完成。其次就是修改web.xml配置相关信息。

关于Maven创建Servlet项目

参考资料《IDEA创建webapp》以及配置相关信息。

  1. 点击“创建新的项目”,如下图所示。


    创建新的项目-w768
  2. 根据下面的图片信息进行操作:第一,选择“maven”作为项目依赖管理工具。第二,确定JDK版本信息是否有误。第三,勾选“create from archetype(从原型中创建)”。第四,选择“org.apache.maven.archetype:maven-archetype-webapp”。点击“下一步”。

    选择maven应用模板-w768

  3. 根据弹出页面,输入maven基本信息以及项目存放位置。点击“下一步”。


    输入maven基本信息-w768
  4. 确认maven信息是否正确后,点击“完成”即可。


    确认maven信息-w768
  5. 此时项目的目录结构如下。

    ├── pom.xml
    ├── src
    │   └── main
    │       └── webapp
    │           ├── WEB-INF
    │           │   └── web.xml
    │           └── index.jsp
    

    此时需要在main目录下创建两个新的文件夹:“java”(编写代码的目录)以及“resource”(存放一些配置),创建完成后,新的目录结构如下所示。

    ├── pom.xml
    ├── src
    │   └── main
    │       ├── java
    │       ├── resources
    │       └── webapp
    │           ├── WEB-INF
    │           │   └── web.xml
    │           └── index.jsp
    

    创建完成了还没结束,需要将“java”(编写代码的目录)以及“resource”分别标记为“源码根目录”以及“配置资源根目录”。按照下图,进行标记。
    [站外图片上传中...(image-16725c-1592722636696)]

  6. 编辑“运行配置” 。按照下图的操作步骤进行添加。第一,点“add configura(添加运行配置)”;第二,点击“+”;第三,找到“Tomcat Local Server”。点击“确定”即可。


    编辑运行配置-w768
  7. 配置tomcat server home路径,如下图所示。如果之前配置过,则直接选择tomcat的版本即可。
    [站外图片上传中...(image-73929d-1592722636696)]
    配置成功后,如下图所示。
    [站外图片上传中...(image-9f2bb8-1592722636696)]
    选中“Deployment”选项卡,点击“+”,并选择“Artifact”。
    [站外图片上传中...(image-b7dce8-1592722636696)]
    选择第二个即可。并点击确定。
    [站外图片上传中...(image-ea7fb9-1592722636696)]
    如果有需求需要更改url访问路径,则可以冲回到“server”选项卡中,修改“URL”路径地址值即可。
    [站外图片上传中...(image-4fdd78-1592722636696)]

  8. 配置pom文件,添加servlet-api以及jsp-api。修改完成后,重新导入下pom文件即可。

      <dependencies>
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>4.11</version>
          <scope>test</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
        <dependency>
          <groupId>javax.servlet</groupId>
          <artifactId>javax.servlet-api</artifactId>
          <version>4.0.1</version>
          <scope>provided</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/javax.servlet.jsp/javax.servlet.jsp-api -->
        <dependency>
          <groupId>javax.servlet.jsp</groupId>
          <artifactId>javax.servlet.jsp-api</artifactId>
          <version>2.3.3</version>
          <scope>provided</scope>
        </dependency>
      </dependencies>
    
  9. 创建Servlet入口文件,选中java目录“单击鼠标右键”或者“cmd”+“N”(快捷键),选则创建create new servlet。如下所示:
    [站外图片上传中...(image-94aa9e-1592722636696)]
    根据提示信息,录入相关信息,如下所示,名称自定义即可。同时取消勾选状态“create java ee 6 annotation”不适用javaee6相关注解。
    [站外图片上传中...(image-af9e24-1592722636696)]

注意事项

配置Artifact

在idea中,如果没有设置Artifact(且没有默认的设置,如下图所示)则需要手动设置Artifact。需要核对下信息
[站外图片上传中...(image-be318f-1592722636696)]
点击“+”按钮,如下图。选择“Web Application Exploded”。
[站外图片上传中...(image-9c87d3-1592722636696)]
点击后,弹窗如下图,确认文件信息后,点击“确定”即可。
[站外图片上传中...(image-365774-1592722636696)]
这步配置完成后,则需要配置,如果需要增加辨识度,则可以修改下名称。
[站外图片上传中...(image-ae9a80-1592722636696)]
最后还要编辑“运行配置”,选中“Deployment”选项卡,添加“Artifact”。
[站外图片上传中...(image-a66878-1592722636696)]
选择刚刚添加的“Artifact”即可。然后运行项目。
[站外图片上传中...(image-1d1048-1592722636696)]
当能正常访问时,说明配置成功了。

配置context以及访问路径

在“运行配置”中,“Deployment”选项卡中,选择“Artifact”后,将自动生成context

[站外图片上传中...(image-7f776b-1592722636696)]

如果需要调整context,则必须与“Server”选项卡种的url路径一直才能正常访问,否则,将无法访问。

[站外图片上传中...(image-59502e-1592722636696)]

Eclipse 中Servlet开发环境集成

使用Tomcat部署静态网站(重点)

什么是web资源?web资源都是需要通过浏览器下载到本地再执行的。符合web应用的其目录结构标准如下所示(开发时的目录结构):

├── pom.xml                             # 依赖管理文件
├── src/                                # java源码目录
│   └── main/
│       ├── java/                       # 主要存放编写的java程序
│       │   └── com.ermao.servlet/
│       │       └── Servlet.java
│       ├── resources/                  # 存放java应用程序的配置文件,如:bean,properties文件等
│       └── webapp/                     # Web应用程序的根目录,属于此Web应用程序的所有文件都存放在这个目录下
│           ├── WEB-INF/                # 存放Web应用程序的部署描述符文件 web.xml
│           │   ├── web.xml             # web.xml文件包含Web应用程序的配置和部署信息
│           │   └── lib/                # 存放Web应用程序需要用到的JAR文件,这些JAR文件中可以包含Servlet、Bean和其他有用的类文件
│           ├── index.jsp               # 首页信息
│           └── static/                 # 前端的静态资源目录,或者应用需要下载的文件等。
│               ├── css/
│               │   └── animate.css
│               ├── files/
│               │   └── dept.csv
│               ├── images/
│               │   └── u=1539816938,3284839683&fm=214&gp=0.jpg
│               └── js/
│                   └── jquery-3.4.1.min.js

在实际应用访问阶段,请求实际是到web打包的war包中,去查找静态资料,Servlet 规范中定义了 web 应用程序的目录层次:

[站外图片上传中...(image-836797-1592722636696)]

  • WEB-INF目录下的classes和lib目录都可以存放Java的类文件,在Servlet容器运行时,Web应用程序的类加载器将首先加载classes目录下的,其次才是lib目录下的类。
    • 如果这两个目录下存在同名的类,起作用的将是classes目录下的类
  • WEB-INF 是一个特殊的目录(所有字母都要大写)。这个目录并不属于Web应用程序可以访问的上下文路径的一部分,对客户端来说,这个目录是不可见的。但该目录下的内容对于Servlet代码是可见的

  1. C/S架构 引用于百度百科

  2. B/S架构 引用于百度百科

  3. WebLogic 引用于百度百科

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,132评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,802评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,566评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,858评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,867评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,695评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,064评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,705评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,915评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,677评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,796评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,432评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,041评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,992评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,223评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,185评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,535评论 2 343