JSP_8th_useBean的scope属性
2017-05-31 23:47
357 查看
一、scope各项参数的意义:
①page:仅涵盖使用JavaBean的页面。之前已举例。
②request:有效范围仅限于JavaBean的请求。
生成一个request范围内的JavaBean对象:
这样看可能没有什么概念,上面这种声明相当于下面这种:
即直接从request对象中拿counterBean,由于返回值是Object类型,需要强制转换为CounterBean类型。
如果拿出来为NULL,说明还没有这个JavaBean对象,则生成一个,并且放到request对象中来。
这样,只要request对象是相同的,就可以访问到相同的JavaBean对象。
举例:
RequestBean.jsp如下所示:
其中的跳转页面RequestBean2.jsp如下所示:
RequestBean2.jsp在加载useBean时会从request对象中键名为"counterBean"的值,由于在RequestBean.jsp中已经生成了counterBean,并set到了request对象中,则直接取出来就可以用。
③session:有效范围在用户整个会话阶段均有效
生成一个request范围内的JavaBean对象:
也就相当于:
举例SessionBean.jsp:
再写一个使用了useBean的jsp:SessionBean2.jsp如下所示:
第一次访问:http://localhost:8080/TestJSP/SessionBean.jsp,页面效果如下:
多次访问后:
而此时在同一个窗口中访问:http://localhost:8080/TestJSP/SessionBean2.jsp,
用别的浏览器访问,则被当做另一个客户端,会创建新的session对象,也会创建新的CounterBean对象,从0自加起:
④application:有效范围涵盖整个应用程序,也就是对整个网站均有效。
生成一个ServletContext范围内的JavaBean对象:
相当于:
只要Tomcat不重启,该counterBean对象就会一直被保存在application对象中,在另一个jsp中就可以使用jsp:useBean 来拿出该counterBean对象。也是由于保存在application对象中的缘故,counterBean对象属于Tomcat启动后,任何时刻要访问它的客户端请求。
①page:仅涵盖使用JavaBean的页面。之前已举例。
②request:有效范围仅限于JavaBean的请求。
生成一个request范围内的JavaBean对象:
<jsp:useBean id="counterBean" class="com.hpe.bean.CounterBean" scope="request"> </jsp:useBean>
这样看可能没有什么概念,上面这种声明相当于下面这种:
<%@ page import="com.hpe.bean.CounterBean" %> <% CounterBean counterBean = (CounterBean)request.getAttribute("counterBean"); if(counterBean == null) { counterBean = new CounterBean(); request.setAttribute("counterBean", counterBean); } %>
即直接从request对象中拿counterBean,由于返回值是Object类型,需要强制转换为CounterBean类型。
如果拿出来为NULL,说明还没有这个JavaBean对象,则生成一个,并且放到request对象中来。
这样,只要request对象是相同的,就可以访问到相同的JavaBean对象。
举例:
RequestBean.jsp如下所示:
<jsp:useBean id="counterBean" class="com.hpe.bean.CounterBean" scope="request"> </jsp:useBean>
<html>
<body>
<h3>CounterBean scope="request" Example</h3>
<% counterBean.setCount(100); %>
<jsp:forward page="RequestBean2.jsp" />
</body>
</html>
其中的跳转页面RequestBean2.jsp如下所示:
<jsp:useBean id="counterBean" class="com.hpe.bean.CounterBean" scope="request"> </jsp:useBean>页面效果:
<html>
<body>
<h3>CounterBean scope="request2" Example</h3>
<strong>Count: </strong><%= counterBean.getCount() %>
</body>
</html>
RequestBean2.jsp在加载useBean时会从request对象中键名为"counterBean"的值,由于在RequestBean.jsp中已经生成了counterBean,并set到了request对象中,则直接取出来就可以用。
③session:有效范围在用户整个会话阶段均有效
生成一个request范围内的JavaBean对象:
<jsp:useBean id="counterBean" class="com.hpe.bean.CounterBean" scope="session"> </jsp:useBean>
也就相当于:
<%@ page import="com.hpe.bean.CounterBean" %> <% CounterBean counterBean = (CounterBean)session.getAttribute("counterBean"); if(counterBean == null) { counterBean = new CounterBean(); session.setAttribute("counterBean", counterBean); } %>
举例SessionBean.jsp:
<jsp:useBean id="counterBean" class="com.hpe.bean.CounterBean" scope="session"> </jsp:useBean>
<html>
<body>
<h3>CounterBean scope="session" Example</h3>
<strong>Count: </strong><%= counterBean.getCount() %>
</body>
</html>
再写一个使用了useBean的jsp:SessionBean2.jsp如下所示:
<jsp:useBean id="counterBean" class="com.hpe.bean.CounterBean" scope="session"> </jsp:useBean>
<html>
<body>
<h3>CounterBean scope="session2" Example</h3>
<strong>Count: </strong><%= counterBean.getCount() %>
</body>
</html>
第一次访问:http://localhost:8080/TestJSP/SessionBean.jsp,页面效果如下:
多次访问后:
而此时在同一个窗口中访问:http://localhost:8080/TestJSP/SessionBean2.jsp,
用别的浏览器访问,则被当做另一个客户端,会创建新的session对象,也会创建新的CounterBean对象,从0自加起:
④application:有效范围涵盖整个应用程序,也就是对整个网站均有效。
生成一个ServletContext范围内的JavaBean对象:
<jsp:useBean id="counterBean" class="com.hpe.bean.CounterBean" scope="application"> </jsp:useBean>
相当于:
<%@ page import="com.hpe.bean.CounterBean" %> <% CounterBean counterBean = (CounterBean)application.getAttribute("counterBean"); if(counterBean == null) { counterBean = new CounterBean(); application.setAttribute("counterBean", counterBean); } %>
只要Tomcat不重启,该counterBean对象就会一直被保存在application对象中,在另一个jsp中就可以使用jsp:useBean 来拿出该counterBean对象。也是由于保存在application对象中的缘故,counterBean对象属于Tomcat启动后,任何时刻要访问它的客户端请求。
相关文章推荐
- jsp:useBean 不能编译成class或者没有class这个属性
- JSP中scope属性
- jsp useBean scope属性的区分
- ${requestScope.message} jsp EL 表达式获取不到ModelAndView属性
- jsp中useBean动作的scope可以制定四种范围(page,request,session,application)的区别
- jsp:bean标签中scope属性的四种属性值理解
- weblogic在处理jsp tag的scope属性时的BUG???
- jsp:useBean 不能编译成class或者没有class这个属性
- jsp useBean scope属性的区分
- jsp中scope属性
- JSP中scope属性 scope属性决定了JavaBean对象存在的范围
- jsp:useBean的属性class值一直报错的问题
- jsp:useBean 不能编译成class或者没有class这个属性
- jsp:useBean 不能编译成class或者没有class这个属性
- 关于JSP中JavaBean的Scope属性
- jsp:useBean 不能编译成class或者没有class这个属性
- jsp中useBean动作的scope可以制定四种范围(page,request,session,application)的区别
- jsp:useBean 不能编译成class或者没有class这个属性
- jsp scope属性
- jsp中scope属性