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开发团队在做一个客户系统时,需要做远程下载的功能,并实时显示进度条效果。所以,需要预先读取远程文件的大小信息,然后做为实时下载进度条的参数。功能函数…

第四次作业 孙保平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 …

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;就可以显示出百度首页的内容&…

如何在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…

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接口…

python编写学生成绩排序_Python实现按学生年龄排序的实际问题详解

前言 本文主要给大家了关于利用Python按学生年龄排序的相关内容&#xff0c;分享出来供大家参考学习&#xff0c;下面话不多说了&#xff0c;来一起看看详细的介绍&#xff1a; 问题&#xff1a;定义一个Class&#xff1a;包含姓名name、性别gender、年龄age&#xff0c;需要按…

前方危险-让很多“高逼格”高管深刻反思的文章

在很多的时候&#xff0c;现实会让我们每个人迷惑&#xff0c;周边的人和事可以让人极度的膨胀&#xff0c;你可以想吃了迷药一样&#xff0c;分不清是现实还是虚幻。很久以前&#xff0c;在公司的一次会议上&#xff0c;某主管告诉我们说&#xff0c;“他一个同事&#xff0c;…

自定义taglib引入失败_小程序拼团总失败?看看微信官方和开发者们怎么说

阅读时间&#xff1a;6m最懂小程序生态商业的自媒体可怕... 刚过国庆&#xff0c;南方还在短袖短裙&#xff0c;北方竟然都下雪了&#xff01;什么叫一天之内感受四季&#xff1f;晓程序观察(yinghoo-tech)的小伙伴们算是深刻体验了&#xff0c;穿着短袖上飞机&#xff0c;抵达…

Linux之基础I/O

目录 一、C语言中的文件操作 二、系统文件操作I/O 三、文件描述符fd 1、文件描述符的引入 2、对fd的理解 3、文件描述符的分配规则 四、重定向 1、重定向的原理 2、重定向的系统调用dup2 五、Linux下一切皆文件 一、C语言中的文件操作 1、打开和关闭 在C语言的文…

moore和mealy_Mealy机和Moore机的比较研究 目录

moore和mealyFinite automata may also have outputs corresponding to each input symbol. Such finite automata are known as finite automata with the output. 有限自动机还可以具有与每个输入符号相对应的输出。 这种有限自动机称为输出的有限自动机。 There are two fi…

机器视觉支架制作(带效果测试)

图像处理系统中&#xff0c;镜头、光源的选配&#xff0c;对于最后能否产生稳定的识别效果至关重要。而搭载镜头、光源的是支架。机器视觉的支架一般都是根据项目的具体需要进行配置的&#xff0c;搜索淘宝能够得到一些商品。 这些支架形状不一&#xff0c;价格在数百元到千元之…

redis rdb aof区别_理解Redis的持久化机制:RDB和AOF

什么是Redis持久化?Redis作为一个键值对内存数据库(NoSQL)&#xff0c;数据都存储在内存当中&#xff0c;在处理客户端请求时&#xff0c;所有操作都在内存当中进行&#xff0c;如下所示&#xff1a;这样做有什么问题呢&#xff1f;注 意文末有&#xff1a;3625页互联网大厂面…

python--批量下载豆瓣图片

溜达豆瓣的时候&#xff0c;发现一些图片&#xff0c;懒得一个一个扒&#xff0c;之前写过c#和python版本的图片下载&#xff0c;因此拿之前的Python代码来改了改&#xff0c;折腾出一个豆瓣版本&#xff0c;方便各位使用 # -*- coding:utf8 -*- import urllib2, urllib, socke…

linux touch权限不够,Linux下的Access、Modify、Change , touch的使用以及权限问题

每个文件在linux下面都会记录许多的时间参数&#xff0c;其实是有三个主要的变动时间&#xff0c;那么&#xff0c;这三个时间的意义又是什么&#xff1f;下面我们来介绍&#xff1a;* Modify time(mtime)当该文件的“内容数据”更改时&#xff0c;就会更新这个时间。内容数据指…

运用多种设计模式的综合案例_SpreadJS 纯前端表格控件应用案例:表格数据管理平台...

由某科技公司研发的表格数据管理平台&#xff0c;是一款面向业务和企业管理系统定制开发的应用平台&#xff0c;包括类 Excel 设计器、PC应用端和移动应用端等应用模块。该平台具备强大的业务配置和集成开发能力&#xff0c;对于企业客户的信息系统在管理模式、业务流程、表单界…

VS中C++ 项目重命名

应该都有过这样的经历&#xff0c;在Visual studio中创建解决方案&#xff0c;添加几个项目进去&#xff0c;然后开始愉快的敲代码...。写代码正欢的时候&#xff0c;却总是感觉那里有些不舒服&#xff0c;一细看&#xff0c;这项目名称取的真心挫&#xff0c;修改个吧。直接右…