当前位置: 首页 > news >正文

Servlet开篇

  • Servlet开篇
前面我已经说过好多遍了,如何学习好一个东西其实就是2个问题:
1,这个东西是干嘛的?为什么要玩这个东西?
2,怎么样就玩好这个东西了?具体的应该玩这个东西的什么?

其实现在对于我来说并不是说学习一个东西,说白了就是想玩一个东西,这里的玩就想深入的研究一下这个东西的源码,更加全面的来把控这个东西。实践是最好的学习方式,废话不多说了,现在开始Servlet之旅。

  • Servlet是什么?为什么要玩Servlet?
Servlet是JavaEE(Java系统平台企业版)的一部分,它建立在JavaSE的基础上,为开发和部署企业应用程序提供API和服务,将JavaSE和JavaEE的服务和库结合在一起有助于开发独立于系统平台、基于Web的Java应用。


B/S可以理解为从过去的C/S结构发展而来的,以通用的浏览器为客户端,由服务器通过请求响应的方式和客户端交流信息。由于浏览器、服务器的多种多样,就需要一种方式为浏览器与服务器解耦和,使一个浏览器可以访问不同的服务器,一个服务器也可以和不同的浏览器通信,HTTP协议就是这个统一的关键。浏览器与服务器厂商共同遵守的顶级Web协议,浏览器只负责发送或接收解析遵守此协议的信息,服务器只负责响应或发送遵守此协议的信息,把从前C/S结构中客户端与服务器的紧密性解开了。从此,厂商再也不用为了维护客户端的版本更新而伤财费力,像IE浏览器,已经嵌在系统中,用户也不需要再为安装哪种客户端,使用哪个厂商的服务而大伤脑筋。


一个C/S结构的应用,客户端向服务器发送信息,从服务器得到响应,服务器解析客户端的信息,将处理结果返还给客户端。在这个应用中,服务器为了响应多个客户端,需要多进程或者多线程编程。
抛开复杂的东西不谈,不同的B/S应用,服务器端最基本的:监听客户端连接,提供服务,销毁客户端不用的资源等,这些内容是每个C/S结构应用都需要的,而对于B/S结构的应用而言,这些内容也是基本相同的,每写一个应用都要做这些重复的工作,是很费时费力的。
既然在Web这种B/S结构应用中,客户端与服务器通信的协议已经固定了,那么能否再把相同的服务器端代码再提取出来,使这些代码与业务相关的代码分离,从而达到让一个服务器可以服务不同的应用,让同一个应用也可以跑在不同的服务器上呢?这是否就需要在应用与服务器间建立一套协议呢?


这就是一套规范,服务器只负责调用规范中的API给应用提供服务,而服务器为了能够调用到我们具体的业务逻辑方法,就需要我们去实现这套API中接口或类的固定方法,服务器与应用的业务实现者通过这个规范交流,无论不同的服务器内部如何实现,它与业务实现者的交流是通过API中规范的接口或类中的方法,无论多么复杂的业务逻辑,业务实现者想要返回处理结果给客户也要通过这套API。而这套API就需要服务器与业务实现者共同遵守。这样就把开发者从与服务器的交流中解放出来,使他们更专注于业务的开发中。这也就是JavaEE规范起的作用。


Servlet是JavaEE中的一部分,它位于Web层,负责处理客户请求并对客户请求做出响应,为客户端提供动态的内容,是客户端与应用程序交流的桥梁,主要服务是在标准的请求响应结构中与客户交换和传送数据。


容器:普通的玻璃容器可以用来装水,JavaSE中数组容器、集合容器可以用来装一组相同对象,JavaEE的容器里面装的是组件。无论是集合容器还是JavaEE的容器,里面内容(组件)的管理依靠容器,组件之间的交流也要依靠容器,容器的作用就是为这些组件提供运行环境以及所需要的服务。JavaEE的容器可以用来接收请求,把用户的需求影射到某个资源(如我们写好的Servlet上),再由容器把响应信息发送给客户。容器是由希望在自己的产品中采用Servlet技术的厂商实现的(通常是在Web服务器中)


Servlet:属于JavaEE中的Web组件,容器负责实例化、初始化、调用和销毁部署在其中的Servlet组件。Servlet实际上就是一个Java类,用来动态处理请求以及构造响应信息,它可以动态生成Html的Web页面做为请求的响应,还可以向客户端发送其他格式的数据,如串行化的Java对象、XML等。这些Servlet就是在一个Servlet容器中运行,由容器管理,访问由容器提供的服务。Servlet是由想要使用JavaServlet技术开发Web应用的程序员编写的,并部署到Web应用程序中。


OK,认真的看过上面的介绍,相信我们自己都有感觉了。Servlet就是BS架构中的服务器端小程序。从广义上来讲,Servlet 规范是 Sun 公司制定的一套技术标准,包含与 Web 应用相关的一系列接口,是 Web 应用实现方式的宏观解决方案。而具体的 Servlet 容器负责提供标准的实现。从狭义上来讲,Servlet 指的是 javax.servlet.Servlet 接口及其子接口,也可以指实现了 Servlet 接口的实现类。Servlet 作为服务器端的一个组件,它的本意是“服务器端的小程序” 。Servlet 的实例对象由 Servlet 容器负责创建Servlet 的方法由容器在特定情况下调用;Servlet 容器会在 Web 应用卸载时销毁 Servlet 对象的实例。

下面贴2张图片:1,Web应用运行模式


2,通过网页驱动服务器端的 Java 程序。在网页上显示 Java 程序返回的数据。



  • 怎么样就玩好这个东西了?具体的应该玩这个东西的什么?
之后我会认真的把Servlet的每一个细节都整理完,其中的内容包括:Servlet继承体系,Servlet常用API,Servlet生命周期,Servlet常用操作等等。



转载于:https://www.cnblogs.com/LinkinPark/p/5233030.html

相关文章:

  • Linode Centos6.5从零开始装环境...流水账
  • 在Linux系统中如何识别U盘
  • sql语句中in与exist not in与not exist 的区别
  • android 关于 android sdk manager 更新,下载慢的问题
  • (笔试题)合法字符串
  • 【重磅】大众点评运维架构图文详解 @马哥教育联合创始人张冠宇
  • linux总结
  • 6月又过去一大半了。
  • 通过Exchange Server 中的OWA页面找回被删除的邮件
  • 基于socket.io的实时消息推送
  • 找规律 UVALive 6506 Padovan Sequence
  • 图书管理系统——测试与调试
  • .net 发送邮件
  • Launch Screen在iOS7/8中的实现
  • Bootstrap系列 -- 17. 复选框checkbox和单选择按钮radio
  • python3.6+scrapy+mysql 爬虫实战
  • Babel配置的不完全指南
  • ECMAScript6(0):ES6简明参考手册
  • gulp 教程
  • Java IO学习笔记一
  • MySQL-事务管理(基础)
  • Python代码面试必读 - Data Structures and Algorithms in Python
  • Python利用正则抓取网页内容保存到本地
  • Python语法速览与机器学习开发环境搭建
  • React-flux杂记
  • select2 取值 遍历 设置默认值
  • SpringBoot 实战 (三) | 配置文件详解
  • Stream流与Lambda表达式(三) 静态工厂类Collectors
  • Vue2.0 实现互斥
  • 高性能JavaScript阅读简记(三)
  • 回顾2016
  • 记录一下第一次使用npm
  • 区块链共识机制优缺点对比都是什么
  • 说说动画卡顿的解决方案
  • 算法系列——算法入门之递归分而治之思想的实现
  • 一、python与pycharm的安装
  • 移动端唤起键盘时取消position:fixed定位
  • 移动互联网+智能运营体系搭建=你家有金矿啊!
  • Android开发者必备:推荐一款助力开发的开源APP
  • ionic异常记录
  • #QT(智能家居界面-界面切换)
  • #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)
  • (01)ORB-SLAM2源码无死角解析-(56) 闭环线程→计算Sim3:理论推导(1)求解s,t
  • (02)vite环境变量配置
  • (1)(1.11) SiK Radio v2(一)
  • (android 地图实战开发)3 在地图上显示当前位置和自定义银行位置
  • (C#)Windows Shell 外壳编程系列4 - 上下文菜单(iContextMenu)(二)嵌入菜单和执行命令...
  • (二十三)Flask之高频面试点
  • (附源码)spring boot智能服药提醒app 毕业设计 102151
  • (附源码)小程序 交通违法举报系统 毕业设计 242045
  • (强烈推荐)移动端音视频从零到上手(上)
  • (原創) X61用戶,小心你的上蓋!! (NB) (ThinkPad) (X61)
  • (转)GCC在C语言中内嵌汇编 asm __volatile__
  • (转)Google的Objective-C编码规范
  • .net core使用RPC方式进行高效的HTTP服务访问