Servlet(3)—Servlet

传智博客JavaWeb经典面试题目 传智博客 Java面试题目 ,有张孝祥老师亲自总结被一一详细解答。 立即下载
  1. 基本知识:
    java Servlet是和平台无关的服务端组件,它运行在Servlet容器中,Servlet容器负责Servlet和客户的通信以及调用Servlet方法,Servlet和客户的通信采用“请求/响应”模式。
    Servlet是一种独立平台和协议的服务端的java应用程序,处理请求的信息并将其发送到客户端,Servlet的客户端可以提出请求并获得该请求的响应,它可以是任意的java应用程序、浏览器、或其他设备。
    Servlet可以生成动态的web页面,它担当web浏览器或其他HTTP客户程序发出的请求、与HTTP服务器上的数据库或应用程序之间交互的中间层,对所有
    的客户端请求,只需要创建一次Servlet实例,因此节约的大量的内存。

  2. 功能:

    • 创建并返回基于客户请求的动态HTML页面
    • 创建可嵌入到现有的HTML页面中的部分HTML页面
    • 与其他服务器资源进行通信
  3. Servlet容器响应客户请求的过程
    ————> ————>ServletRequest
    客户—Servlet容器—Servlet
    <———— <————ServletResponse
    步骤:
    ①Servlet引擎检查是否已经装载并创建了该Servlet实例对象,如果是执行第四步,否则执行第二步。
    ②装载并创建该Servlet的一个实例对象:调用该Servlet构造器。
    ③调用Servlet实例对象的init()方法。
    ④创建一个用于封装请求的ServletRequest对象和一个代表响应消息的ServletResponse对象,然后调用Servlet
    的service()方法并将请求和响应的对象作为参数传递进去。
    ⑤Web应用程序被停止或重新启动之前,Servlet引擎将卸载Servlet,并在卸载之前调用Servlet的destory()方法。

  4. Servlet生命周期方法(以下方法都是Servlet容器负责调用)

    • 构造器:只被调用一次,只有第一次请求Serlet时,创建Servlet实例,调用构造器。这说明Servlet是单实例的。
    • init():只调用一次,在创建好实例之后立即调用,用于初始化当前Servlet
    • service():被多次调用,每次请求都会调用service(),实际用于响应请求
    • destory():只被调用一次,在当前Servlet所在的web应用程序被卸载前调用,用于释放当前Servlet所占用的资源。
  5. load-down-startup参数:可以指定创建Servlet实例的时机。
    为负数则在第一次请求时创建,为0则在Servlet容器加载时创建实例,数越小,创建越早
    配置在Servlet节点中:
<!-- 配置和映射Servlet -->
<servlet>
<!-- 这个名字随意起 -->
    <servlet-name>hello</servlet-name>
    <!-- 全类名:servlet.HelloServlet 实际的物理文件-->
    <servlet-class>servlet.HelloServlet</servlet-class>
    <!-- 指定Servlet实例创建的时机 -->
    <load-on-startup>1</load-on-startup>
</servlet>      

6 . Servlet注册与运行
Servlet程序必须通过Servlet容器来启动,并且存储目录有特殊要求,需要存储在/WEB-INF/classes目录中。
Servlet程序必须在web应用程序的web.xml文件中进行注册和映射他、其访问路径,才可以被Servlet引擎加载和被外界访问。
一个Servlet元素用于注册一个Servlet,它包含两个重要子元素<servlet-name>和<servlet-class>
分别用于设置Servlet的注册名称和完整类名(全类名)。
一个<servlet-mapping>元素用于映射一个已注册Serlvet的对外访问路径,它包含两个<servlet-name>和<servlet-pattern>于指定Servlet注册名称和Servlet对外访问路径。
例如:

 <!-- 注册Servlet -->
          <servlet>
            <servlet-name>hello</servlet-name>
            <servlet-class>firstServlet.HelloServlet</servlet-class>
          </servlet>
         <!-- 映射Servlet路径 -->
          <servlet-mapping>
            <servlet-name>hello</servlet-name>
            <url-pattern>/hello</url-pattern>   
          </servlet-mapping>

          <servlet-mapping>
            <servlet-name>hello</servlet-name>
            <url-pattern>/hello1</url-pattern>
          </servlet-mapping>

注意:若是手动访问Servlet,则直接<url-pattern>中的值但是在开发过程之中,Servlet是表单提交时自动访问,所以一般情况下<url-pattern>中的值为from表单中action的值

7 . Servlet元素的其他子节点:

  <!-- 配置初始化参数,且节点必须在load-on-startup之前 -->
          <servlet> 
            <init-param>
                <param-name>user</param-name>
                <param-value>root</param-value>
            </init-param>
            <init-param>
                <param-name>password</param-name>
                <param-value>1230</param-value>
            </init-param>
          </servlet>

8 . 细节
一个<servlet>节点可以配多个<servlet-mapping>,即多个<servlet-mapping>元素的子元素<servlet-name>
设置值可以是同一个Servlet的注册名。
在Servlet映射到的URL中也可以使用通配符,但是只能使用两种固定格式一种是.扩展名,另一种是/开头并以/*结尾

 <servlet-mapping>
            <servlet-name>AnyName</servlet-name>
            <url-pattern>*.do</url-pattern> 
         </servlet-mapping>
         <servlet-mapping>
            <servlet-name>AnyName</servlet-name>
            <url-pattern>/action/*</url-pattern>    
         </servlet-mapping> 
STM32 使用SYN6288语音模块 本篇文章带大家学习一下SYN6288语音模块,这个模块可以用于车载设备,语音电子书等众多产品当中,而且这个模块支持多种编码格式,GB2312,GBK等字符编码格式。SYN6288语音合成模块是一种语音合成设备,其可实现文字转语音功能,将输入的文字信息通过内部的处理和合成,输出相对应的语音信息。SYN6288模块具有语音合成质量高、输出音质好、使用方便等特点,因此广泛应用于语音播报、语音提示、语音识别、智能家居、智能家电、安防监控等领域。支持多语言:包括中文、英文、日文、韩文等多种语言。 阅读详情

相关推荐

【车辆动力学】专栏目录汇总

车辆动力学知识目录汇总

CrazyRabbit的博客 1713

配置servlet的几个节点各表示什么

转自:https://zhidao.baidu.com/question/436441199.html 首先这四个都是注册一个servlet组件必须的四个节点 &lt;servlet-name&gt; 这个是我们要注册servlet的名字,一般跟Servlet类名有关 &lt;servlet-class&gt; 这个就是指向我们要注册的servlet 的类地址, 要带包路径 以上两个包在一个se...

elice_的博客 2090

定制PYNQ的overlay

一、用HLS生成一个定制IP(加速器)(1)首先打开vivado hls,本人的版本是2017.2,点击创建一个新工程。(2)设置工程名和路径,顶层函数设置为add,创建一个新的C++程序,名字叫做adder.cpp,不用在testbench中添加文件。选择板子的时候搜索xc7z020clg400-1,这是PYNQ的板子号,选择完成。             (3)在左侧的菜单栏里选择Sourc...

bramblewalls的博客 1万+

Servlet知识点

Servlet编写步骤:   A:自定义类继承HttpServlet并根据需要重写相关方法   B:在web.xml文件中注册Servlet       &lt;servlet&gt;       &lt;servlet-name&gt;HelloServletDemo01&lt;/servlet-name&gt;       &lt;servlet-class&gt;com.hsj.servle...

YMY6666的博客 950

Lenovo 拯救者15ISK硬件升级实战:从内存到固态硬盘的全面优化

本文详细介绍了为联想拯救者15ISK笔记本电脑进行硬件升级的完整实战指南。通过评估升级可行性,指导如何挑选兼容的内存条与NVMe固态硬盘,并提供详细的拆机安装步骤与系统安装避坑技巧。升级后,笔记本的开机速度、软件加载及多任务处理能力获得飞跃式提升,让老旧设备重获新生。

weixin_29310631的博客 554

图像评价之计算PSNR、SSIM、MSE、LPIPS和NIQE评价指标

如果代码对你的研究有所帮助,请为该仓库点上小星星。

书山有路,学海无涯! 2635

Servlet 学习总结(四)

Servlet 学习总结(四)

m0_60439135的博客 1068

HFSS仿真的后处理结果,如何根据天线表面的电流密度分布对天线进行优化?

在HFSS仿真中,天线表面的Jsurf​是最直观、最有价值的诊断工具之一。它不仅告诉你天线“能不能工作”,还能告诉你“为什么工作”以及“哪里出了问题”。

degogmy的博客 1156

web.xml中Servlet 配置的四个节点

,,, 首先这四个都是注册一个servlet组件必须的四个节点 这个是我们要注册servlet的名字,一般跟Servlet类名有关 这个就是指向我们要注册的servlet 的类地址, 要带包路径 以上两个包在一个servlet 节点之下. 是用来配置我们注册的组件的访问路径,里面包括两个节点 一个是 这个要与 前面写的servlet那么一直 另一个是 配置这个组件的访问

zhaokai621的博客 1247

详细解释SigLIP的原理,为什么有些多模态模型喜欢用他?怎么应用于机器人控制呢

详细解释SigLIP的原理,为什么有些多模态模型喜欢用他?怎么应用于机器人控制呢。

具身机器人和通用AI 1225

一层一责,一聚合一包:DDD分层架构下的微服务代码模型、三重边界与服务数据协作

领域模型画得再清楚,落不进代码也是空谈。本文以一个可运行的客户中心微服务为线索,先对比整洁架构、六边形架构与DDD分层架构,指出三者共同守护的那条隔离核心业务的红线;再把DDD分层落成四个一级目录、以聚合为单位分包、一个聚合一个仓储的代码模型,拆解实体、聚合根、值对象、领域事件、领域服务与仓储的设计要点;随后厘清逻辑、物理、代码三重边界,并用检查器实测:干净代码零越界,拆出积分聚合时领域代码无需改动;注入九处越界后,必须先重构才能拆分。最后梳理服务调用三场景与PO、DO、DTO、VO的协作。

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 177万+

Servlet3与Servlet4

Servlet3 Servlet 3.0 新特性 异步处理支持:有了该特性,Servlet 线程不再需要一直阻塞,直到业务处理完毕才能再输出响应,最后才结束该 Servlet 线程。在接收到请求之后,Servlet 线程可以将耗时的操作委派给另一个线程来完成,自己在不生成响应的情况下返回至容器。针对业务处理较耗时的情况,这将大大减少服务器资源的占用,并且提高并发处理速度。 新增的注解支持:...

NickWU博客 4745

科研必备:15款顶尖AI科研工具全面分析汇总(持续更新ing)

科研必备:15款AI科研工具全面分析汇总(持续更新ing)

Code_流苏:在代码中寻诗意,在实践中觅真知 9629

Servlet系列之Servlet3异步

入门案例;

lonelymanontheway的博客 1355

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

异步Servlet3.0

传统的MVC框架如SpringMVC也无法摆脱Servlet的桎梏,都是基于Servlet来实现的。在Servlet 3.0之前,Servlet采用的方式处理HTTP请求,即每一次请求都是由某一个线程从头到尾负责处理。如果一个请求需要进行IO操作,比如访问数据库、调用第三方服务接口等,那么其所对应的线程将同步地等待IO操作完成,而IO操作是非常慢的,所以此时的线程并不能及时地释放回线程池以供后续使用,如果并发量很大的话,那肯定会造性能问题。为了解决这一问题,

pscool的博客 1089

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

servlet3与servlet4区别和实现

一、servlet3 记得servlet3的特性有以下几点: 1、异步处理支持:有了该特性,Servlet 线程不再需要一直阻塞,直到业务处理完毕才能再输出响应,最后才结束该 Servlet 线程。在接收到请求之后,Servlet 线程可以将耗时的操作委派给另一个线程来完成,自己在不生成响应的情况下返回至容器。针对业务处理较耗时的情况,这将大大减少服务器资源的占用,并且提高并发处理速度。 2、新增...

点点的博客 8670

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

servlet3异步_Servlet 3的异步Servlet功能

servlet3异步 在深入了解什么是异步Servlet之前,让我们尝试了解为什么需要它。 假设我们有一个Servlet,处理时间很长,如下所示。 LongRunningServlet.java package com.journaldev.servlet; import java.io.IOException; import java.io.PrintWriter; import ...

最佳 Java 编程 272

java servlet3特性,Servlet3中异步Servlet特性介绍

在Jave EE 6规范中,关于Servlet 3规范的相关功能增强,一直是让大部分用户忽略的,连直到最新的Spring MVC 3.2才支持Servlet 3的异步调用。这可能跟大部分用户使用的JAVE EE容器依然是旧的有关系(如支持Servlet 3规范的需要Tomcat 7,但目前不少用户还在使用Tomcat 6)。在本文中,将以实际的例子来讲解下Servlet 3规范中对异步操作的支持。...

weixin_34405084的博客 189

Servlet3教程

1. Servlet介绍Servlet是基于Java技术的web组件,容器托管的,用于生成动态内容。Servlet容器是web server或application server 的一部分,提供基于请求/响应发送模型的网络服务,解码基于 MIME 的请求,并且格式化基于 MIME 的响应。 Servlet 容器也包含了管理 Servlet 生命周期。Servlet有三大组件,Filter过滤器、Li

koflance的博客 5207

servlet3异步原理与实践

一、什么是Servlet servlet 是基于 Java 的 Web 组件,由容器进行管理,来生成动态内容。像其他基于 Java 的组件技术一样,servlet 也是基于平台无关的 Java 类格式,被编译为平台无关的字节码,可以被基于 Java 技术的 Web 服务器动态加载并运行。容器(Container),有时候也叫做 servlet 引擎,是 Web 服务器为支持 servlet 功能...

新栋BOOK 1万+

servlet2和servlet3

    servlet是用java编写的服务端程序,主要功能在于交互式的浏览和修改程序,生成动态Web内容。狭义的servlet是指java语言实现的一个接口,广义的servlet是指任何实现了这个servlet接口的类。这个过程为:    1.客户端发送请求至服务器端    2.服务器将请求信息发送至servlet    3.servlet生成响应内容并将其传给服务器,响应内容动态生成,通常取决...

车晋强的专栏 4584

Servlet3

Servlet3前言(Preface)1.增加员工功能功能分析与设计代码实现2.重定向完善提示功能重定向参考文献(References) 前言(Preface) 在 Servlet2 通过模拟注册案例,阐明了一些有关Servlet的基础问题,然后又通过,模拟查询员工案例,进一步深入,但是很遗憾,这个案例它没有把内容都这个,就是涵盖全,比如说,浏览器向服务器发送的数据,这个案例中就没有,然后呢,没有发送的数据,我们也没有解码请求乱码的问题,就这个也没涵盖到,响应倒是有,响应乱码解决,是涵盖到了,所以,这个案

qq_41765518的博客 835

Servlet3.0中Servlet的使用

相对于之前的版本,Servlet3.0中的Servlet有以下改进:l  支持注解配置。l  支持异步调用。l  直接有对文件上传的支持。        在这篇文章中我将主要讲这三方面的应用示例。 1.注解配置       在以往我们的Servlet都需要在web.xml文件中进行配置(Servlet3.0同样支持),但是在Servlet3.0中引入了注解,我们只需要在对应的Servlet类上使用

Elim的博客 6655

关于servlet3.0中的异步servlet

刚看了一下维基百科上的介绍,servlet3.0是2009年随着JavaEE6.0发布的: 到现在已经有六七年的时间了,在我第一次接触java的时候(2011年),servlet3.0就已经出现很久了,但是到现在,里边的一些东西还是没有能够好好地了解一下 最近在研究java的长连接,在了解jetty中的continuations机制的时候也重新了解了一下servlet3.0中的异步serv...

z69183787的专栏 768

servlet3:小示例

servlet课时3 小示例 package cam.xuedao.pojo; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServ

weixin_42380472的博客 203

servlet2和servlet3对比

   目前再来说servlet3,确实有点过时了,毕竟servlet3已经推出都好写年了,本来想自己在复习的过程中重新写一篇博文,但是看了看网上已有的博文,基本都已经写得很全面了,所以我只是进行了学习,博文进行了引用。 博文参考地址:http://www.cnblogs.com/D-xxm/archive/2013/03/01/2939210.html   一、介绍 Servlet 3....

iteye_4668的博客 686
上一篇: Servlet(2)—java项目下web应用程序
下一篇: Servlet(4)—一个简单的Servlet实例
T_P_F
博客等级 码龄11年 36粉丝 286原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值