我们在学习了J2EE的十三个规范之后,只是对他们有了一个简单的认识,而接下来需要我们做的就是一个个研究,进行深入学习。在十三个规范中,比较常用的有JSP,Servlet,EJB,JNDI等,那么今天我们就来介绍一下Servlet。

1、概念

一个servlet就是Java编程语言中的一个类,它被用来扩展服务器的性能,服务器上驻留着可以通过“请求-响应”编程模型来访问的应用程序。虽然servlet可以对任何类型的请求产生响应,但通常只用来动态扩展Web服务器的应用程序。Java Servlet技术为这些应用程序定义了一个特定于HTTP的 servlet类。

2、原理

当客户端浏览器向服务器请求一个 Servlet 时,服务器收到该请求后,首先到容器中检索与请求匹配的 Servlet 实例是否已经存在。

若不存在,则 Servlet 容器负责加载并实例化出该类 Servlet的一个实例对象,接着容器框架负责调用该实例的 init() 方法来对实例做一些初始化工作,然后Servlet 容器运行该实例的 service() 方法。

若 Servlet 实例已经存在,则容器框架直接调用该实例的 service() 方法。

service() 方法在运行时,自动派遣运行与用户请求相对应的 doXX() 方法来响应用户发起的请求。

通常,每个 Servlet 类在容器中只存在一个实例,每当请求到来时,则分配一条线程来处理该请求。

3、作用

当使用交互式 Web 站点时,您所看到的所有内容都是在浏览器中显示的。在这些场景背后,有一个 Web 服务器接收会话 中来自于您的请求,可能要切换到其他代码(可能位于其他服务器上)来处理该请求和访问数据,并生成在浏览器中显示的结果。

servlet 就是用于该过程的网守(gatekeeper)。它驻留在 Web 服务器上,处理新来的请求和输出的响应。它与表示无关,实际上也不它应该与表示有关。

您可以使用 servlet 编写一个流,将内容添加到 Web 页面中,但那通常也不是一个好办法,因为它有鼓励表示与业务逻辑的混合的倾向。

实现过程:

1. 获取用户的请求,取得用户输入的显示参数,获取浏览器生成的隐式参数—– 获取请求

2. 调用模型层业务类的具体业务方法,将参数传递给业务方法,与数据库进行交互。获取业务方法返回的模型数据。

3. 根据模型层返回的模型数据,进行流程控制(转发、重定向)。

4、优缺点

(1)优点

可移植性好:Servlet是用Java语言编写的,具有完善的Servlet API标准,企业编写的Servlet程序,可以轻松地移植到其他服务器中。

执行效率高:Servlet请求到来的时候激活Servlet,请求处理完,等待新的请求,新的请求将生成一个线程而不是进程。

使用方便:Servlet可以轻松地处理HTML表单数据,并读取和设置HTTP头,处理Cookie,跟踪会话。

(2)缺点:

web.xml配置量太多,不利于团队开发;

servlet具有容器依赖性,不利于单元测试;

servlet处理的请求很局限

5、总结

在此,我们认识到了Servlet的运行机制,知道了它相当于一个控制器,这让我们想起来什么呢,那就是在MVC中的Controller,对,它们的功能非常相似,说白了,Servlet就是一个控制器,这样,我们理解起来就简单了。所以我们要将新知识与旧知识联系起来,这样才能构建自己的知识网。

Java学习——Servlet是什么相关推荐

  1. Java学习——servlet简单学习

    躬自厚而薄责于人,则远怨矣. --<论语> 前言:个人学习内容,记录一下,略显粗浅. 准备:了解前端知识,并下安装好Tomcat,若没有请看上一篇: Tomcat下载和安装 目录 一.写个 ...

  2. html与java接口,JavaWeb学习——Servlet相关的接口和类

    JavaWeb学习--Servlet相关的接口和类 摘要:本文主要学习了Servlet相关的接口和类. Servlet的接口和类 三种方式 实现Servlet有三种方式: 实现javax.servle ...

  3. 【暑假学习笔记】之——用Intellij idea新建一个java web+Servlet项目(有实例)——idea中快速重写父类的方法

    Intellij idea中快速重写父类方法 在写java文件时,有时候需要重写父类方法,但在idea中创建java文件时并不会像eclipse一样可以选择父类,但是重写父类方法其实只需要这样做: 鼠 ...

  4. 我的WEB之路(一)-2.JAVA学习路线

    第一阶段:针对性夯实JAVA基础 课程名称 核心要点 完成目标 Java基础入门 搭建Java开发和运行环境等,IDE工具的学习和使用,Java语言基础,数据类型,运算符,条件和循环,数组使用等,Ja ...

  5. 转:Java学习路线图,专为新手定制的Java学习计划建议

    转自:http://blog.csdn.net/jinxfei/article/details/5545874 怎么学习Java,这是很多新手经常会问我的问题,现在我简单描述下一个Java初学者到就业 ...

  6. Java学习---RMI 技术分析[Hessian]

    一.什么是Hessian Hessian 是一个基于 binary-RPC 实现的远程通讯 library.使用二进制传输数据.Hessian通常通过Web应用来提供服务,通过接口暴露.Servlet ...

  7. 透露|Java学习的最后一点小秘密

    2019独角兽企业重金招聘Python工程师标准>>> 版权声明:本文为北京尚学堂原创文章,未经允许不得转载. 好久了,都想向学习JAVA的新人写点东西,因为我实在看不下去了,看不下 ...

  8. java 学习写架构必会几大技术点

    java 学习写架构必会几大技术点 关于学习架构,必须会的几点技术  1. java反射技术  2. xml文件处理  3. properties属性文件处理  4. 线程安全机制  5. annoc ...

  9. java html提取_2020年全新Java学习路线,含配套资料,更易上手 - 打不过就跑吧

    新的一年来临,突如其来的疫情打破了平静的生活! 在家的你是否很无聊,如果无聊就来学习吧! 世上只有一种投资只赚不赔,那就是学习!!! 我在2020年升级了Java学习线路图,硬核升级,免费放送! 学完 ...

  10. Java学习从入门到精通

    Java Learning Path (一).工具篇 一. JDK (Java Development Kit) JDK是整个Java的核心,包括了Java运行环境(Java Runtime Envi ...

最新文章

  1. Fib(兔子问题)python实现多种方法
  2. MySQL导入/导出数据
  3. 1099 Build A Binary Search Tree (30 分)【难度: 一般 / 知识点: 建立二叉搜索树】
  4. python 如何获取列表(List)中指定元素的下标? index() enumerate() 获取重复元素下标
  5. 使用yum来下载RPM包而不进行安装
  6. [USACO18JAN][luoguP4183 ]Cow at Large P
  7. 1231 sqlserver_sqlserver 删除表中 指定字符串
  8. FPGA串口(UART)通信协议制定与设计思路详解示例
  9. 57张PPT彻底搞清楚区块链技术。。
  10. 春节期间小游戏同时在线人数最高达2800万人/小时
  11. android byte转string_Dig101 - Go之string那些事
  12. 安装ansible自动运维工具
  13. HTTP、Asp.net管道与IIS
  14. java实现wps函数IRR,Excel表格技巧—如何用IRR函数算内部收益率
  15. html表格(table)的基本结构
  16. Spark算子:RDD行动Action操作–aggregate、fold、lookup;reduce/fold/aggregate区别
  17. Gitee+PicGo+Typora图床搭建丨出现 Error: You must be logged in to use 的解决方法
  18. postman数据保存在哪里_Postman教程——使用数据文件
  19. java 借助modbus协议实现与硬件之间的通讯
  20. ubuntu18.04安装roboware studio

热门文章

  1. Diablo2oo2s Universal Patcher(文件补丁工具) 2.18.3 绿色汉化版
  2. clearcase命令
  3. 计算机算法基础总结(借鉴、整理)
  4. 中大型企业的固定资产管理办法
  5. SCADA电力系统基础业务知识
  6. linux网络编程(一)
  7. 硬件知识:打印机常见的故障及维护,值得收藏!
  8. CAD字体显示不出来怎么办?
  9. 凤凰新闻app sn
  10. 倪光南、求伯君“出山”:爱解 Bug、无惧“35岁魔咒”、编码之路痛并快乐!...