JavaWeb学习笔记-09上下文对象
Posted Moon&&Dragon
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaWeb学习笔记-09上下文对象相关的知识,希望对你有一定的参考价值。
上下文对象
1、什么是上下文对象
Web容器在启动以后,里面会有很多web的程序,容器会问每一个web程序创建一个队员的ServletConntext对象,这是一个全局变量,每个web程序都可以通过一些组件读取他,这样有助于数据的共享
上下文对象是 服务器容器的全局变量,所有的servlet访问的上下文都是同一个,但是 当服务器关闭后,上下文对象消失
获取上下文对象:
// 获取本服务器的上下文对象 ServletContext sc = this.getServletContext();
2、上下文对象的常用方法
常用方法:
绑定数据
setAttribute(String key,Object value);
@WebServlet("/first") public class FirstServlet extends HttpServlet { @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // 获取servlet上下文对象 ServletContext sc = this.getServletContext(); // 绑定参数 String str = "每个人的身上都有毛毛..."; sc.setAttribute("song",str); } }
获取绑定的数据:
getAttribute(String key);
@WebServlet("/second") public class SecondServlet extends HttpServlet { @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // 所有的servlet都可以调用同一个上下文对象 // 获取上下文对象 ServletContext sc = this.getServletContext(); // 获取绑定参数 String song =(String)sc.getAttribute("song"); System.out.println(song); } }
移除(删除)数据:
removeAttribute(String key);
@WebServlet("/second") public class SecondServlet extends HttpServlet { @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // 获取上下文对象 ServletContext sc = this.getServletContext(); // 移除绑定参数 sc.removeAttribute("song"); } }
获取服务器版本号、地址、路径…等等
3、上下文对象案例
案例—获取访问当前请求人数
思路
来一个 count+1 来一个 count+1 所以count必须是是全局变量 使用上下文绑定 每次添加的时候判断 1、如果count不存在,说明是第一次访问,绑定("count",1) 2、直接获得count++
servlet
@WebServlet("/count") public class CountServlet extends HttpServlet { @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.setCharacterEncoding("utf-8"); // 设置响应格式 resp.setContentType("text/html;charset=utf-8"); // 获得上下文对象 ServletContext sc = this.getServletContext(); // 获得访问的人数 Object count = sc.getAttribute("count"); // 如果count==null,说明第一次访问 if (count==null){ // 绑定count到上下文 sc.setAttribute("count",1); } else{ // 先将对象转化为字符串,再把字符串转化为数字 Integer newCount = Integer.parseInt(count.toString())+1; sc.setAttribute("count",newCount); } // 输出页面 PrintWriter writer = resp.getWriter(); writer.println("访问人数为:"+sc.getAttribute("count")); } }
服务器如果没有关,不管在哪个浏览查看,都会是最新的人数,只有 当服务器关闭,才会归0
以上是关于JavaWeb学习笔记-09上下文对象的主要内容,如果未能解决你的问题,请参考以下文章