1. Servlet简介

 

(1) Servlet本质上就是一个Java类,只不过运行在Servlet容器中

(2) Servlet的功能:

① 创建并返回客户请求的动态HTML页面

② 创建可嵌入到现有HTML页面中的部分HTML页面

③ 与其他服务器资源进行通信

  1. Servlet容器响应客户请求的过程

① Servlet引擎检查是否已经装载并创建该Servlet实例对象(有②否④)

② 装载并创建Servlet的一个实例对象:调用该Servlet的构造器

③ 调用init()方法

④ 创建一个用于封装请求的ServletRequest对象和一个代表响应信息的ServletResponse对象,然后调用Servlet的service()方法并将请求和响应对象作为参数传递进去

⑤ web程序在停止或重新启动前,Servlet引擎卸载Servlet,并在卸载之前调用Servlet的destroy()方法

  1. 声明周期方法

都是由Servlet容器负责调用

l 构造器:只被调用一次,第一次请求servlet是,创建servlet实例,调用该构造器,说明servlet是单实例的。

l init:只被调用一次,在创建好servlet实例后立即被调用,负责初始化servlet

l service:被调用多次,每次请求servlet都会调用该方法,用于响应请求

l destory:只被调用一次,在当前servlet所在的web应用程序被终止之前被调用,释放当前servlet所占的资源

  1. Servlet注册和运行

 

(一)Servlet程序必须通过Servlet容器来运行

(二)Servlet程序必须在web引用程序的web.xml文件中进行注册和映射其访问路径,才可以被Servlet引擎加载和被外界访问

(三)一个Servlet元素用于注册一个Servlet,它包含两个主要的子元素:servlet-name和servlet-class,分别用来设置servlet的注册名称和Servlet完整类名

l 一个Servlet-mapping 元素用于映射一个已注册的Servlet的一个对外访问路径,它包含两个子元素:servlet-name和url-pattern分别用于指定Servlet的注册名称和对外访问的路径

l 同一个Servlet可以被映射到多个url上,即多个servlet-mapping的子元素,servlet-name设置值可以是一个Servlet的注册名

l 在Servlet映射的url可以使用*通配符,但只能是两种固定格式:一种是“*.扩展名”,另外一种是以“/”开头“/*”结尾

l 在浏览器的访问路径是:http://localhost:8080/Servlet1114/hello

  1. ServletConfig对象

 

  • 获取servlet初始化参数

1) getInitParameter(String name):获取指定的参数名的初始化参数

String name=servletconfig.getInitParameter(“jdbc”);

2) getInitParameterNames();获取参数名组成的Enumeration对象

Enumeration<String> names=servletconfig.getInitParameterNames();

  1. ServletContext对象

 

  • Servlet引擎为每一个Web程序创建了一个对应的ServletContext对象,ServletContext对象被包含在ServletConfig对象中,调用servletconfig.getServletContext方法可以返回ServletContext对象的引用
  • 获取web应用初始化参数

getInitParameter()

ServletContext servletContext=servletConfig.getServletContext();

String driver=servletContext.getInitParameter("driver");

  • 获取web应用初始化参数名

getInitParameter()

Enumeration<String> names=servletContext.getInitParameterNames()

  • 获取当前项目的真实路径

  • 获取当前项目的绝对路径

  1. Servlet的加载

l 如果load-on-startup如果为负数,则在第一次请求servlet是创建实例和初始化;

l 如果是0或正数,则在当前web应用加载的时候创建该实例和初始化

l 数值越小,先被创建

最新文章

  1. REST及RESTful的实现
  2. ThinkPHP中field 方法与getField 方法的区别。
  3. eclipse生成doc文件乱码
  4. php---分组函数group_concat()
  5. EXT3_DX_ADD_ENTRY: DIRECTORY INDEX FULL!
  6. aptitude与apt-get
  7. Android 系统版本和API level的关系表
  8. docker命令汇总
  9. HDFS优缺点
  10. Odoo 堆积木似的软件构建
  11. MongoVUE 使用教程
  12. vue----less引用
  13. 【网站管理6】_一个网站SEO优化方案
  14. GradleUserGuide中文版 19)Plugins 20)插件规范 21)Java插件
  15. es2017新特性
  16. Getting started with Processing 第七章总结
  17. ansible 碎记录
  18. October 24th, 2017 Week 43rd Tuesday
  19. [Deepin 15] 安装 Java 8、Git、Firefox、SafeEyes(定时提醒休息工具)
  20. eclipse debug 执行到断点处并没有停下,断点无效问题

热门文章

  1. POJ 3608
  2. Android-黑科技-微信抢红包必备软件
  3. EditText焦点问题
  4. 程序中的文件之沙盒以及plist文件的初步使用
  5. sikuli_ide打开提示没有对应的javaw
  6. 【JNI探索之路系列】之七:JNI要点总结
  7. 一张游览PHP内核迷宫的藏宝图
  8. VIM中括号的自动补全与删除
  9. 【POJ 3700】 Missile Defence System
  10. [ligerUI] grid封装调用方法