day04-Servlet介绍(1)
1.servlet的概述
a.什么是servlet
--servlet是javaWeb的三大组件(Listener,Filter)之一,他属于动态资源
--servlet的作用是(10086): 服务器会把接收到的请求交给servlet来处理,接收请求数据, 处理请求, 完成响应
b.实现servlet的方式(三种):每一个servlet都直接或间接的实现了servlet接口
--实现javax.servlet.Servlet 接口
--继承javax.servlet.GenericServlet 抽象类
--继承javax.servlet.http.HttpServlet 抽象类(通常会继承HttpServlet)
2.servlet接口
a.servlet的生命周期
--Servlet接口中的5个方法(其中生命周期方法占3个)
所谓xxx的生命周期,就是说xxx的出生、服务、死亡,servlet的生命周期也是如此
-- void init(ServletConfig config)
-- void service(ServletRequest req, ServletResponse resp)
-- void destory()
-- void getServletConfig()
-- String getServletInfo() 没用
(1)servlet的出生
默认情况下,servlet是在第一次被访问的时候,由服务器创建
还有也可以在web.xml中的<servlet>元素下<load-on-startup>配置一个大于0的整数!!!,就可以让它随着服务器的启动而创建,而且一个servlet类型
服务器只创建一个实例对象(单列模式),在servlet被创建后,服务器马上会调用init(servletConfig config)方法,一个servlet一生只能调用一次,
所以我们可以把一些初始化的工放到init方法中去
(2)servlet的服务
当服务器每次接收到请求后,都会去调用servlet的service方法来处理请求,服务器接收到一次请求
就会去调用一次service方法一次,所以servic方法是会被调用多次的,正因为如此,所以我们把需要把
处理请求的代码写到service()方法中
(3)Servlet的离去
在服务器被关闭时,服务器会去销毁Servlet,在销毁Servlet之前服务器会先去调用Servlet的destory()
方法,我们可以把Servlet的遗言放在destory()方法中,例如对某些资源的释放可以放到destory()中
b.Servlet接口中的ServletConfig接口
ServletConfig接口是对应web.xml中的<servlet>元素,它下面的内容都可以通过如下方法获取到
1.getInitParameter(String name)
2.Enumeration getInitParameterNames()
3.getServletName()
4.getServletContext() 获取servlet上下文
3.GenericServlet概述
GenericServlet是Servlet接口的实现类
对下面这段的话的理解,可以去看看GenericServlet的源码,它自己有一个没有带参数的init()方法
GenericServlet的init()方法
在GenericServlet中,定义了一个ServletConfig config实例变量,他是在从Servlet接口实现的init(ServletConfig config)生命周期方法,把参数ServletConfig赋给了实例变量,然后在该类的很多方法使用了实例变量config
如果子类覆盖了GenericServlet的init(ServletConfig)方法,那么this config = config,这条语句就会被覆盖了
也就是说GenericServlet的实例变量的值为null,那么所有依赖config的方法都不能使用了,如果真的希望完成一些
初始化操作,那么去覆盖GenericServlet中的无参的init()方法,他会在init(ServletConfig)中被调用
GenericServlet还实现了ServletConfig接口,所以可以直接调用getInitParameter(), getServletContext()等
ServletConfig接口中的方法
4.HttpServlet概述
HttpServlet抽象类是GenericServlet抽象类的子类,他提供了对http请求的支持,所以我们通过继承HttpServlet
来完成自定义的servlet
(1)HttpServlet覆盖了service()方法
HttpServlet类中提供了service(HttpServletRequest,HttpServletResponse)方法,这个方法是HttpServlet自己的
方法,不是从Servlet继承来的,在HttpServlet的service(ServletRequest,ServletResponse)方法中会把这两个参数
强转为HttpServletRequest,HttpServletResponse,然后再调用本类自己的
service(HttpServletRequest,HttpServletResponse)方法,这说明继承HttpServlet的子类,去覆盖
service(HttpServletRequest,HttpServletResponse)方法即可,这就不用自己强转请求和响应对象了
其实子类也不用去覆盖service(HttpServletRequest,HttpServletResponse)方法
因为HttpServlet还要做另一步简化操作就是doGet()和doPost()了
(2)doGet()和doPost()
在HttpServlet的service(HttpServletRequest,HttpServletResponse)方法会判断当前请求是get还是
post,如果是get请求,那么会去调用本类的doGet()方法,如果是post请求则会调用doPost()方法,
这说明我们在子类中去覆盖doGet()或doPost()方法即可
day04-Servlet介绍(1)的更多相关文章
- Servlet介绍(一)
Servlet介绍(一) Servlet是一个执行在webserver上的小的Java程序,它通过接收和响应webclient的请求.在tomcatserver中有已经帮我们实现好了Servlet接口 ...
- Servlet(1):Servlet介绍
一. Servlet介绍 Servlet 是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生 ...
- Java 之 Servlet介绍(Java之负基础实战)
1.介绍 Servlet是用Java编写的服务器端程序.其主要功能在于交互式地浏览和修改数据,生成动态Web内容.狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了 ...
- Servlet介绍以及简单实例
一.背景介绍: HTTP:超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议.设计HTTP最初的目的是为了提供一种发布和接收 HTM ...
- 1.Servlet介绍 和 HTTP协议简述
1. Servlet是什么? sun公司制订的一种用来扩展web服务器功能的组件规范. (1)扩展web服务器功能 注: 早期的web服务器只能处理静态资源的请求,即需要事先将 html文件准备好,并 ...
- JAVA记录-Servlet介绍
1.什么是Servlet Servlet是sun公司提供的一门用于开发动态web资源的技术.Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一个Java程序向 ...
- Servlet 介绍
JSP 的本质就是 Servlet,开发者把编写好的 JSP 页面部署在 Web 容器中后,Web 容器会将 JSP 编译成对应的 Servlet. Servlet 的开发 Servlet 是个特殊的 ...
- servlet介绍
1.首先说Servlet API:servlet的命名:server+applet Servlet的框架是由两个Java包组成的:javax.servlet与javax.servlet.http. 在 ...
- JSP学习笔记(5)——Servlet、监听器、过滤器、MVC模式介绍
MVC模式 在讲解Servlet前,先介绍一下MVC模式. M:model 模型,相当于数据层,用于存放数据,如一个Java中的一个bean类 V:view 视图,相当于页面层,用于显示数据,如一个网 ...
- JSP/Servlet相关
1 简介 JSP(Java Server Page)和Servlet是JavaEE规范的两个基本成员,是JavaWeb开发的重点. JSP的本质是Servlet,当用户向指定的Servlet发送请求时 ...
随机推荐
- expected_conditions模块提供了判断页面元素的16种方法
1.title_is: 判断当前页面的title是否完全等于(==)预期字符串,返回布尔值2.title_contains : 判断当前页面的title是否包含预期字符串,返回布尔值3.presenc ...
- myeclipse在过时的环境下部署项目出现的问题
开发环境 操作系统:xp sp3 2002 (ps:客户公司环境只有这个老古董) 开发工具:myeclipse2014 32位 jdk: 1.7_49 32位 DB:DB2 9.1 32位 ...
- PG数据库中用户权限
每当在数据库中创建一个对象,所有者可以分配它访问权限.所有者通常是执行创建语句的用户.对于大多数类型的对象,初始状态是,只有所有者(或超级用户)可以修改或删除对象.为了让其他角色或用户使用它,特权或权 ...
- 一些常见的Java面试题 & 面试感悟
< 前言 > 近期在面试,深感这个行业的浮躁,一些菜不辣基的弱鸡开出的工资待遇要求,超过了我.不知道他们是怎么拿到那么高的工资的,难道是他在公司有亲戚朋友吗?有后台吗?是行业热钱真的过多了 ...
- python-day3集合、文件读写、函数
@集合运算 s.union(t) s | t 返回一个新的 set 包含 s 和 t 中的每一个元素 s.intersection(t) s & t 返回一个新的 set 包含 s 和 t 中 ...
- python爬虫相关
一.Python re模块的基本用法: https://blog.csdn.net/chenmozhe22/article/details/80601971 二.爬取网页图片 https://www. ...
- Verilog笔记——Verilog数字系统设计(第二版)夏宇闻
本片记录Verilog学习笔记,主要是和以往用的C语言的不同之处,以例子.代码的形式记录.学习以<Verilog数字系统设计>(第二版)为参考资料,援助作者夏宇闻. 1. C语言和Veri ...
- 使用Jquery easyui datagrid请求servlet没有反应的解决办法
在Jsp页面中把servlet请求地址写全,我已经将要注意的地方红色加粗了.我的jsp页面是新建的一个文件夹. <%@ page language="java" conten ...
- Linux部署笔记分享
# Linux部署 ## 安装lrzsz1. 安装lrzsz: yum -y install lrzsz2. 进入tmp目录3. rz 上传安装文件 jdk-8u65-linux-x64.tar.gz ...
- 5.SLB排错思路
500/502/504可能的原因: https://help.aliyun.com/knowledge_detail/55207.html 请求不均衡可能的原因: https://help.aliyu ...