ServletContext

来源:互联网 发布:we假装情侣软件 编辑:程序博客网 时间:2024/05/16 07:13

ServletContext

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

ServletConfig对象中维护了ServletContext对象的引用,开发人员在编写servlet时,可以通过ServletConfig.getServletContext方法获得ServletContext对象。

   也可以使用 this.getServletContext方法

由于一个WEB应用中的所有Servlet共享同一个ServletContext对象,因此Servlet对象之间可以通过ServletContext对象来实现通讯。多个Servlet通过ServletContext对象实现数据共享。

ServletContext对象通常也被称之为context域对象。(request,session,page)

 setAttribute(),getAttribute();

获取WEB应用的初始化参数。

<context-param>

   <param-name> data</param-name>

  <param-value> xxxx</param-value>

</context-param>

 

实现Servlet的转发。

 RequestDispatcher rd =getServletContext().getRequestDispatcher(“/1.jsp”);

rd.forward(request,response);

如何把数据传到 1.jsp ?(可以通过request域,不能用context域)

ServletConfig和ServletContext的区别

整个Web应用只有一个ServletContext,在部署Web应用的时候,容器会建立这一个ServletContext对象,这个上下文对Web应用中的每个Servlet和JSP都可用。

Web应用中的各个Servlet都有自己的ServletConfig,它只对当前Servlet有效。

 

在客户端缓存Servlet的输出

对于不经常变化的数据,在servlet中可以为其设置合理的缓存时间值,以避免浏览器频繁向服务器发送请求,提升服务器的性能。

 

 

获取ServletContext的两种方式

 

获取ServletContext方法1

              ServletContextcontext1 = this.getServletConfig().getServletContext();

             

获取ServletContext方法2

              ServletContextcontext2 = this.getServletContext();

 

2.使用ServletContext实现两个Servlet数据共享

String value = "lisi";

this.getServletContext().setAttribute("namev",value);

 

String namevalue = (String)this.getServletContext().getAttribute("namev");

System.out.println(namevalue);

 

 

3.设置ServletContext初始化参数,然后对其之。

/* <context-param>

   <param-name>data</param-name>

   <param-value>aaaaa</param-value>

 </context-param>*/

 

输出代码 :System.out.println(this.getServletContext().getInitParameter("data"));

 

 

 

4. 编写一个转发

package csdn.hbsi;

 

import java.io.IOException;

import java.io.PrintWriter;

 

import javax.servlet.RequestDispatcher;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

importjavax.servlet.http.HttpServletRequest;

importjavax.servlet.http.HttpServletResponse;

 

public class Context extends HttpServlet {

 

       publicvoid doGet(HttpServletRequest request, HttpServletResponse response)

                     throwsServletException, IOException {

              RequestDispatcherrt = this.getServletContext().getRequestDispatcher("/index.jsp");

              rt.forward(request,response);

 

 

       }

 

       publicvoid doPost(HttpServletRequest request, HttpServletResponse response)

                     throwsServletException, IOException {

              doGet(request, response);

       }

 

 

}

 

 

5.通过ServletContext读取配置文件的内容。(使用两种方式)

方法一:

InputStream in =this.getServletContext().getResourceAsStream("WEB-INF/classes/db.properties");

Properties pro = new Properties();

pro.load(in);

String driver =pro.getProperty("driver");

String url =pro.getProperty("url");

String name =pro.getProperty("name");

String possword =pro.getProperty("possword");

System.out.println(driver+"..."+url+"..."+name+"..."+possword);

 

 

方法二:

String path =this.getServletContext().getRealPath("WEB-INF/classes/db.properties");

FileInputStream fis = newFileInputStream(path);

Properties pro1 = new Properties();

pro1.load(fis);

String driver1 =pro1.getProperty("driver");

String url1 =pro1.getProperty("url");

String name1 =pro1.getProperty("name");

String possword1 =pro1.getProperty("possword");

System.out.println(driver1+"..."+url1+"..."+name1+"..."+possword1);

 

 

6.通过一般的java类读取配置文件的内容。

InputStream in3 =Context2.class.getClassLoader().getResourceAsStream("db.properties");

Properties pro3 = new Properties();

pro3.load(in3);

String driver3 =pro3.getProperty("driver");

String url3 =pro3.getProperty("url");

String name3 = pro3.getProperty("name");

String possword3 =pro3.getProperty("possword");

System.out.println(driver3+"..."+url3+"..."+name3+"..."+possword3);

 

原创粉丝点击