一、實驗目的
2_1本實驗的目的是掌握怎樣在JSP頁面中使用成員變量,怎樣使用Java程序片和Java表達式。
2_2 本實驗的目的是掌握怎樣在JSP頁面中使用include指令在JSP頁面中靜態插人一個文件的內容。
2_3本實驗的目的是掌握怎樣在JSP頁面中使用include標記動態加載文件;使用forward動作標記實現頁面的轉向。
二、實驗步驟
實驗2_1:編寫兩個JSP頁面,名字分別爲input.jsp和people.jsp.
input.jsp的具體要求:該頁面有一一個表單,用戶通過該表單輸人自己的姓名並提交給people.jsp頁面。
people.jsp的具體要求:
(1)JSP頁面有名字爲personList,類型是StringBuffer以及名字是count,類型爲int的成員變量。
(2)JSP頁面有publicvoidjudge()方法,該方法負責創建personList對象,當count的值是0時,judge ()方法創建personList對象。
(3) JSP頁面有public void addPerson(String p)的方法,該方法將參數p指定的字符串尾加到成員變量personList,同時將count作自增運算。
(4)JSP頁面在程序片中獲取input.jsp頁面提交的姓名,然後調用judge()創建personList對象,調用addPerson方法將用戶的姓名尾加到成員變量personList。
(5)如果input.jsp頁面沒有提交姓名,或姓名含有的字符個數大於10,就使用jsp:forwardpages"要轉向的頁面"/標記將用戶轉到input.jsp頁面。
(6)通過Java表達式輸出personList和count的值。
**實驗2_2:**編寫一個JSP頁面includeHello.jsp,使用include指令在JSP頁面中靜態插入hello.txt的內容。要求用“記事本”編寫一個txt文件hello. txt。 hello. txt的每行有若千個英文單詞,這些單詞之間用空格分隔,每行之間用“<
”分隔,如下:
hello. txt
bird apple boy red moon
shop throw ball book welcome
includeHello.jsp使用page指令設置contentType屬性的值爲" text/plain",使用include指令靜態插人hello.txt文件。
**實驗2_3:**編寫4個JSP頁面: one.jsp. two.jsp、three.jsp和error.jsp。 one.jsp、two.jsp和three.jsp頁面都含有一個導航條,以便讓用戶方便地單擊超鏈接訪問這三個頁面。要求這三個頁面通過使用include動作標記動態加載導航條文件head.txt。導航條文件head.txt的內容如下:
head. txt
<%@ page contentType = “text/html;charset = gb2312” %>
one.jsp頁面 | two.jsp頁面 | three.jsp頁面 |
實驗2_1參考代碼:
Input.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<body bgcolor = cyan><FONT size = 3>
<form action="people.jsp" method=get name =form>
請輸入姓名:<input type="text" name="name">
<br><input type="submit" value="送出" name = submit>
</form>
</body>
</html>
People.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<body bdcolor = yellow><font Size = 3>
我的 JSP page <br>
<%! int count;
StringBuffer personList;
public void judge(){
if(count==0){
personList=new StringBuffer();
}
}
public void addPerson(String p){
if(count==0){
personList.append(p);
}else{
personList.append(","+p);
}
count++;
}
%>
<%
String name=request.getParameter("name");
if(name==null||name.length()==0||name.length()>10){
%><jsp:forward page="input.jsp"/><%
}
judge();
addPerson(name);
%>
<br> 目前共有<%= count %>人瀏覽量該頁面,他們的名字是:
<br> <%= personList %>
</font>
</body>
</html>
實驗2_2參考代碼:
includehello.jsp
<%@ page language="java" contentType="text/plain; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><body><font size=4 color=blue>
<%@include file="hello.txt" %>
</font></body></html>
實驗2_3參考代碼:
one.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<head>
<jsp:include page = "head.txt"/>
</head>
<html>
<body bgcolor = yellow>
<form action = "" method = get name = form>
請輸入1-100之間的整數:<input type = "text" name ="number">
<br> <input type = "submit" value ="送出" name ="submit" >
</form>
<%String num = request.getParameter("number");
if(num == null)
num= "0" ;
try{ int n= Integer.parseInt(num);
if(n>=1&&n<=50){
%> <jsp:forward page= "two.jsp">
<jsp:param name = "number" value= "<%= n %>"/>
</jsp:forward>
<% }
else if(n>50&n<=100){
%> <jsp:forward page = "three.jsp" >
<jsp:param name = "number" value= "<%= n %>"/>
</jsp:forward >
<% }
else if(n> 100){
%> <jsp:forward page = "error.jsp" >
<jsp:param name = "number" value= "<%= n %>"/>
</jsp:forward >
<% }
}
catch(Exception e){
%> <jsp:forward page = "error.jsp" >
<jsp:param value="<%= e.toString()%>" name="mess"/>
</jsp:forward >
<% }
%>
</body>
</html>
two.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<head>
<jsp:include page = "head.txt"/>
</head>
<html>
<body bgcolor = yellow>
<p><font size = 2 color = blue>This is two.jsp</font>
<font size=3>
<% String s = request.getParameter("number");
out.println("<BR> 純遞過來的值是"+ s);
%>
<BR><img src = "a.jpg" with = "<%= s %>" height = "<%= s%>"></img>
</font>
</body>
</html>
three.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<head>
<jsp:include page = "head.txt"/>
</head>
<html>
<body bgcolor = yellow>
<p><font size = 2 color=red>This is three.jsp</font>
<font size = 3>
<% String s =request.getParameter("number");
out.println("<BR> 傳遞過來的值是"+s);
%>
<BR><img src = "a.jpg" width = "<%= s %>" height = "<%= s%>"></img>
</font>
</body>
</html>
error.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<head>
<jsp:include page = "head.txt"/>
</head>
<html>
<body bgcolor = yellow>
<p><font size =5 color = red>This is error.jsp</font>
<font size=2>
<% String s = request.getParameter("mess");
out.println("<BR>傳遞過來的錯誤信息"+s);
%>
<BR><img src = "back.jpg" width = "120" height = "120"></img>
</font>
</body>
</html>
四、實驗結果
實驗2_1結果截圖:
(漢字亂碼問題還不知怎麼解決,有知道的歡迎告知,不勝感激)
實驗2_2結果截圖:
實驗2_3結果截圖:
五、討論
1.一個JSP頁面可由普通的HTML標記、JSP標記、成員變量和方法的聲明、Java程序片和Java表達式組成。JSP引擎把JSP頁面中的HTML標記交給用戶的瀏覽器執行顯示,負責處理JSP標記、變量和方法,同時負責運行Java程序片、計算Java表達式,並將需要顯示的結果發送給用戶的瀏覽器。
2.JSP頁面中的成員變量是被所有用戶共享的變量。Java程序片可以操作成員變量,任何–個用戶對JSP頁面成員變量操作的結果,都會影響其他用戶。
3.如果多個用戶訪問一個JSP頁面,那麼該頁面中的Java程序片就會被執行多次,分別運行在不同的線程中,即運行在不同的時間片內。運行在不同線程中的Java程序片的局部變量互不干擾,即一個用戶改變Java程序片中的局部變量的值不會影響其.他用戶的Java程序片中的局部變量。
4.page指令用來定義整個JSP頁面的一些屬性和這些屬性的值。比較常用的兩個屬性是contentType和import。page 指令只能爲contentType指定一個值,但可以爲import屬性指定多個值。
5.include指令標記是在編譯階段就處理所需要的文件,被處理的文件在邏輯和語法上依賴於當前JSP頁面,其優點是頁面的執行速度快;而include動作標記是在JSP頁面運行時才處理文件,被處理的文件在邏輯和語法上獨立於當前JSP頁面,其優點是可以使用param子標記更靈活地處理所需要的文件。