前言
本文主要介绍servlet上下文和转发的相关API和知识。
一、servlet的上下文
ServletContext:
即servlet上下文,代表整个web应用的对象,这个对象全局唯一,而且工程内部的所有servlet都共享这个对象,所以叫全局应用程序共享对象,也就是同一个WEB应用程序中(webapps下的每个目录就是一个应用程序
),所有的Servlet和JSP都可以共享同一个区域。ServletContext的生命周期:
当服务器启动,web应用加载时,会创建一个ServletContext对象,唯一代表该web应用,此后该对象一直存活,直到web应用销毁时,ServletContext对象随之销毁。获取ServletContext对象:
通过this.getServletContext() 方法获取。常用的函数
//获取上下文对象
ServletContext sc=this.getServletContext();
//设置全局数据
request.getServletContext().setAttribute("msg", "共享信息");
//获取全局数据
request.getServletContext().getAttribute("msg");
二、转发
- 定义:转发——>客户浏览器发送HTTP请求——>web服务器接受请求——>调用内部一个方法在容器内部完成请求处理和转发动作——>再将转发跳转到的那个网页资源返回给客户;
- 转发只能在同一个容器内完成 转发的时候浏览器地址是不会变的,在客户浏览器里只会显示第一次进入的那个网址或者路径,
客户看不到这个过程
,只是得到了想要的目标资源,转发行为浏览器只做了一次请求
。 - 常用函数
getParameter()和getAttribute()的区别:
getParameter()获取的是客户端设置的数据,永远返回字符串
getAttribute()获取的是服务器设置的数据,返回值是任意类型
forward和include的区别:
forward方法是把请求的内容转发到另外的一个servlet
而include是把另一个servlet处理过后的内容拿过来.
例如使用了forword方法后,会跳转到指定的另外一个页面并显示内容
而include是在原本页面显示新的页面的内容,并且包含原来页面上的内容。
转发函数:
request.getRequestDispatcher("operTwoServlet").forward(request,response);
三、session
- Session 就一个接口(HttpSession)。
- Session 就是会话。它是用来维护一个客户端和服务器之间关联的一种技术。
- 每个客户端都有自己的一个 Session 会话。
- Session 会话中,我们经常用来保存用户登录之后的信息。
- 获取session对象
//创建或获取Session会话对象
HttpSession session = req.getSession();
//判断当前Session会话是否是新创建出来的
boolean isNew = session.isNew();
//获取Session会话的唯一标识 id
String id = session.getId();
- session数据域的存取:
//存的是一个键值对
req.getSession().setAttribute("key","value");
- session数据域的读取
//通过键值对来读出信息
String shopping=(String)session.getAttribute("key");