ServletContext及相关案例

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ServletContext及相关案例相关的知识,希望对你有一定的参考价值。

ServletContext对象 (域对象)

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

  一个WEB运用对应一个ServletContext对象

  一个WEB运用下有多个Servlet程序

所有的Servlet程序都共享同一个ServletContext对象

作用

1、获取WEB运用的全局初始化参数         案例和ServletConfig类似

String getInitParameter(String name)

Enumeration getInitParameters()

  配置全局初始化参数    在<Servlet>外面

<Context-param>

   <param-name>assasasa</param-name>

   <param-value>fdsfdsfsd<param-value>

</Context-param>

2、实现数据共享

void setAttribute(String name,Object object) 存入数据

void removeAttribute(String name)    删除数据

  • object getAttribute(String name)   获取数据

3、读取资源文件

InputStream getResourceAsStream(String path)  通过文件地址获取输入流

String getRealPath(String path)  通过文件地址获取文件的绝对磁盘路径

 

统计网站访问量

package cn.idcast.Servlet;

import java.io.IOException;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class ServletCount extends HttpServlet {
	/**
	 * 实例被创建,调用init进行初始化 在域对象存入一个变量,初始化为0
	 */
	public void init() throws ServletException {
		getServletContext().setAttribute("count", 0);
	}

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		/**
		 * 每一次访问,都会执行该方法 获得count的变量,每次访问count都会自增,再存入到域对象中
		 */
		ServletContext sc = getServletContext();
		// 因为count 是数字,所以用integer
		Integer count = (Integer) sc.getAttribute("count");
		// ++i是先处理完加法,再做其它运算, i++是处理完相关运算(执行完一条语句后)后自加
		sc.setAttribute("count", ++count);
		// 向页面输出内容
		response.setContentType("text/html;charset=UTF-8");
		response.getWriter().write("<h3>下次再来</h3>");
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doGet(request, response);
	}

}

  

package cn.idcast.Servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class ServletShow extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		Integer count = (Integer) getServletContext().getAttribute("count");
		// 向页面输出内容
		response.setContentType("text/html;charset=UTF-8");
		response.getWriter().write("<h3>一共访问了" + count + "次</h3>");
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doGet(request, response);
	}

}

  

以上是关于ServletContext及相关案例的主要内容,如果未能解决你的问题,请参考以下文章

记账本开发记录——第十三天(2020.1.31)

Servlet - ServletContext相关

Cookie和Session的工作流程及区别(附代码案例)

Servlet及相关类和接口

Servlet及相关类和接口

ServletConfig对象和ServletContext对象