servlet的由来
2019独角兽企业重金招聘Python工程师标准>>>
动静态网页技术
首先说下访问网页的大概过程:
你在浏览器中输入网址,按下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
servlet的由来相关推荐
- 从 Servlet 入手带你看架构和框架设计的套路
以下代码相信大家都很熟悉,大学时学 Java Web 都写过这样的代码. 从第一次接触 Servlet 到之后的很长一段时间内,我都没理解 Servlet 是个什么玩意? 为什么要有 Servlet ...
- Web 容器、HTTP 服务器 、Servlet 容器区别与联系
首先浏览器发起 HTTP 请求,像早期的时候只会请求一些静态资源,这时候需要一个服务器来处理 HTTP 请求,并且将相应的静态资源返回. 这个服务器叫 HTTP 服务器. 简单点说就是解析 ...
- servlet的url-pattern匹配规则
目录 1 url-pattern匹配规则说明 2 四种匹配规则优先顺序 2.1 精确匹配 2.2 路径匹配 2.3 扩展名匹配 2.4 缺省匹配 3 需要注意的问题 3.1 路径匹配和扩展名匹配无法同 ...
- 【2021软件创新实验室暑假集训】SpringMVC框架(设计原理、简单使用、源码探究)
系列文章目录 20级 Java篇 [2021软件创新实验室暑假集训]计算机的起源与大致原理 [2021软件创新实验室暑假集训]Java基础(一) [2021软件创新实验室暑假集训]Java基础(二) ...
- 【历史】 apache catalina servlet tomcat 命名的由来
上世纪八十年代,当互联网开始在美国大学流行的时候,美国计算机名校伊利诺伊大学香槟分校(UIUC)的国家超级计算应用中心(National Center for Supercomputing Appli ...
- JAVA学习篇--Servlet详解
Servlet由来 做过BS项目的人都知道,浏览器能够根据HTML静态标记语言来显示各式各样的网页.但是如果我们需要在网页上完成一些业务逻辑:比如登陆验证.或者说网页显示的内容在服务器的数据库中.如果 ...
- Servlet一次乱码排查后的总结
为什么80%的码农都做不了架构师?>>> 由来 在写一个小小的表单提交功能的时候,出现了乱码,很奇怪request上来的参数全部是乱码,而从数据库查询出来的中文显示到页面正常, ...
- j2ee servlet 和 threadlocal ,synchronized 与 web容器
在传统的Web开发中,我们处理Http请求最常用的方式是通过实现Servlet对象来进行Http请求的响应.Servlet是J2EE的重要标准之一,规定了Java如何响应Http请求的规范.通过Htt ...
- JSP/Servlet中的汉字编码问题
JSP/Servlet中的汉字编码问题 问题的起源 每个国家(或区域)都规定了计算机信息交换用的字符编码集,如美国的扩展 ASCII码, 中国的 GB2312-80,日本的 JIS 等,作为该国家/区 ...
最新文章
- 无需写代码的高颜值富集分析神器
- log4j写入mysql数据库_log4j日志写入数据库
- oracle表空间,角色,权限,表,索引,序列号,视图,同义词,约束条件,存储函数和过程,常用数据字典,基本数据字典信息,查看VGA信息,维护表空间,创建表空间等信息
- 32为Linux安卓AVD启动报错
- javaweb 初学建议
- everything is nothing
- ios开发学习-指示器(HUD)效果源码分享
- 面试准备——mybatis相关
- V8声卡软件调试教程
- TM/QQ默认表情全部丢失的解决办法
- 用计算机计算实际利率,教你计算信用卡分期真实利率,算完大吃一惊!
- 云服务器搭建kms服务器-vol版本
- 【Git】Git国内官网下载地址、淘宝镜像下载地址以及卸载安装
- 如何让OpenwrtX86和win7双系统共存在一块硬盘
- _, predicted = torch.max(outputs, 1),_,的作用
- 物料主数据的维护状态
- 2021万向区块链黑客马拉松圆满收官
- java8 JDK1.8 API 中文 翻译版 java帮助文档
- FreeRTOS之freeconfig.c(S32k144)
- vmtools的安装和使用
热门文章
- 前端请求接口post_接口自动化测试-WEB资讯专栏-DMOZ中文网站分类目录
- oracle fs1 2多少u,甲骨文FS1系列闪存的“大道至简”
- php关联图片,PHP关联链接添加方法
- python query方法_Pandas dataframe.query方法语法
- linux如何运行qt源码,Linux/Ubuntu下编译Qt4.8.2源码
- java套接字客户端_使用Java从客户端套接字读取数据(Read data from a client socket in Java)...
- mysql用户信息备份还原_mysql迁移之新建用户、备份还原数据库
- matlab与专业应用,MATLAB应用技术--在电气工程与自动化专业中的应用
- (九)linux中断编程
- (五)C语言之二维数组