jsp:useBean动作到底有什么意义? jsp:useBean动作:马克- to-win:马克 java社区:防盗版实名手机尾号: 73203。马克-to-win:java bean大略来说很像过去的类,但是不必有main方法,但里面的将被jsp调用的方法必须是public型的。当把一大堆可被人调用的公共方法,放在一个黑匣子当中时,你以为这个黑匣子像个“豆”吗?bean的中文翻译便是“豆”。比较servlet,jsp的弱项就在于:当须要写大量业务代码时。现在好了,有了useBean这个动作,jsp一下就为虎傅翼了。useBean的scope属性可能让Bean关联到更多的页面,大大增加了bean的重用性。如果下面的例子中MyBean的方法不是public,程序运行时会报下面的缺点: ServletException: tried to access method com.MyBean.increment()V from class org.apache.jsp.jsp1_jsp
例 4.1.1package com;public class MyBean { private int count; public int getCount() { return count; } public void setCount(int count) { this.count = count; } public void increment() { count ++; }}jsp1.jsp:<jsp:useBean id="count1" class="com.MyBean" scope="session"/><jsp:useBean id="count2" class="com.MyBean" scope="session"/>Count1:<%count1.increment();%>you are <%=count1.getCount()%>Count2:you are <%=count2.getCount()%>输出结果,在浏览器中:Count1: you are 1 Count2: you are 0连续在同一个浏览器中刷新:数据会一贯上升。Count1: you are 2 Count2: you are 0换个浏览器,结果就回到了初始:Count1: you are 1 Count2: you are 0不雅观察转换成的servlet:<jsp:useBean id="count1" class="com.MyBean" scope="session"/>会被转换成:意思便是,session当中有没有count1,如没有,new一个,如有,就用过去的,这样在几个jsp页面和servlet之间就用session可以共享bean了。名字就叫count1. com.MyBean count1 = null; synchronized (session) { count1 = (com.MyBean) _jspx_page_context.getAttribute("count1", PageContext.SESSION_SCOPE); if (count1 == null){ count1 = new com.MyBean(); _jspx_page_context.setAttribute("count1", count1, PageContext.SESSION_SCOPE); } }
篇幅有限更多请见扩展链接。。。。。http://www.mark-to-win.com/tutorial/jsp_3_WhyuseBeanAction.html