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

初识 JSP---(servlet / ServletConfig接口 / ServletContext接口)

servlet简介

Java Servlet是和平台无关的服务器端的组件,它运行在servlet容器中。Servlet容器负责servlet和客户的通信以及调用servlet的方法,servlet和客户的通信采用的是“请求/响应”的模式。

servlet可完成如下功能:

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

2.创建可嵌入现有HTML页面的部分HTML页面(HTML片段)

3.去其他服务器资源交互(如数据库或基于java的应用程序)进行通信

 

Servlet介绍

–Java Servlet(server applet)

–Java Servlet继承结构

Servlet接口(javax.servlet.Servlet)

GenericServlet(javax.servlet.GenericServlet)

HttpServlet(javax.servlet.http.HttpServlet)

 

创建一个Servlet

–继承HttpServlet

–重写service(doGet、doPost)方法

–在web.xml中配置Servlet

–部署和执行

 

Servlet的API

Servlet接口(javax.servlet)

说明:javax.servlet的基础接口,定义了Servlet必须实现的方法。

GenericServlet类(javax.servlet)

说明:实现Servlet的接口,属于通用的,不依赖与HTTP协议的servlet(实际应用不算多)

HttpServlet类(javax.servlet.http)

说明:继承GenericServlet类,是在其基础上扩展了HTTP协议的servlet

 

Servlet生命周期

1.加载和实例化:(构造方法)只有第一次请求servlet时。创建servlet的实例

2.初始化:(init方法)只被调用一次,在创建好实例后立即调用初始化方法

3.服务的方法:每次请求都会调用service的方法,实际用于响应请求的

4.销毁方法:只调用一次,在当service所在的web应用项目被卸载前调用,用于释放资源

 

在什么时候创建,加载,初始化?

<load-on-startup>0</load-on-startup>

大于0时,tomcat启动时就被加载了,小于0时,访问时才被加载,默认的是小于0

 

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

第一步:servlet引擎检查是否已经装载并创建了该servlet的实例对象,如果是则直接执行第四步,否则执行第二步

第二步:装载并创建servlet的实例对象,调用该servlet的构造器

第三步:调用servlet实例对象的init的方法

第四步:创建一个用于封装请求ServletRequest对象和一个代表响应的消息的ServletResponse对象,然后调用Servlet的service方法并请求和响应对象作为参数传递进去

第五步:web应用程序被停止或重新启动之前,Servlet引擎将卸载Servlet,并在卸载之前调用Servlet的destory的方法

 

ServletConfig接口的方法:

getInitParameter()方法:通过名字获取值

getInitParameterNames()方法:获取所有的名字,返回的是枚举类型,可以迭代

例:

结果:

getServletName方法:获取servlet的名称

例:

结果:

getServletContext方法:获取ServletContext的接口的初始化参数

ServletContext对象:

Servlet引擎为每个web应用程序都创建了一个对应的ServletContext对象,ServletContext对象包含在ServletConfig对象中,调用ServletConfig.getServletContext方法可以返回ServletContext对象引用。

由于一个web应用程序中的所有的Servlet都共享一个ServletContext对象,所以ServletContext对象都被称之为Application对象(web应用对象)

 

ServletContext接口的功能:

1.获取web应用程序的上下文参数

(1)配置web.xml,不需要配置在<servlet></servlet>标签中,使用<context-param></context-param>标签

例:

(2)通过ServletConfig对象获取ServletContext对象

例:

(3)通过servletContext按照名字获取值(servletContext.getInitParameter)

例:

结果:

(4)通过servletContext获取所有的名字(servletContext.getInitParameterNames)

例:

结果:

2.记录日志

3.Application域范围的属性(application作用域)

4.访问资源文件

获取当前web应用的某一个文件对应的输入流

结果:

5.获取虚拟路径所映射的本地路径

方法:servletContext.getRealPath("/Test");

例子:

结果:

6.web应用程序对象之间的访问

7.ServletContext的其他方法

获得当前名称:servletContext.getContextPath();-

例子:

结果:

 

相关文章:

  • 根据IP查地理位置信息
  • 使用git将代码推到coding
  • 理解在java “”i=i++;”所发生的事情
  • HDU 6342 Expression in Memories(模拟)多校题解
  • eclipse 更换国内镜像
  • @angular/forms 源码解析之双向绑定
  • C# 获取电脑的网络连接状态
  • leetcode 有效的字母异位词 java 版本
  • memset函数,strcpy函數,memcp函數
  • 老司机 iOS 周报 #30 | 2018-08-06
  • 机器学习 -- 机器学习是什么?
  • TCP三次握手四次挥手手动实践
  • 初识 Spring(05)---(Annotation注解)
  • win7系统已经够用为什么还要开发win10系统
  • python3 简单爬虫
  • CSS相对定位
  • Elasticsearch 参考指南(升级前重新索引)
  • ES6 学习笔记(一)let,const和解构赋值
  • happypack两次报错的问题
  • HTTP中的ETag在移动客户端的应用
  • JavaScript HTML DOM
  • JavaSE小实践1:Java爬取斗图网站的所有表情包
  • Java多态
  • Js基础——数据类型之Null和Undefined
  • magento2项目上线注意事项
  • nginx(二):进阶配置介绍--rewrite用法,压缩,https虚拟主机等
  • Odoo domain写法及运用
  • Traffic-Sign Detection and Classification in the Wild 论文笔记
  • 阿里云容器服务区块链解决方案全新升级 支持Hyperledger Fabric v1.1
  • 从0到1:PostCSS 插件开发最佳实践
  • 大整数乘法-表格法
  • 高度不固定时垂直居中
  • 开发了一款写作软件(OSX,Windows),附带Electron开发指南
  • 前言-如何学习区块链
  • 浅析微信支付:申请退款、退款回调接口、查询退款
  • 容器服务kubernetes弹性伸缩高级用法
  • 如何借助 NoSQL 提高 JPA 应用性能
  • 新书推荐|Windows黑客编程技术详解
  • 看到一个关于网页设计的文章分享过来!大家看看!
  • 小白应该如何快速入门阿里云服务器,新手使用ECS的方法 ...
  • ​3ds Max插件CG MAGIC图形板块为您提升线条效率!
  • (+3)1.3敏捷宣言与敏捷过程的特点
  • (zt)基于Facebook和Flash平台的应用架构解析
  • (入门自用)--C++--抽象类--多态原理--虚表--1020
  • (三)docker:Dockerfile构建容器运行jar包
  • (三维重建学习)已有位姿放入colmap和3D Gaussian Splatting训练
  • (一)基于IDEA的JAVA基础10
  • **CI中自动类加载的用法总结
  • .NET 4.0中使用内存映射文件实现进程通讯
  • .NET BackgroundWorker
  • .NET Core 项目指定SDK版本
  • .net 前台table如何加一列下拉框_如何用Word编辑参考文献
  • .NET/ASP.NETMVC 深入剖析 Model元数据、HtmlHelper、自定义模板、模板的装饰者模式(二)...
  • .NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)
  • .sh 的运行