zoukankan      html  css  js  c++  java
  • Servlet之ServletContext获取web上下文路径、全局参数、和Attribute(域)

    1)获取web上下文路径

    public void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            //获取ServletContext对象
            //this.getServletConfig().getServletContext();
            //等同于下面一句,因为创建getServletContext必须要通过getServletConfig对象
            ServletContext context = this.getServletContext();
            
            //获取web的上下文路径,
            String path = context.getContextPath();
            
            //请求重定向,这样的好处可以让获取的路径更加灵活。不用考虑项目名是否发生了变化。
            response.sendRedirect(context.getContextPath()+"/index.jsp");
        }
    }


    2)获取全局参数

    public class ServletContextDemo1 extends HttpServlet {
        /**
         * 获取全局参数
         */
        public void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
             ServletContext context = this.getServletContext();
             //根据参数名获取参数值
             System.out.println(context.getInitParameter("MMM"));
             //获取所有的参数名,返回枚举类型
             Enumeration<String> emn = context.getInitParameterNames();
             while(emn.hasMoreElements()){
                 String paramName = emn.nextElement();
                 String paramValue = context.getInitParameter(paramName);
                 System.out.println(paramName+"="+paramValue);
             }
        }
     
    }

    3)和域相关

    域:域对象在不同的资源之间来共享数据,保存数据,获取数据。

    这个我使用了三个Servlet来说明这个问题,ScopeDemo1用于获取Attribute,ScopeDemo2用于设置Attribute,ScopeDemo3用于删除Attribute。

    保存共享数据:

    public class ScopeDemo2 extends HttpServlet {
        public void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            //首先创建ServletContext对象
        ServletContext context =     this.getServletContext();
        //保存共享数据
        context.setAttribute("name", "zhangsan");//第一个参数为字符串,第二个是Object(也就是任意类型)
        System.out.println("设置成功");
        
        }
     
    }

    获取恭喜数据:

    public class ScopeDemo1 extends HttpServlet {
        public void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            //创建ServletContext对象
            ServletContext context = this.getServletContext();
            //获取共享数据内容
            String name = (String)context.getAttribute("nnn");
            System.out.println(name);
        }
    }


    删除共享数据:

    public class ScopeDemo3 extends HttpServlet {
        public void doGet(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
            //获取ServletContext对象
            ServletContext context =     this.getServletContext();
            //删除共享数据
            context.removeAttribute("name");
            System.out.println("删除成功");        
        }
    }
  • 相关阅读:
    python 多线程测试
    python 多线程join()
    python 多线程 t.setDaemon(True):
    线程锁
    python 多线程
    模板渲染和参数传递.
    求两个数组的交集
    java数组并集/交集/差集(补集)
    java各种集合的线程安全
    页面跳转和重定向
  • 原文地址:https://www.cnblogs.com/toSeeMyDream/p/9309902.html
Copyright © 2011-2022 走看看