JSP動作包括:include,:useBean,:forward,:plugin,:setProperty,:getProperty
利用JSP動作可以包含進來文件(jsp:include)、調用JavaBean組件(jsp:useBean)、 跳轉到另外的頁面(jsp:forward)、調用Java插件(jsp:plugin)、讀取屬性jsp:setProperty和jsp:getProperty等。馬克- to-win:馬克 java社區:防盜版實名手機尾號: 73203。
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.1
package 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);
}
}
原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/203877.html