jsp:useBean動作最簡單的文法為:
<jsp:useBean id="guessBiz" class="biz.GuessBiz" scope="session" />
這行代碼的含義是:“建立一個由class屬性指定的類的執行個體,然後把它綁定到其名字由id屬性給出的變數上”。
此時,jsp:useBean動作只有在不存在同樣id和scope的Bean時才建立新的對象執行個體。
我們既可以通過jsp:setProperty動作的value屬性直接提供一個值,也可以在Scriptlet中利用id屬性所命名的物件變數,通過調用該對象的方法顯式地修改其屬性(比如:<% guessBiz.setName("name"); %>),也可以通過param屬性聲明Bean的屬性值來自指定的請求參數,還可以列出Bean屬性工作表明它的值應該來自請求參數中的同名變數。
屬性用法:
id 命名引用該Bean的變數。如果能夠找到id和scope相同的Bean執行個體,jsp:useBean動作將使用已有的Bean執行個體而不是建立新的執行個體。
class 指定Bean的完整包名。
scope 指定Bean在哪種上下文內可用,可以取下面的四個值之一:page,request,session和application。
預設值是page,表示該Bean只在當前頁面內可用(儲存在當前頁面的PageContext內)。
request表示該Bean在當前的客戶請求內有效(儲存在ServletRequest對象內)。
session表示該Bean對當前HttpSession內的所有頁面都有效。
最後,如果取值application,則表示該Bean對所有具有相同ServletContext的頁面都有效。
scope之所以很重要,是因為jsp:useBean只有在不存在具有相同id和scope的對象時才會執行個體化新的對象;如果已有id和scope都相同的對象則直接使用已有的對象,此時jsp:useBean開始標記和結束標記之間的任何內容都將被忽略。
type 指定引用該對象的變數的類型,它必須是Bean類的名字、超類名字、該類所實現的介面名字之一。請記住變數的名字是由id屬性指定的。
beanName 指定Bean的名字。如果提供了type屬性和beanName屬性,允許省略class屬性。
例子:這是一個猜數的例子
input.jsp
代碼
web.xml
代碼
ActionServlet.java
代碼