Servelt在JavaEE开发中,占据着举足轻重的作用,起到了连接程序和服务器的重要功能。为何称其为规范呢?它规范了那些东西呢?对于Servlet对象又该如何认识它,了解它呢?

我们先来看一张图片:

这是一张对于我们JavaWeb项目运行流程的简化图,这里边出现了浏览器,服务器,项目程序,数据库四个实体,在这四个实体中间出现了http协议,Servlet规范,JDBC规范三个规则。JDBC前边介绍过,是由sun制定,各种数据库厂商实现,JAVA开发程序员调用的,在数据库厂商和Java程序员中间起到了规范的作用,需要两方都去遵守。而http协议则是由W3C制定的协议,需要浏览器厂商和服务器厂商来实现。而13规范之一Servlet则是由Sun制定,我们Java程序员来实现的,所以说是非常重要的。有了Servlet这套规范,我们的将我们编写的程序部署到Tomcat,weblogic,JBoss等服务器中,因为我们有这套规范约束着呢!下边我们来看一下Servlet的相关知识。

一,Servlet是什么?

简单来说Servlet就是满足我们Servlet规范的“服务器端的小Java程序”。

 /*** 需要我们实现J2ee中的Servlet接口(规范)* @author Administrator*/public class ServletExample implements Servlet {//在构造方法执行结束之后,对象创建完毕,init方法马上执行//只执行一次。这个方法我们称作初始化方法。//该方法调用的时候Servlet对象刚刚创建完毕,相当于人一生开始的受教育@Overridepublic void init(ServletConfig arg0) throws ServletException {}//这是一个Servlet对象的核心业务方法。我们主要把业务编写到这个方法中,用户请求一次,执行一次。//相当于人受完教育后进行工作为人民服务@Overridepublic void service(ServletRequest arg0, ServletResponse arg1)throws ServletException, IOException {}//当服务器容器关闭的时候,或者长时间没有用户再去访问这个Servlet//Servlet对象所占用的内存即将被释放,释放之前会由Tomcat容器自动调用该方法。//该方法在Servlet对象的内存被回收之前执行。//该方法执行的时候Servlet对象还没有被销毁。//该方法也是只执行一次。相当于人一辈子的结束。@Overridepublic void destroy() {}//下边两个是关于Servlet信息的方法@Overridepublic ServletConfig getServletConfig() {return null;}@Overridepublic String getServletInfo() {return null;}}

当然在Servlet+Jsp开发时,都是做的B/S开发,在JavaEE.Servlet.Http包下的HttpServlet已经实现了Servlet接口,我们只需要继承HttpServlet,根据我们页面传输的方式重写里边的doPost或者doGet方法,就可以直接写我们的业务程序了。是非常方便的。

二,Servlet的生命周期:

这里需要我们注意的是:Servlet对象,在服务器中是在“单实例多线程环境下”运行的,所以会存在线程安全的问题。

三,讲了Servlet是什么,生命周期,最后我们看一下Servlet的创建本质过程:

首先说一下,每使用一个Servlet时,我们需要在web.xml中进行相关的配置:

      <!-- 配置servlet --><servlet><servlet-name></servlet-name><!-- 上下关联的名字 --><servlet-class></servlet-class><!-- servlet类的真实路径 --></servlet><servlet-mapping><servlet-name></servlet-name><!-- 上下关联的名字 --><url-pattern></url-pattern><!-- servelt的访问路径 --></servlet-mapping>

创建过程需要按照它的生命周期来看:

1,创建:通过用户的请求路径,解析web.xml文件,获取Servlet的完整类名,通过反射进行实例化对应的Servlet对象:

Class c = Class.forName(“Servlet类全名”);

Servlet servlet = (Servlet)c.newInstance();

2,创建后进行初始化,调用init方法

servlet.init(config); //初始化方法,对象第一次被创建之后调用。只执行一次。(初始化时刻)

3,用户调用时,执行service方法:

servlet.service(request,response); //核心业务方法,用户访问一次必然执行一次。(执行多次)

……..

4,销毁:

servlet.destroy();

正好对应着上边的生命周期,这里想说的就是Servlet也是通过反射机制进行的创建,明白我们底层的创建过程。

Servlet在开发中起着举足轻重的作用,明白它的原理对我们以后的开发学习非常有用。

Servlet(一)——刨根问底相关推荐

  1. Ajax接收Java异常_java – 处理来自Servlet的Jquery AJAX响应中的异常

    我的servlet代码是 try{ //something response.setStatus(201); out.print("Data successfully saved" ...

  2. JavaEE学习笔记之Servlet

    同一用户的不同页面的共享数据 1.1 cookie技术 1.2 sendRedirect()转向 1.3 隐藏表单 1.4 session技术 ###session技术: 当用户打开浏览器,访问某个网 ...

  3. 【JavaWeb】servlet与http请求协议

    Servlet: 概念: server applet (服务端小程序)运行在服务器端的小程序 Servlet就是一个接口,定义了Java类被浏览器访问到(Tomcat识别)的规则. 将我我们自定义一个 ...

  4. 使用最新版(2020)IntelliJ IDEA 创建Servlet项目

    一:选择左上端的File,创建Project,选择创建Web Application 项目: 注:不勾选Create web.xml 二:设置项目名称:helloworld,并创建一个Servlet( ...

  5. 2020了,还要学JSP嘛?入个门呗!毕竟Servlet亲兄弟~

    目录 1.什么是JSP 2.JSP原理 3.JSP基础语法 jsp表达式 jsp脚本片段 jsp声明 jsp注释 4.JSP指令 5.JSP行为 6.9大内置对象 7.EL表达式 格式 变量 [ ]与 ...

  6. 来谈谈Servlet~~

    目录 1.Servlet简介 2.第一个Servlet程序 3.Servlet原理 4.servlet-mapping的配置 5.关于ServletContext 1.共享数据 2.获取初始化参数 3 ...

  7. 使用Servlet完成单表的CRUD

    实现步骤 第一步:准备一张数据库表.(sql脚本) 第二步:准备一套HTML页面(项目原型)[前端开发工具使用HBuilder] 第三步:分析我们这个系统包括哪些功能 第四步:在IDEA当中搭建开发环 ...

  8. 适配器(GenericServlet)改造Servlet

    JavaWeb系列教程 JavaWeb-Servlet 模拟Servlet本质 使用IDEA开发Servlet程序 Servlet对象的生命周期 适配器(GenericServlet)改造Servle ...

  9. 使用IDEA开发Servlet程序

    JavaWeb系列教程,持续更新 JavaWeb-Servlet 模拟Servlet本质 使用IDEA开发Servlet程序 Servlet对象的生命周期 适配器(GenericServlet)改造S ...

最新文章

  1. 独家 | 成功开发者必备的5项软技能
  2. 人脸识别遇难题,平台先行破局
  3. 《HBase企业应用开发实战》—— 2.5 停止HBase集群
  4. 普罗米修斯java_springboot集成普罗米修斯(Prometheus)的方法
  5. java Object解析
  6. python二叉树去重_python二叉树学习分享
  7. 阿里面试官给你的一些忠告,这样做肯定错不了!附视频
  8. Android继承AppCompatActivity实现全屏设置
  9. mysql 本地热备_MySQL 数据库热备的操作
  10. java仓库管理设计报告_基于javaweb的仓库管理系统的设计和实现 毕业论文
  11. 熟练计算机数字键盘,电脑键盘盲打及快速输入技巧【一】
  12. IDEA的常用快捷键(超详细)
  13. 如何将虚拟机上的文件复制到主机上
  14. 2022搜狐校园算法大赛推荐赛道Rank2方案分享
  15. 使用CSS动画实现 时钟转动效果
  16. Aras innovator: 如何制作一个itemtype的BOM结构
  17. 后端码农谈前端(CSS篇)第二课:CSS的5个来源
  18. 快手小说怎么引流?门槛太低,是个人就能做
  19. JDK源码解析 - java.util.ArrayList
  20. 原 C语言实现万年历程序,C语言实现万年历源码

热门文章

  1. 北大计算机科学与技术保研率,北京师范大学2019届保研率34.7%,北大、人大、清华外校深造前三...
  2. 如何学习数据分析(总结自网易及B站up主)
  3. Maixll-Dock 条形码识别
  4. 校园跳蚤市场平台/校园二手交易平台管理系统
  5. 计算机网络的性能指标:带宽,时延,吞吐量,速率等
  6. remoting项目运用
  7. 蓝白屌丝卡过NAXX蜘蛛区英雄模式
  8. 河北工业大学c语言寻宝游戏,计算机技术基础(c语言)课程设计寻宝游戏.doc
  9. 手机与单片机NFC通讯方案,手机NFC通讯方案,单片机NFC通信方案
  10. C++探索之旅 | 第一部分第一课:什么是C++