ServletContext概述
servletContext概述
ServletContext: 是一个全局对象, 上下文对象.
服务器为每一个应用(项目)都创建了一个ServletContext对象。 ServletContext属于整个应用(项目)的,不局限于某个Servlet。并且整个项目有且只会有一个ServletContext对象
ServletContext作用
作为域对象存取数据,让Servlet共享(掌握)
获得文件MIME类型(文件下载)(了解)
获得全局初始化参数(了解)
获取web资源路径 ,可以将Web资源转换成字节输入流(掌握)
ServletContext的功能
作为域对象存取值
API
- getAttribute(String name) ;向ServletContext对象的map取数据
- setAttribute(String name, Object object) ;从ServletContext对象的map中添加数据
- removeAttribute(String name) ;根据name去移除数据
代码
package com.jwang.servlet;
import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException;
@WebServlet("/demo01") public class ServletDemo01 extends HttpServlet { @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String name = "周杰棍"; ServletContext servletContext = getServletContext(); servletContext.setAttribute("name",name); } }
|
package com.jwang.servlet;
import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException;
@WebServlet("/demo02") public class ServletDemo02 extends HttpServlet { @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ServletContext servletContext = getServletContext(); String name = (String) servletContext.getAttribute("name");
System.out.println("在ServletDemo02中获取的name是:" + name); } }
|
获得文件mime-type
- getMimeType(String file)
- 代码
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String file01 = "a.mp3"; String file02 = "b.png"; String mimeType01 = getServletContext().getMimeType(file01); String mimeType02 = getServletContext().getMimeType(file02);
response.getWriter().print("ServletDemo05..."+mimeType01+":"+mimeType02);
}
|
获得全局初始化参数
- String getInitParameter(String name) ; //根据配置文件中的key得到value;
在web.xml配置

通过ServletContext来获得

获取web资源路径
- API
- String getRealPath(String path);根据资源名称得到资源的绝对路径.
- getResourceAsStream(String path) ;返回制定路径文件的流
注意: filepath:直接从项目的根目录开始写
- 代码
@WebServlet("/demo04") public class ServletDemo04 extends HttpServlet { @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); }
@Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ServletContext servletContext = getServletContext();
InputStream is = servletContext.getResourceAsStream("mm.jpg"); System.out.println(is); } }
|
统计网站被访问的总次数
需求

思路分析
代码实现
package com.jwang.servlet;
import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException;
@WebServlet("/count") public class CountServlet extends HttpServlet { @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); }
@Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ServletContext servletContext = getServletContext(); Object count = servletContext.getAttribute("count");
if (count == null) { servletContext.setAttribute("count",1); }else { int number = ((int) count) + 1; servletContext.setAttribute("count",number); } response.getWriter().write("WelCome!!!"); } }
|
package com.jwang.servlet;
import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException;
@WebServlet("/show") public class ShowServlet extends HttpServlet { @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); }
@Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ServletContext servletContext = getServletContext();
int count = (int) servletContext.getAttribute("count");
response.getWriter().print("access count is:"+count); } }
|