Servlet共享变量与作用域

Servlet可以使用setAttribute("name","value")来设置共享变量的名称和变量的值。其他Servlet可以通过调用getAttribute("name")来获取name所对应的value,而且返回的是Object类型。

request session  servletcontext的作用域如下代码得出:

TestScopeServlet页面

//request请求,请求结束作用域结束
  request.setAttribute("request_name","request_value");
  //session会话
  HttpSession session = request.getSession();
  session.setAttribute("session_name", "session_value");
  //servlet全局,所有用户共享
  ServletContext cxt =this.getServletContext();
  cxt.setAttribute("servletcontext_name", "servletcontext_value");

request.getRequestDispatcher("/servlet/ResultServlet").forward(request, response);//使用request请求转发功能,本页面不可以flush
  

ResultServelt页面

String request_value = (String)request.getAttribute("request_name");
  HttpSession session = request.getSession();
  String session_value = (String)session.getAttribute("session_name");
  ServletContext cxt = this.getServletContext();
  String servletcontext_value = (String)cxt.getAttribute("servletcontext_name");

PrintWriter pw = response.getWriter();
  response.setContentType("text/html");
  PrintWriter out = response.getWriter();
  out
    .println("<!DOCTYPE HTML PUBLIC /"-//W3C//DTD HTML 4.01 Transitional//EN/">");
  out.println("<HTML>");
  out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
  out.println("  <BODY>");
  out.println(request_value);
  out.println(session_value);
  out.println(servletcontext_value);
  out.println("  </BODY>");
  out.println("</HTML>");
  out.flush();
  out.close();

 

通过实验所得结果:

调用servlet/TestScope页面则直接跳转到ResultServlet页面 并且request,session,servletcontext共享变量都在后者显示出来。

而直接调用ResultServlet 结果为:null session_value servletcontext_value。得出结论request的作用域是针对请求的,请求结束共享变量作用域则结束。

而新开一个IE再进入ResultServlet结果为:null  null  servletcontext_value。得出结论session是针对浏览器的,servletcontext是作用于全部对象的全局共享变量。

得出结果  作用域大小由小到大依次为 request<session<servletcontext即请求作用域小于同一浏览器作用域小于全局作用域.实际上最小的作用域是page。

jsp原理同理

可以新建test.jsp页面

在body中编写

${requestScope.request_name}

${sessionScope.session_name}

${Application.servletcontext_name}

与之相对应

比如统计在线人数可以使用全局作用域

比如上网帐号或银行帐号密码放到session

请求里放一个共享变量则放到request里

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值