Servlet:生命周期

版权声明:赠人玫瑰,手有余香!本文是小哥哥的原创文章,转载或摘抄时请注明出处。 https://blog.csdn.net/lovecuidong/article/details/88637686

基本结构

两个包:javax.servlet.* 和 javax.servlet.http.*

Servlet的顶层接口:javax.servlet.Servlet接口

在这个接口中有5个方法。其中最核心的是服务方法service()方法。

用户每次发送的请求其实都是调用一次service方法。

实现开发时:一般的Servlet继承HttpServlet类

在HttpServlet中service方法已经给出了实现,变成根据请求方式调用doGet和doPost方法。

所以我们要开发一个Servlet时,要继承HttpServlet类重写doGet和doPost方法。

在javax.servlet包中大多数的接口在javax.servlet.http包中有都是子接口

请求:request javax.servlet.ServetlRequest 和 javax.servlet.http.HttpServletRequest

响应:response javax.servlet.ServletResponse 和 javax.servlet.http.HttpServletResponse

扫描二维码关注公众号,回复: 5572570 查看本文章

get和post方法的区别

不同点一:

通过get方式提交的数据有大小的限制,通常在1024字节左右。也就是说如果提交的数据很大,用get方法就可需要小心;

而post方式没有数据大小的限制,理论上传送多少数据都可以。

不同点二:

通过get传递数据,实际上是将传递的数据按照”key,value”的方式跟在URL的后面来达到传送的目的的;

而post传递数据是通过http请求的附件进行的,在URL中并没有明文显示。

不同点三:

通过Get方式提交的数据安全性不高,而Post方式的更加安全。

get请求的东西(你页面输入的信息)会在地址栏显示所以不安全,post不显示,会好一点。

生命周期

Servlet中的使用的方法都是实例方法,没有static修饰符的方法,所以这些实例方法的调用必须先有实例。

实例必须通过new关键字进行实例化过程。

Servlet对象的生命周期都是在服务器端完成的

  1. 实例化 new Servlet是由服务器端实例化的
  2. 初始化 init() 初始化方法,只调用一次
  3. 服务阶段 service() 这是一个长期的方法,每接收一次用户的请求就调用一次服务方法
  4. 销毁 destroy() 当结束服务器时

 

作用域对象

放东西进去:void setAttribute("key",value);
取东西出来:value getAttribute("key");

页面级作用域对象:pageContext

这个容器只能一个页面中使用。

pageContext.setAttribute(name, value, scope); //第三个填写作用域常量

请求级作用域对象:request

HttpServletRequet类型,只能在一次请求中使用,所有客户端重定向会影响request对象中保存的数据。数据会消失。

两个接口,HttpServletRequest继承ServletRequest

String getParameter(String name); //获得请求参数,例如<input>标签
RequestDispatcher getRequestDispatcher(String url); //获得一个请求分发器对象
forward(request,response); //转发
include(request,response); //包含
HttpSession getSession(); //获得会话对象
void setCharacteEncoding("utf-8"); //设置请求的中文编码
void setAttribute(String key,Object obj); //将数据以k-v的方式保存到请求对象中
Object getAttribute(String key); //从请求对象中以k取v

会话级作用域对象:session

HttpSession类型,会话是一直保存在服务器端的容器对象,从第一次发送请求开始到退出整个web应用为止。

会话对象是每个用户都有一个自己的对象。

String name = request.getParameter("uname");		
HttpSession s = request.getSession(); //在Servlet中获取session对象
s.removeAttribute("name"); //移除session中保存的对象
s.invalidate(); //移除session对象

在request对象中保存针对这次请求的临时性的数据。比如一次请求的错误信息。

在session对象中保存需要长期存储的用户个人信息。比如,登录成功时保存用户对象。

应用程序级作用域对象:application

ServletContext类型,应用程序级作用域对象,全网用户共用一个。

在整个应用程序中都能使用,从启动WEB应用开始到关闭WEB应用为止。

ServletContext c = getServletContext();
c.setAttribute(name, object);
c.getAttribute(name);

猜你喜欢

转载自blog.csdn.net/lovecuidong/article/details/88637686