zoukankan      html  css  js  c++  java
  • 动手学servlet(五) 共享变量

     1、 无论对象的作用域如何,设置和读取共享变量的方法是一致的

      -setAttribute("varName",obj);

      -getAttribute("varName");

      2、变量的作用域

             ServletContext:范围最大,应用程序级别的,整个应用程序都能访问

             HttpSession:次之,会话级别的,在当前的浏览器中都能访问

             HttpServletRequest:范围最小,请求级别。请求结束,变量的作用域也结束

    设置共享变量

    package servletdemo;
    
    import java.io.IOException;
    
    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 javax.servlet.http.HttpSession;
    
    /**
     * Servlet implementation class SetServletVar
     */
    @WebServlet("/SetServletVar")
    public class SetServletVar extends HttpServlet {
        private static final long serialVersionUID = 1L;
           
        /**
         * @see HttpServlet#HttpServlet()
         */
        public SetServletVar() {
            super();
            // TODO Auto-generated constructor stub
        }
    
        /**
         * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
         */
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            // TODO Auto-generated method stub
            ServletContext ctx=this.getServletContext();
            ctx.setAttribute("ctx_name", "ctx_value");
            HttpSession session=request.getSession();
            session.setAttribute("session_name", "session_value");
            request.setAttribute("request_name", "request_value");
        }
    
        /**
         * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
         */
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            // TODO Auto-generated method stub
            doGet(request, response);
        }
    
    }
    代码

    获取共享变量(注意这是新建的一个Servlet)

    package servletdemo;
    
    import java.io.IOException;
    
    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 javax.servlet.http.HttpSession;
    
    /**
     * Servlet implementation class GetServetVar
     */
    @WebServlet("/GetServetVar")
    public class GetServetVar extends HttpServlet {
        private static final long serialVersionUID = 1L;
           
        /**
         * @see HttpServlet#HttpServlet()
         */
        public GetServetVar() {
            super();
            // TODO Auto-generated constructor stub
        }
    
        /**
         * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
         */
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            // TODO Auto-generated method stub
            ServletContext ctx=this.getServletContext();
            HttpSession session=request.getSession();
            String ctx_value=(String)ctx.getAttribute("ctx_name");
            String session_value=(String)session.getAttribute("session_name");
            String request_value=(String)request.getAttribute("request_name");
            System.out.println("ctx_value:"+ctx_value);
            System.out.println("session_value:"+session_value);
            System.out.println("request_value:"+request_value);
        }
    
        /**
         * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
         */
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            // TODO Auto-generated method stub
            doGet(request, response);
        }
    
    }
    代码

      我们看到HttpServletRequest变量为空,验证了这个变量作用域是在请求级别的,但是如果我们在设置了变量后跳转到GetServletVar

      request.getRequestDispatcher("GetServetVar").forward(request, response);那么输出的值就是"request_value";

  • 相关阅读:
    msfvenom生成不同类型shell
    (CVE-2021-21972) VM vCenter任意文件上传漏洞复现
    linux新建普通账户并添加密码
    Linux监控平台、安装zabbix、修改zabbix的admin密码
    LVS DR模式搭建、keepalived+lvs
    负载均衡集群相关、LVS介绍、LVS调度算法、LVS NAT模式搭建
    集群相关、用keepalived配置高可用集群
    MySQL主从、环境搭建、主从配制
    Tomcat配置虚拟主机、tomcat的日志
    Tomcat介绍、安装jdk、安装Tomcat、配置Tomcat监听80端口
  • 原文地址:https://www.cnblogs.com/SamFlynn/p/4508202.html
Copyright © 2011-2022 走看看