A. jsp中static聲明變數請往下看
你想用static控制抄什麼輸出啊襲?
明確的講,在這里,「如果把聲明中int j=0放到小腳本里」輸出結果是正常的, 沒有問題。
你面臨的輸出問題不是 static 的問題,而是J 的問題。
當jsp 被編譯成servlet之後,形式如下:
public class MyJsp extends HttpServlet{
static int i =0;
int j = 0;
}
發現問題沒有?j 是可以 累加的 , 而不是 每次刷新頁面(也就是請求該servlet)時 重新歸0的。
而 servlet spec 並沒有規定 實現的容器 必須保證 只有一個 servlet實例 。 所以 一二次的結果不對勁很正常。
按照編程慣例來說, 類似j的聲明是不被允許的, 將會面臨 多線程 或者 與 spec不保證相關的 諸多問題。
B. 急:jsp頁面中如何定義和引用變數
用<% .... %>就可以啊。
運行時,伺服器是要先編譯<% .... %>之間內容的。
在<body>里如何用,在<head>里就如何用,位置不影響對java語言的編譯。
C. jsp 中的變數
給你個完整的答復好了
<%!%>裡面聲明的是全局變數,比如
<%!int i = 0 ;%>
<%=i++%>
首先是一個全局變數i=0,那麼你每次刷新的話,變數i就會加1
<body>
<%! int i=0; %>
i=<%=i %><br>
i=<%=i++ %><br>
i=<%=i++ %>
i=<%=i+1%>
</body>
可以測試上面的代碼,你猜每次刷新後結果是什麼??測試了猜知道哦
<%%>裡面聲明的則是jsp的局部變數,刷新後變
<% int i = 0 ;%>
i=<%=i++%>
i=<%i+1%>
測試一下輸出是多少??
<body>
<%! int i=0; %>
i=<%=i+1 %><br>
<% int i=2; %>
i2=<%=i+1 %><br>
</body
測試輸出是多少???
記得加分!!
D. jsp定義變數問題
jsp頁面中<%! %>內定義的是全局變數。
使用<%! %>定義的變數編譯成servlet後成為專servlet的私有成員變數,在servlet環境屬中,對於一個JSP頁只允許有一個結果servlet的實例在運行和響應所有的頁面請求。因此,在結果servlet中所有的成員變數可以被所有的請求所共享,所以只要成員變數沒有重新賦值,下次訪問該頁面時仍然不變。而在<% %>中定義的變數編譯成servlet後成為service()方法的一個本地變數,而service()方法中的本地變數只能每響應一次請求就重建一次。
E. JSP中<%%>中定義的變數和<%!%>中定義的變數有什麼區別,thanks
1.注釋:<%-- --%>,例如:<%-- 新增方法 --%>,相當於內Java中的/* 新增方法 */
2.指令標記:容<%@ %>,例如:<%@ page import="java.util.List" %>,相當與Java中的
import java.util.List;
當然,還有:<%@ include file="......" %>等
3.聲明標記:<%! %>,例如:<%! private String name; %>,相當於Java中的private String name;聲明一個屬性
4.腳本標記:<% %>,例如:<% int i=0;%>,
5.表達式標記:<%= %>例如:<%=(2*5)%>,可以這么寫<b>I am <%=(2*5)%></b>