Servlet学习笔记04——什么是重定向,servlet生命周期?
1.重定向
(1)什么是重定向?
服务器通知浏览器访问一个新的地址。
注:
服务器可以通过发送一个302状态码及一个
Location消息头(该消息头的值是一个地址,一般
称之为重定向地址)给浏览器,浏览器收到之后,
会立即向重定向地址发请求。
(2)如何重定向?
response.sendRedirect(String url)。
注:
url就是重定向地址。
(3)一个细节:
重定向之前,服务器会清空response对象
上存放的数据。
(4)两个特点:
a.重定向地址是任意的。
b.重定向之后,浏览器地址栏的地址会发生变化。
2.Servlet的生命周期
(1)什么是Servlet的生命周期?
Servlet容器如何创建Servlet实例,如何对其
进行初始化,如何调用其方法处理请求,以及
如何销毁其实例的整个过程。
(2)生命周期分成几个阶段?
1)实例化
a.什么是实例化?
容器调用Servlet的构造器,创建相应的对象。
b.什么时候实例化?
情形1:容器收到请求之后。
情形2: 容器启动之后,立即实例化。
注:容器只会创建一个实例!
2)初始化
a.什么是初始化?
容器创建Servlet实例之后,接下来会调用
该实例的init方法。
b.init方法只会执行1次!
注:init方法用于获取一些资源。
c.GenericServlet已经实现了init方法:
注:
将容器传递进来的ServletConfig对象
保存下来了,并且提供了getServletConfig
方法用于获得该对象。
d.如何实现自已的初始化处理逻辑?
只要override GenericServlet的init
方法(注意,是那个不带参的init方法)。
e.初始化参数
3)调用(就绪)
a.什么是就绪?
容器在收到请求之后,会调用Servlet实例的
service方法来处理请求。
b.HttpServlet类已经实现了service方法。
注:
b1.依据请求类型(get/post)调用对应的
doGet或者doPost方法。
b2.doGet方法和doPost方法只是抛出了一个异常。
b3.可以override doGet和doPost,或者也
可以override service方法来实现自已的
处理逻辑。
4)销毁
a.什么是销毁?
容器在删除Servlet实例之前,会调用该实例的
destroy方法。
b.该方法只会执行一次!
c.可以override GenericServlet的destroy方法
来实现自已的销毁处理逻辑。
(3)生命周期相关的几个接口与类(了解)
a.Servlet接口
init(ServletConfig config);
service(ServletRequest req,
ServletResponse res);
destroy()
b.GenericServlet抽象类
实现了Servlet接口中的部分方法(init,
destroy)。
c.HttpServlet抽象类
继承了GenericServlet,实现了service
方法。
练习:计算bmi指数
bmi指数 = 体重(公斤) / 身高(米) / 身高(米)
如果bmi指数 < min 体重过轻
如果bmi指数 > max 体重过重
否则体重正常
min,max要求使用初始化参数来配置。
Servlet学习笔记04——什么是重定向,servlet生命周期?的更多相关文章
- Servlet学习笔记(一)之Servlet原理、初始化、生命周期、结构体系
Servlet是用java语言编写的应用到Web服务器端的扩展技术,与java对象的区别是,Servlet对象主要封装了对HTTP请求的处理,并且它的运行需要Servlet容器的支持(以下会介绍原因, ...
- Servlet学习笔记(二)之Servlet路径映射配置、Servlet接口、ServletConfig、ServletContext
Servlet路径映射配置 要使Servlet对象正常的运行,需要进行适当的配置,以告诉Web容器哪个请求调用哪个Servlet对象处理,对Servlet起到一个注册的作用.Servlet的配置信息包 ...
- Android学习笔记(五)——活动的生命周期
//此系列博文是<第一行Android代码>的学习笔记,如有错漏,欢迎指正! 为了能写出流畅连贯的程序,我们需要了解一下活动的生命周期. 一.返回栈 Android 中的活动是可以层叠的. ...
- Android学习笔记(六)Fragment的生命周期
在上一篇博文中对Fragment做了简单的介绍,现在再来探讨一下Fragment的生命周期. 一.Fragment的几种状态: 与Activity类似,Fragment也有一下几种状态: · 活动状态 ...
- 张高兴的 Xamarin.Android 学习笔记:(三)活动生命周期
本文将直接解释我写的一个示例.示例目的在于展示 Android 活动在 Xamarin 中的用法.如果有朋友对基础知识不太了解建议先学 Android . 新建一个 Xamarin.Android 项 ...
- Android学习笔记(十) Activity的生命周期
一.如何在一个应用程序中定义多个Activity -定义一个类,继承Activity -复写onCreate() setContentView(R.layout.secondLayout):设定该Ac ...
- Laravel5.1学习笔记9 系统架构1 请求生命周期 (待修)
Request Lifecycle Introduction Lifecycle Overview Focus On Service Providers Introduction When using ...
- 【React】学习笔记(二)——组件的生命周期、React脚手架使用
原教程视频:ttps://www.bilibili.com/video/BV1wy4y1D7JT?p=2&spm_id_from=pageDriver 目录 一.组件的生命周期 1.1.生命周 ...
- Servlet学习笔记(四)
目录 Servlet学习笔记(四) 一.会话技术Cookie.session 1. 什么是会话技术? 2. 会话技术有什么用? 3. Cookie 3.1 什么是Cookie? 3.2 使用Cooki ...
随机推荐
- jquery中load()加载页面,刷新之后,加载的页面不显示的解决办法
<script language="javascript" type="text/javascript"> $(function(){ $(&quo ...
- linux下文件比对功能
很想对吧两个文本有什么不同,可linux下有没有那么方便的工具,怎么办?其实也很简单:diff命令,一行搞定. 新建a.txt文件
- c++ 面试整理
1. 继承方式 public 父类的访问级别不变 protected 父类的public成员在派生类编程protected,其余的不变 private 父类的所有成员变成pr ...
- 基础7 面向对象进阶与socket编程
1.静态方法(用得少)(解除某个函数跟类的关联,加了静态方法后,类便不能将类的参数传给静态方法函数了) class Dog(object): def __init__(self,name): @sta ...
- Android OS Startup
OS puts emphases on how to provide interfaces to user's APPs for using hardware device in the conven ...
- Android中关于XML的一个小问题——使用XML输出“<”错误的问题
在 XML 中,有 5 个预定义的实体引用: < < 小于 > > 大于 & & 和号 ' ' 单引号 " " 引号 注释 ...
- rollback
savepoint test; rollback to savepoint test;
- mongoDB基础知识(一)
mongoDB是一个基于分布式文件存储的数据库,介于关系型数据库和非关系型数据库之间,在非关系型数据库中功能最丰富, 最像关系型数据库.数据结构松散,类似于json的bson格式,可以存储比较复杂的数 ...
- JavaScript 获取 当前日期和三十天以前日期
//获取当前日期 var myDate = new Date(); var nowY = myDate.getFullYear(); var nowM = myDate.getMonth()+1; v ...
- 笨办法学Python(二十八)
习题 28: 布尔表达式练习 上一节你学到的逻辑组合的正式名称是“布尔逻辑表达式(boolean logic expression)”.在编程中,布尔逻辑可以说是无处不在.它们是计算机运算的基础和重要 ...