servlet生命周期与工作原理
Posted Hsin wang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了servlet生命周期与工作原理相关的知识,希望对你有一定的参考价值。
一、Servlet生命周期分为三个阶段:
1、初始化阶段 调用init()方法
2、响应客户请求阶段 调用service()方法
3、终止阶段 调用destroy()方法
Servlet被装载后,Servlet容器创建一个Servlet实例并且调用Servlet的init()方法进行初始化。
在Servlet的整个生命周期内,init()方法只被调用一次。
二、工作原理:
Servlet接收和响应客户请求的过程,首先客户发送一个请求,Servlet是调用service()方法对请求进行响应的,service()方法中对请求的方式进行了匹配,选择调用doGet,doPost等这些方法,然后再进入对应的方法中调用逻辑层的方法,实现对客户的响应。
在Servlet接口和GenericServlet中是没有doGet,doPost等等这些方法的,HttpServlet中定义了这些方法,但是都是返回error信息,所以,我们每次定义一个Servlet的时候,都必须实现doGet或doPost等这些方法。
三、小知识:
1、继承关系: GenericServlet->HttpServlet->Servlet
HttpServlet是特定于HTTP协议的类
2、get方式与post方式的区别:
get方式以显式提交表单,可以在URL(地址栏)看见我们传的参数
post方式是隐式传值,不可见。post方式相对安全一些
3、getAttribute()与getParamter()的区别:
getAttribute是返回对象,getParameter返回字符串
总的来说:request.getAttribute()方法返回request范围内存在的对象,而request.getParameter()方法是获取http提交过来的数据。
4、cookie与session的区别:
cookie:采取在客户端保持状态的方案,不是很安全
session:采取在服务器端保持状态的方案,比cookie安全
一般将登陆信息等重要信息存放为SESSION, 其他信息如果需要保留可以放在COOKIE中
5、设置session过期时间的两种方法:
(1)在主页面中写入下面两句:
HttpSession session=request.getSession(true);
session.setMaxInactiveInterval(3600);//3600秒,注意服务器端的3600秒,而不是客户端的
(2)在项目的web.xml中设置:
<session-config>
<session-timeout>60</session-timeout> 这里的60就是60分钟。
</session-config>
6、sesson的两种实现方式:
通过cookie或者是URL重写
7、
1.session.setAttribute()和session.getAttribute()配对使用,作用域是整个会话期间,在所有的页面都使用这些数据的时候使用。
2.request.setAttribute()和request.getAttribute()配对使用,作用域是请求和被请求页面之间。request.setAttribute()是只在此action的下一个forward需要使用的时候使用;request.getAttribute()表示从request范围取得设置的属性,必须要先setAttribute设置属性,才能通过getAttribute来取得,设置与取得的为Object对象类型。其实表单控件中的Object的 name与value是存放在一个哈希表中的,所以在这里给出Object的name会到哈希表中找出对应它的value。setAttribute()的参数是String和Object。
3.request.getParameter()表示接收参数,参数为页面提交的参数。包括:表单提交的参数、URL重写(就是xxx?id=1中的id)传的参数等,因此这个并没有设置参数的方法(没有setParameter()),而且接收参数返回的不是Object,而是String类型。
以上是关于servlet生命周期与工作原理的主要内容,如果未能解决你的问题,请参考以下文章