您的位置:首页 > Web前端 > JavaScript

【DRP分销】--- JSP的四个常用对象的作用域

2016-05-27 08:42 465 查看
作用域就是限定可用范围的一个名词,如果用在编程中,就是说我们给一个变量命名,是在一定的范围内有效的,出了这个范围这个命名就没有作用了。给变量建立作用域有助于增强程序的可靠性和减少名字冲突。
    通过这几天的学习,发现了JSP的四个常用的作用于:page、request
、session、和application。下面就让我来总结一下这四个作用域。

1、page:
    这个JSP内置对象的作用域可以说是最小的,它只是对本页面起作用,如果换了页面就没有用了。JSP中的pageContext对象和response对象以及page对象等都属于page级别的作用域。
    在DRP分销中的应用就是每个页面中声明JSP页面的时候用的语句:
   <%@ page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%>
    还有在JSP页面中声明变量引用的时候:
    <%@page import="com.bjpowernode.drp.sysmgr.domain.*"%>

再比如pageContext对象的用法:
pageContext.setAttribute("countPage", 1); //将变量放入pageContext中
pageContext.getAttribute("countPage")

   这些都不是公用的,必须得写一个页面就得重新添加的。

2、request:
    这个JSP内置对象很常见,常用语页面跳转的时候获得url中的参数。也就是在数据提交,表单提交的时候就可以用到这个对象。它的作用域比page大,可以跨越两个页面,但是一旦这个对象在另一个页面被使用,或者HTTP请求服务器的处理工作结束了,它就立刻释放了!
    我们可以用requst.getParameter()从上一个页面中的url和form中获取传递的参数。
    例如:
    在主页面中需要跳转到修改页面,需要在主页面的js中写一个路径,并把参数写入url中:
    window.self.location = "user_modify.jsp?userId=" + selectFlags[j].value;
    那么我在修改页面需要用到userId这个参数的时候就需要写如下代码:
    String userId = request.getParameter("userId");

3、session:
    session的作用域又比request大,它可以横跨多个界面传值,只要浏览器不关闭,没有设置session的过期时间,就会存在很长时间。它可以用来追踪用户登录和退出等动作。但它比request消耗的资源多,并且不是非常安全。
    如登录之后需要在每个页面中显示登录的用户名,那么登录后就需要保存用户信息在很多页面中都显示。
    在登录页面中将信息添加到session中:
     //将用户信息设置到session中
            session.setAttribute("user_info", user);
    然后再在每个页面的工具栏中从session中拿到信息:
    User user = (User)session.getAttribute("user_info");

4.application(servletContext)
    它的有效范围是整个应用。任何人登录这个应用程序都可以取到这个作用域里面的变量。它们的存活时间是最长的,如果不进行手工删除,它们就一直可以使用 。并且application里面的变量是可以被所有用户公用的,如果某一个人修改了application中的变量,那么另一个人使用的时候变量就会改变。这种情况在其他三个对象中是不存在的。

至今还没有碰到用它的,先搁置。
    在最近做的DRP视频中讲到了,示例如下:
     将作用域全局的application变量放到配置文件中:
     <!-- 设置application对象,可以在应用程序的任何地方都取到 -->

    <context-param>
        <param-name>page-size</param-name>
        <param-value>2</param-value>
    </context-param>

    然后本应用程序的任何地方都可以取到这个参数值:
    //从application范围内取得page-size,在本程序application指的是ServletContext对象
        int pageSize = Integer.parseInt(this.getServletContext().getInitParameter("page-size"));
    

最后,咱们简单的了罗列一下JSP的9个内置对象:out/request/response/pageContext/session/application/config/exception/page(指JSP页面)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: