5、JSP動作
JSP動作的主要作用是根據其指定的動作進行相應的處理。利用JSP動作可以實現引入文件、請求一個新的頁面、重用javaBean等功能。JSP動作主要有以下幾種:
><jsp:param>
><jsp:forward>
><jsp:include>
><jsp:plugin>
><jsp:useBean>
><jsp:setProperty>
><jsp:getProperty>
1)、param動作
<jsp:param>動作是用來給HTML文件和JSP文件傳遞參數,它經常和<jsp:forward>、<jsp:include>及<jsp:plugin>配合在一起使用。<jsp:param>動作的語法如下:
<jsp:param name=”fname”value=”fvalue”/>
其中name屬性表示傳遞參數的名稱,value屬性表示傳遞該參數的值。
在HTML中設置元素的屬性時不必加雙引號“”,但是在JSP中設置元素的屬性時必須加上雙引號“”,否則執行時會出現錯誤。在後面的講解中,將結合<jsp:forward>、<jsp:include>、<jsp:plugin>等動作講解<jsp:param>動作的用法。
2)、forward動作
<jsp:forward>動作用來將請求信息轉發到另一個頁面,<jsp:forward>動作只有一個page屬性。<jsp:forward>動作的語法如下:
<jsp:forawrdpage=”url”/>
其中page屬性包含的url是一個相對URL。
如果需要傳遞參數,<jsp:forward>動作的語法如下:
<jsp:forwardpage="url">
<jsp:param name="fname"value="fvalue"/>
</jsp:forward>
其中fname是參數名稱,fvalue是參數值。
<jsp:forward>動作轉發的頁面可以使HTML文件、JSP文件或者是一個Servlet,但這些文件必須位於同一個環境中。下面是一段關於<jsp:forward>動作轉發的代碼:
*.jsp
[html]
<%@ pagelanguage="java" contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%>
<%@includefile="test.html"%>
<html>
<head>
<title>forward 動作</title>
</head>
<body>
<h3>這是一個測試< jsp:forward>指令的頁面</h3>
<jsp:forwardpagejsp:forwardpage="test.html"></jsp:forward>
</body>
</html>
<%@ pagelanguage="java" contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%>
<%@includefile="test.html"%>
<html>
<head>
<title>forward 動作</title>
</head>
<body>
<h3>這是一個測試< jsp:forward>指令的頁面</h3>
<jsp:forwardpage="test.html"></jsp:forward>
</body>
</html>
test.html:
[html
<html>
<head>
<metahttp-equivmetahttp-equiv="Content-Type" content="text/html;charset=UTF-8"/>
</head>
<body>
<h3>這是一個html測試頁面</h3>
</body>
</html>
<html>
<head>
<metahttp-equiv="Content-Type" content="text/html;charset=UTF-8"/>
</head>
<body>
<h3>這是一個html測試頁面</h3>
</body>
</html>
由於在jsp中使用了<jsp:forward page="test.html"></jsp:forward>,所以顯示的內容是test.html的內容
3)、include動作
<jsp:include>動作是指在當前的頁面內包含一個或多個JSP頁面或HTML文件。其使用語法如下:
<jsp:includepage=”file”flush=”true”/>
其中page屬性中的file為加載文件所在位置的相對路徑。Flush屬性必須設為true,如果是false則不能自動刷新輸出。需要注意的是,此動作的單行語句必須在該語句的後面加上一條斜線/。若在加載文件或網頁時需要傳遞參數,那麼使用的語法如下:
<jsp:includepage=”file”flush=”true”>
<jsp:param name=”fname”value=”fvalue”>
</jsp:include>
下面是一段關於<jsp:include>動作的代碼:
[html]
<%@pagecontentType="text/html" pageEncoding="UTF-8"%>
<f:view>
<html>
<head>
<metahttp-equivmetahttp-equiv="Content-Type" content="text/html;charset=UTF-8"/>
<title>include動作</title>
</head>
<body>
<center>
<h3>歡迎你</h3>
<h3>這是一個登陸頁面</h3>
<h3>請登錄</h3>
<formactionformaction="jspLog.jsp" name="myform" method="post">
用戶名:<input type="text" name="name"/>
密 碼:<input type="text"name="password" />
<inputtypeinputtype="submit" value=" 確定" />
</form>
</center>
</body>
</html>
</f:view>
<%@pagecontentType="text/html" pageEncoding="UTF-8"%>
<f:view>
<html>
<head>
<metahttp-equiv="Content-Type" content="text/html;charset=UTF-8"/>
<title>include動作</title>
</head>
<body>
<center>
<h3>歡迎你</h3>
<h3>這是一個登陸頁面</h3>
<h3>請登錄</h3>
<formaction="jspLog.jsp" name="myform" method="post">
用戶名:<input type="text" name="name"/>
密 碼:<input type="text"name="password" />
<inputtype="submit" value=" 確定" />
</form>
</center>
</body>
</html>
</f:view>
jspLog.jsp:
[html]
<%@pagecontentType="text/html" pageEncoding="UTF-8"%>
<%@includefile="jsp.jsp" %>
<f:view>
<html>
<head>
<metahttp-equivmetahttp-equiv="Content-Type" content="text/html;charset=UTF-8"/>
<title>JSP Page</title>
</head>
<body>
<h1><h:outputTextvalueh:outputTextvalue="Hello World!"/></h1>
</body>
</html>
</f:view>
<%@pagecontentType="text/html" pageEncoding="UTF-8"%>
<%@includefile="jsp.jsp" %>
<f:view>
<html>
<head>
<metahttp-equiv="Content-Type" content="text/html;charset=UTF-8"/>
<title>JSP Page</title>
</head>
<body>
<h1><h:outputTextvalue="Hello World!"/></h1>
</body>
</html>
</f:view>
4)、plugin動作
<sjp:plugin>動作表示在一個JSP網頁中加載Java Applet或JavaBean組件。Java Applet也叫小應用程序,是使用Java編寫的代碼,它可以嵌入到JSP程序中。JavaBean是一組用於構建可重用組件的Java類庫,可以將一組JavaBean裝配成應用程序或Java小程序。同樣,它可以嵌入到JSP程序中。<sjp:plugin>動作的語法如下:
<jsp:plugin
type="嵌入程序的類型"
code="潛入類名稱"
codebase="潛入類所在的目錄名稱"
name="對象名稱"
align="對齊方式"
height="高度"
width="寬度"
hspace="左右空間"
vspace="上下空間"
nspluginurl="下載Netscape JRE plugin的地址"
archive="預下載的文件路徑"
jreversion="使用的JRE版本"
iepluginurl="下載IE JRE plugin的地址"
<jsp:params>
<jsp:param name="fname"value="fvalue"></jsp:param>
<jsp:param name="hname"value="hvalue"></jsp:param>
</jsp:params>/>
<jsp:fallback></jsp:fallback>>
</jsp:plugin>
其中除了type和code屬性,其它屬性都可以省略。
下載對這些屬性進行簡單的說明:
>type:嵌入程序的類型,可以使Applet,也可以是Bean,但必須指定一個,因為這個屬性設有默認值;
>code:嵌入Java程序的類名稱,必須以.class結尾。如example.class;
>codebase:編譯後Java類的目錄,可以是絕對目錄,也可以是相對目錄。默認值為當前JSP網頁的目錄;
>name:被嵌入的Applet或Bean的名稱;
>align:設置被嵌入的程序在頁面中顯示的對齊方式,align的值可以是bottom、top、middle、left、right;
>height:被嵌入的程序在頁面中顯示的高度;
>width:被嵌入的程序在頁面中顯示的寬度;
>hspace:被嵌入的程序在頁面中顯示時距左右兩邊的空間;
>vspace:被嵌入的程序在頁面中顯示時上下端的空間。
下面是一段關於<jsp:plugin>動作的代碼:
[html]
<%@pagecontentType="text/html" pageEncoding="UTF-8"%>
<f:view>
<html>
<head>
<metahttp-equivmetahttp-equiv="Content-Type" content="text/html;charset=UTF-8"/>
<title>< jsp:plugin >動作</title>
</head>
<body>
<center>
<h3>這是一個< jsp:plugin>動作演示頁面</h3>
<jsp:plugintypejsp:plugintype="applet" code="javatest.java" ></jsp:plugin>
</center>
</body>
</html>
</f:view>
<%@pagecontentType="text/html" pageEncoding="UTF-8"%>
<f:view>
<html>
<head>
<metahttp-equiv="Content-Type" content="text/html;charset=UTF-8"/>
<title>< jsp:plugin >動作</title>
</head>
<body>
<center>
<h3>這是一個< jsp:plugin>動作演示頁面</h3>
<jsp:plugintype="applet" code="javatest.java" ></jsp:plugin>
</center>
</body>
</html>
</f:view>
Javatest.java:
[java]
package html;
import java.applet.Applet;
import java.awt.Graphics;
import java.awt.Image;
public class javatest extends Applet{
Image persion;
public void init() {
persion = getImage(getDocumentBase(),"app_logo.png");
}
public void paint(Graphics g) {
g.drawImage(persion, 100, 100, this);
}
}
package html;
import java.applet.Applet;
import java.awt.Graphics;
import java.awt.Image;
public class javatest extends Applet{
Image persion;
public void init() {
persion = getImage(getDocumentBase(),"app_logo.png");
}
public void paint(Graphics g) {
g.drawImage(persion, 100, 100, this);
}
}
5)、useBean動作
<jsp:useBean>動作用來裝載一個在JSP頁面中使用的JavaBeans。JavaBeans是用Java語言編寫的可重用的軟件組件。因此對開發者而言,在開發過程中可以發回Java組件重用的優勢。下面是一個關於<jsp:useBean>動作的程序。
Welcome.java
[html]
public class welcome {
public welcome() { }
public String saywel(String name) {
String strmessage;
strmessage = "Hello" + name +"!";
return strmessage;
}
}
public class welcome {
public welcome() { }
public String saywel(String name) {
String strmessage;
strmessage = "Hello" + name +"!";
return strmessage;
}
}
Usebean.jsp
[html]
<%@pagecontentType="text/html" pageEncoding="UTF-8"%>
<jsp:useBeanidjsp:useBeanid="saywelcome" scope="application"class="welcome"></jsp:useBean>
<html>
<head>
<metahttp-equivmetahttp-equiv="Content-Type" content="text/html;charset=UTF-8"/>
<title>JSP Page</title>
</head>
<body>
<%request.setCharacterEncoding("gb2312"); %>
<%
String strmessage;
strmessage =saywelcome.saywel("Tom!");
out.println(strmessage);
%>
</body>
</html>
<%@pagecontentType="text/html" pageEncoding="UTF-8"%>
<jsp:useBeanid="saywelcome" scope="application"class="welcome"></jsp:useBean>
<html>
<head>
<metahttp-equiv="Content-Type" content="text/html;charset=UTF-8"/>
<title>JSP Page</title>
</head>
<body>
<%request.setCharacterEncoding("gb2312"); %>
<%
String strmessage;
strmessage =saywelcome.saywel("Tom!");
out.println(strmessage);
%>
</body>
</html>