servlet的由来

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

  • 动静态网页技术

首先说下访问网页的大概过程:

        你在浏览器中输入网址,按下enter键,此时浏览器代你做了很多事,简要说为:将你输入的这个网址作为目的地参数,向这个参数代表的web服务器发起了HTTP请求,服务器返回一个HTML页面,浏览器将这个页面呈现给你。

        WEB服务器都遵循HTTP规范,所有浏览器、web服务器都实现了HTTP协议规范,而HTTP协议是编程语言无关的,这样使得可以用MFC编的浏览器能访问Tomcat(由Java开发)的中Java Web应用网页。

网址你知道了,网页也显示了,到底是静态的还是动态的呢?

用例子好说些,比如歌手大赛:张三、李四、王五、赵六,

现在要展示每个参赛选手的简历网页,

简历信息主要包含姓名、靓照、性别、出生年月、身高、体重,特长等信息,

几个人的信息在报名时已经登记在excel表格中了。

  • 静态网页技术的做法:

根据excel表格给每个选手做一个HTML页面,共有四个网页存放在web服务器的目录下,访问的网址为:

http://www.jianli.com/zhangsan.html

http://www.jianli.com/lisi.html

http://www.jianli.com/wangwu.html

http://www.jianli.com/zhaoliu.html

web服务器根据网址在目录下找到对应的HTML文件,将其返回给浏览器。

有个需求静态网页是做不到的:显示网页被访问多少次!不可能每访问一次改一下这个HTML吧?

  • 动态网页技术的做法:

web服务器目录下很可能没有HTML页面。

首先访问网址一般会变成 http://www.jianli.com/geshou?name=xxx

web服务器收到网页请求后,将请求作为参数调用 帮助程序,帮助程序根据请求中名字的不同,到excel中查出具体信息,组装成一个HTML页面返回给服务器,服务器将这个页面传给浏览器。

就是上面的   帮助程序  真正实现了动态网页技术,现今被广泛使用的“帮助程序”有:

微软系的 : asp、aspx;

CGI系的:PHP,Perl,Python

Java系的:Servlet

为什么是servlet

  • Java有两种实现动态网页的方式:

1、Java Applet ,在浏览器端用Java applet实现,通过applet能够解释执行WEB服务器发过来的Java代码。这样浏览器必须安装插件,又受限于浏览器,所以Java代码不能太多和太复杂。

2、Server applet , WEB服务器不发Java代码,而去调用基于Java代码的server端applet,此即为servlet

因为servlet就是运行在web服务器中的普通Java程序,每个人可以随便写咯,必然导致混乱,所以出现了servlet规范,规定了WEB服务器对servlet的生命周期的调度:何时调用servlet、怎么调用servlet,何时清理servlet,servlet对请求处理的通用逻辑等。

遵循这个规范的服务器都可以称之为servlet容器。

servlet规范概要:


  Server创建一个Servlet的实例
  Server调用Servlet的init()方法
  一个客户端的请求到达Server
  Server创建一个请求对象
  Server创建一个响应对象
  Server激活Servlet的service()方法,传递请求和响应对象作为参数 
  service()方法获得关于请求对象的信息,处理请求,访问其他资源,获得需要的信息
  service()方法使用响应对象的方法,将响应传回Server,最终到达客户端。
       service()方法可能激活其它方法以处理请求,如doGet()或doPost()或程序员自己开发的新的方法。 
  
       对于更多的客户端请求,Server创建新的请求和响应对象,仍然激活此Servlet的service()方法,将这两个对象作为参数传递给它。如此重复以上的循环,但无需再次调用init()方法。一般Servlet只初始化一次(只有一个对象),当Server不再需要Servlet时(一般当Server关闭时),Server调用Servlet的Destroy()方法

 

初期servlet是在Java代码中组合拼装html,大量的out语句

JSP是在HTML中嵌入jsp标签(Java代码片段),然后编译成servlet,

接着出现了更好更快的标签及编译技术-struts,

 

后记

做Java web开发最好从基本的servlet写起,用最原始的servlet开发web应用之后,

再进入各种层面封装起来的框架的学习和整合会没那么多雾水,

各种框架出现的大量配置文件和java代码会弄晕你,

实在是搞不懂干什么用的,为何有这些东西,

这时请回过头来温习你最初的servlet项目,或许会有收获。

 

 

 

转载于:https://my.oschina.net/jingxing05/blog/750997

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/542519.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php header 文件大小,php获取远程文件大小及信息的函数(head_php

php获取远程文件大小及信息的函数(header头信息获取)阿里西西Alixixi.com开发团队在做一个客户系统时,需要做远程下载的功能,并实时显示进度条效果。所以,需要预先读取远程文件的大小信息,然后做为实时下载进度条的参数。功能函数…

Java ObjectInputStream readUnsignedShort()方法(带示例)

ObjectInputStream类readUnsignedShort()方法 (ObjectInputStream Class readUnsignedShort() method) readUnsignedShort() method is available in java.io package. readUnsignedShort()方法在java.io包中可用。 readUnsignedShort() method is used to read 2 bytes (i.e. …

python中info的用法_Python pandas.DataFrame.info函数方法的使用

DataFrame.info(self, verboseNone, bufNone, max_colsNone, memory_usageNone, null_countsNone) [source] 打印DataFrame的简要摘要。 此方法显示有关DataFrame的信息,包括索引dtype和列dtype,非空值和内存使用情况。 参数:verbose &#x…

第四次作业 孙保平034 李路平029

用C编写一个学生成绩管理系统 1、可以实现以下功能&#xff1a; cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 1.增加学生成绩 ☆ ★〓〓〓〓〓〓〓〓〓"<<endl; 2、用链表存储信息 * 程序头部的注释结束 3、约定的规范&#xff1a; 1界面设计简介&#xff0c;人性化…

php serialize error at offset,PHP Notice: unserialize(): Error at offset XX of XX bytes

之前同事在本地开发的时候&#xff0c;出现一个错误&#xff0c;如下图所示&#xff1a;字面意思就是反序列化错误&#xff0c;由此bug引申出来序列化和反序列化得应用&#xff0c;以及php array当key为string类型的数字值时&#xff0c;会发生什么情形。先来看序列化$str [1 …

Java ClassLoader setClassAssertionStatus()方法与示例

ClassLoader类setClassAssertionStatus()方法 (ClassLoader Class setClassAssertionStatus() method) setClassAssertionStatus() method is available in java.lang package. setClassAssertionStatus()方法在java.lang包中可用。 setClassAssertionStatus() method is used …

python怎么变各种颜色_python – 如何淡化颜色

有很多方法可以做到这一点.您如何选择这取决于您是否重视速度和简单性或感知均匀性.如果你需要它是真正统一的,你需要用颜色配置文件定义RGB颜色,你需要配置文件的原色,这样你就可以转换为XYZ,然后转换到LAB,你可以操作L通道. 大多数情况下,您不需要这样做,而是可以使用像Photo…

informatica中元数据管理

摘自&#xff1a; http://blog.itpub.net/28690368/viewspace-766528/ informaica是一个很强大的ETL工具&#xff0c;WORKFLOW MANAGER负责对ETL调度流程进行设计与管理和执行&#xff0c;informatica在资料库中提供以下表来存储调动流程的相关信息&#xff0c;以便WORKFLOW …

yii+php+当前目录,Yii应用的目录结构和入口脚本

以下是一个通过高级模版安装后典型的Yii应用的目录结构&#xff1a;~~~.├── backend├── common├── console├── environments├── frontend├── nbproject├── tests├── vendor├── composer.json├── composer.lock├── init├── init.bat├── …

8086 寻址方式_8086微处理器的不同寻址模式

8086 寻址方式Introduction: 介绍&#xff1a; Addressing mode tells us what is the type of the operand and the way they are accessed from the memory for execution of an instruction and how to fetch particular instruction from the memory. There are mainly 8 …

决策树的value是什么意思_从零开始的机器学习实用指南(六):决策树

类似SVM&#xff0c;决策树也是非常多功能的机器学习算法&#xff0c;可以分类&#xff0c;回归&#xff0c;甚至可以完成多输出的任务&#xff0c;能够拟合复杂的数据集&#xff08;比如第二章的房价预测例子&#xff0c;虽然是过拟合了。&#xff09;决策树也是很多集成学习的…

Hive中生成随机唯一标识ID的方法

2019独角兽企业重金招聘Python工程师标准>>> HIVE中处理的数据往往比较多&#xff0c;在处理数据的时候希望给处理得到的数据一个ID标识&#xff0c;这时候可以用到UUID。 UUID的算法的核心思想是结合机器的网卡、当地时间、一个随即数来生成UUID。从理论上讲&#…

php从网页获得数据,php根据URL获得网页内容

php 中根据url来获得网页内容非常的方便&#xff0c;可以通过系统内置函数file_get_contents(),传入url,即可返回网页的内容&#xff0c;比如获得百度首页的内容代码为&#xff1a;$html file_get_contents(http://www.baidu.com/);echo $html;就可以显示出百度首页的内容&…

2020知道python语言应用答案_2020知到Python语言应用答案章节期末答案

组合管理理论最早由哈维马科维兹于1962年系统的提出&#xff0c;他开创了对投资进行整体管理的先 公司型基金和契约型基金的区别&#xff0c;下列不包括&#xff08;&#xff09;。 A&#xff0e;资金的性质B&#xff0e;基金的营运依据C&#xff0e;基 我国&#xff08;&#…

如何在Bootstrap中使用Jumbotron和页面标头类?

Introduction 介绍 In the previous article, we have learned how Responsive column, Nesting Columns and offset Columns work and how to use them? I hope now, you all are comfortable with the grid system; what is it, how to use it and how we can use it for c…

python中的数字类型格式与运算,python数字数据类型

python数字数据类型1. 数字在我们很小的时候&#xff0c;父母便开始教我们数数&#xff0c;从1数到10&#xff0c;聪明的孩子可以数的更多。python支持3中数值类型整型(int)&#xff0c;通常称之为整型或整数&#xff0c;这个概念与我们小学时学过的整数是相同的&#xff0c;py…

getprocaddress得到为0_基于ZU+系列MPSoC芯片的USB3.0/2.0接口硬件设计

本文主要介绍Zynq UltraScale MPSoC系列芯片的USB3.0/2.0接口硬件设计。ZU系列MPSoC要实现USB3.0/2.0的全部功能&#xff0c;需要同时使用MIO和GTR。因为GTR接口中的USB接口只支持USB3.0&#xff0c;对USB2.0的支持需要通过MIO接口外接USB PHY实现。ZU系列MPSoC包括两个USB接口…

如何设置单词第一个字母大写_大写一行中每个单词的第一个和最后一个字母

如何设置单词第一个字母大写Problem statement: 问题陈述&#xff1a; Given an input line, capitalize first and last letter of each word in the given line. Its provided that the input line is in lowercase. 给定输入行&#xff0c; 将给定行中每个单词的第一个和最…

php如何编造简历,在简历里编造内容需要注意哪些问题?

在个人简历里编造内容可得有一定依据才行&#xff0c;总得为自己后期做个准备工作是不是&#xff1f;你编造的东西不只是给企业看一看而已&#xff0c;企业还会对这些内容作出进一步的判断&#xff0c;并且可能就其对你进行提问&#xff0c;如果你答不出来而曝光自己是在欺骗企…

Java LinkedList公共对象pollLast()方法(带示例)

LinkedList公共对象pollLast()方法 (LinkedList public Object pollLast() method) This method is available in package java.util.LinkedList.pollLast(). 软件包java.util.LinkedList.pollLast()中提供了此方法。 This method is used to retrieves the last or ending ele…