学习中遇到的几种上下文 (后期慢慢积累)

**

一,servlet中的上下文 ServletContext对象

**
ServletContext,是一个全局的储存信息的空间,服务器开始,其就存在,服务器关闭,其才释放。request,一个用户可有多个;session,一个用户一个;而servletContext,所有用户共用一个。所以,为了节省空间,提高效率,ServletContext中,要放必须的、重要的、所有用户需要共享的线程又是安全的一些信息。如,做一个购物类的网站,要从数据库中提取物品信息,如果用session保存这些物品信息,每个用户都访问一便数据库,效率就太低了;所以要用来Servlet上下文来保存,在服务器开始时,就访问数据库,将物品信息存入Servlet上下文中,这样,每个用户只用从上下文中读入物品信息就行了。

1 上下文的作用
web容器在启动时,它会为每个web序都创建一个对应的ServletContext对象,它代表当前的web应用。

作用:Web应用范围内存取共享数据;访问web应用的静态资源;Servlet对象之间通过ServletContext对象来实现通讯。

2 下文接口的方法
在Servlet中通过ServletContext application=this.getServletContext();获取上下文对象application

上下文的常用方法如下:

getInitParameter(String name) 获取name名称的初始化参数的值

getResourceAsStream(String path) 输入流的形式返回path对应的资源,path参数必须以“/”

getInitParameterNames() 获取所有初始化参数的名称,返回的结果是一个枚举值

getRequestDispatcher(String name) 根据转发的地址获取 RequestDispatcher对象

setAttribute() 设置属性值

getAttribute() 获取属性值

getAttributeNames() 获取所有属性值名称

3 上下文参数
在web.xml中配置初始化参数:

adminEmail
webmaster

元素是针对整个应用的,所以并不嵌套在某个元素中,该元素是元素的直接子元素。

从Servlet中访问初始化参数:
ServletContext application=this.getServletContext();
application.getInitParameter(“email”);

4 上下文属性
ServletContext application=this.getServletContext();
application.setAttribute(“name”,”value”);
application.getAttribute(“name”);

Enumberation p=application.getAttributeNames();

**

二,jsp中的PageContext对象

**
其实jsp中的很多内置对象就是servlet中的对象,这一点从你的tomcat安装地址work文件夹下的自己的工程中就可以看粗
C:\Program Files\Java\TomCat\apache-tomcat-8.0.28\work\Catalina\localhost\week07

public void _jspService(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response)
        throws java.io.IOException, javax.servlet.ServletException {

    final javax.servlet.jsp.PageContext pageContext;
    javax.servlet.http.HttpSession session = null;
    final javax.servlet.ServletContext application;
    final javax.servlet.ServletConfig config;
    javax.servlet.jsp.JspWriter out = null;
    final java.lang.Object page = this;
    javax.servlet.jsp.JspWriter _jspx_out = null;
    javax.servlet.jsp.PageContext _jspx_page_context = null;


    try {
      response.setContentType("text/html;charset=UTF-8");
      pageContext = _jspxFactory.getPageContext(this, request, response,
                null, true, 8192, true);
      _jspx_page_context = pageContext;
      application = pageContext.getServletContext();
      config = pageContext.getServletConfig();
      session = pageContext.getSession();
      out = pageContext.getOut();
      _jspx_out = out;

1.pageContext对象是javax.servlet.jsp.PageContext类的实例,主要表示的是一个JSP页面的上下文。
2.pageContext对象有如下一些方法:
(1)页面跳转
public abstract void forward(String relativeUrlPath)throws ServletException, IOException
(2)页面包含
public void include(String relativeUrlPath) throws ServletException, IOException
(3)取得ServletConfig对象
public ServletConfig getServletConfig()
(4)取得ServletContext对象
public ServletContext getServletContext()
(5)取得ServletRequest对象
public ServletRequest getRequest()
(6)取得ServletResponse对象
public ServletResponse getResponse()
(7)取得HttpSession对象
public HttpSession getSession()
样例:
pageContext_forward01.jsp

<%@ page contentType="text/html" pageEncoding="GBK"%>
<html>
<head><title>欢迎来到望星空</title></head>
<body>
<%
    pageContext.forward("pageContext_forward02.jsp?info=Joywy");    <!-- 括号内?左右不要有空格,否则会报出HTTP Status 404 -->
%>
</body>
</html>

pageContext_forward02.jsp

<%@ page contentType="text/html" pageEncoding="GBK"%>
<html>
<head><title>欢迎来到望星空</title></head>
<body>
<%
    //直接从pageContext对象中取得了request
    String info = pageContext.getRequest().getParameter("info");
%>
<h3>info = <%=info%></h3>
<h3>realpath = <%=pageContext.getServletContext().getRealPath("/")%></h3>
</body> 
</html>

注意:取得的操作实际上是request和response对象所在接口的父接口实例。
pageContext对象中的getRequest()和getResponse()两个方法返回的是ServletRequest和ServletResponse,而常用的request和response分别是HttpServletRequest和HttpServletResponse接口的实例。

三,jsp中的application

其实jsp中的application就是servlet中的servletContext对象

application = pageContext.getServletContext();

四,EL表达式中的页面上下文

页面上下文对象为pageContext,用于访问jsp内置对象,(如request,response,out,,session,exception,page等,但不能用于获取application,config和pageContext对象)和servletContext。

这里写图片描述

servletContext对象   ${pageContext.servletContext}  获取servlet上下文信息

这里写图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值