JSP技術產生動態web頁面

來源:互聯網
上載者:User


隨著WEB技術的發展,WEB內容從一些靜態頁到內容豐富的動態網頁。對於廣大WEB開發人員來講動態網頁面的產生是一個挑戰。有許多的方法來試圖解決這個問題,如plug-in技術及基於伺服器端的APIs等方法,但存在的一個問題是這些方法是針對某個特定的web伺服器,如Microsoft提供的ASP技術就只針對它的IIS及Personal web伺服器。
目前用於產生動態網頁較為流行的方法有CGI、PHP及JavaServer Page(JSP)技術等。其中:CGI通過訪問其它應用程式來擷取資訊並返回給瀏覽器,CGI程式通常用C或PERL語言來開發;Jsp則通過將Jsp組件編譯成Java Servlet在伺服器端運行來實現動態內容。下面從幾個方面比較Jsp與傳統CGI的特性:
可移植性:
大多WEB伺服器支援CGI介面,但CGI程式自身並不能跨平台運行; Java Servlet程式則具有JAVA程式的優點,可運行在任何平台之上,大多數WEB及應用伺服器都支援JAVA及servlet API。
效能上:
傳統的CGI環境下,每一次client對CGI程式的請求,都使伺服器產生一個新的進程來裝載、執行CGI程式。大量的並行請求大大降低了其效能;JSP則沒有這個局限,每個程式裝載一次,並駐留在伺服器記憶體為以後請求服務。另外JSP在多線程的編寫與控制方面比CGI容易得多。
開發及發布:
由於Java Servelt具有JAVA的所有優點,開發起來也相對容易,java簡化了對異常的處理;它的物件導向特性使開發人員的協作成為一件簡單的事。JSP技術從如下幾個方面加快動態網站開發:
1) 將靜態頁面的開發和動態內容的產生分開
JSP中通過使用HTML或XML標記來規劃、設計WEB頁的布局和風格;而用JSP標記來實現動態內容,產生動態內容的部分被封裝起來運行於伺服器端;這樣頁面配置和風格可單獨編輯與調試而不影響動態內容產生。
2) 組件的重用
多數JSP頁通過重用無平台無關的組件—javaBeans來完成複雜的要求。這些組件可在開發人員中重複使用。
3) 通過標記來簡化頁面開發
通過JSP提供了標記,開發人員可以很容易使用beans組件,設定和訪問它們的屬性。同時JSP也允許使用者自訂標籤,還可接受第三方開發的標記,從而可以方便使用第三方提供的功能組件。
在對JSP的特點有所瞭解之後,接下來就談談JSP的安裝與開發執行個體。(作業系統以Nt4.0為例)
為運行JSP page需要安裝jdk及jswdk。首先安裝jdk,在jdk安裝完成後,要確保javac及java能正常工作。然後安裝jswdk,實際上只需把jswdk解壓到一個目錄即可。為了使jswdk正常運行,還需要對環境變數CLASSPATH做如下修改:
如果使用JDK1.1,則不需修改CLASSPATH;如果使用JDK1.2,則設定環境變數JAVA_HOME,使其指向JDK安裝路徑。
完成上述工作後,就可以啟動Java WebServer了。
執行jswdk目錄下的startserver.bat檔案來啟動Java Server,該Web server使用的預設連接埠為8080。如果Web server新動後,需要重新啟動則需要先停止已啟動的Web server,執行stopserver.bat可停止達到此目的。
JavaServer啟動後,如果正常則在瀏覽器的地址中輸入:http://localhost:8080/ 就可顯示介紹Java Webserver Page的頁面。在jswdk目錄下還有一個examples目錄,這是jswdk中內建的一個web 應用, 一個web應用程式套件含jsps, servlets,html files, images等資源。我們也可以建立一個新的web應用,從而把自己相關的檔案放入其中。讓我們來分析一下如何建立一個新的web 應用。
要建立一個新的web 應用,需要在jswdk安裝目錄下建立一個目錄,如建立一個名為myweb的web應用,其目錄結構如下:

jswdk_inatall myweb web-inf
servlets
jsp beans
webapp.properties
servlets.properties
mime.properties
mappings.properties
其中:jswdk_install表示jswdk的安裝目錄;以properties為尾碼的四個檔案為屬性檔案,可從jswkd_install/web-inf下拷貝得到。修改jswdk_install目錄下的webserver.xml檔案,加入如下一行,其作用是把myapp作相應的映射: <WebApplication id="mybase1" mapping="/myweb" docBase="myweb"/>
同時修改startserver.bat檔案,把 myweb/web-info/jsp/beans目錄加到相應的環境變數beanJars中;也可通過在CLASSPATH環境變數中加入該路徑來實現。
要加入jsp檔案,可把檔案放到myweb目錄下或它的下一級目錄中;要加入servlet,只需把編譯正確的servlet放到servlets中;而把編譯正確的java beans放到beans目錄下。
請注意在對beans或servlet修改後,要使修改生效,需要重新啟動Web Server。
瞭解這些規則之後,下面就建立第一個JSP檔案 myfirst.jsp,其內容如下:
<html>
<head><title> My first Jsp file<titile>
</head>
<body>
<% out.println("this is my first jsp file"); %>
</body>
</html>
將該檔案放在jswkd_install\myweb目錄下,如果Web server已啟動,則在遊覽器地址中輸入:
http://localhost:8080/myweb/myfirst.jsp
我們就可以看到執行的結果。在完成第一個簡單的jsp檔案後,我們可以編寫一個java beans,並在jsp檔案中調用該beans。
java bean來源程式HelloWorld.java內容如下:
public class helloWorld {
public String name ;
public boolean setHello(String name){
this.name = new String(name);
}
public String sayHello()
{
return name;
}

}
用JDK編譯該檔案:
javac helloWorld.java
在成功編譯後,將產生的位元組碼檔案HelloWorld.class放到myweb/web-inf/jsp/beans目錄下;
在下面jsp檔案test.jsp中調用helloWorld,test.jsp內容如下:
<html>
<head>
<title> Jsp and java bean </title>
</head>
<body>
<jsp:useBean id="helloBean" scope="session" class="HelloWorld" />
<%
String hello = "this is a bean test";
helloBean.setHello(hello);
out.println(helloBean.sayHello() + "<br>");
%>
</body>
</html>
將該jsp檔案放到jswdk_install\myweb\目錄下
重新啟動web Server,在瀏覽器地地址中輸入:
http://localhost:8080/myweb/test.jsp
就可以顯示執行結果;
注意到在test.jsp中
<jsp:useBean id="helloBean" scope="session" class="HelloWorld" /> 的scope = "session"表明該對象建立後可在同一會話(session)的其它頁引用。如我們可以在aftertest.jsp中引用test.jsp中建立的對象,aftertest.jsp內容包含下面的代碼:
<%
helloWorld rebean = (helloWorld)session.getValue("helloBean");
out.println("bean used in aftertest.jsp"+rebean.sayHello());
%>
要注意的是要引用的對象必須已建立,否則會出現異常。
下面看看在jsp中使用訪問資料的java beans例子。我所使用的資料庫是oracle8,通過SQL*Net建立的資料庫連接串名為begpinter,資料庫伺服器運行在名為begpinterserver的機器上,下面是JspJdbc.java的內容:
// You need to import the java.sql package to use JDBC
import java.sql.*;
import oracle.jdbc.driver.* ;
public class JspJdbc
{
Connection conn = null;

Public ResultSet rset = null;
public JdbcCheckup(){
// Load the Oracle JDBC driver
try{
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
}catch(SQLException e1) {
System.err.println("executeQuery: " + e1.getMessage());
}
}

public ResultSet executeQuery(String sql) {
rset = null;
try {
conn = DriverManager.getConnection
("jdbc:oracle:thin:@bgpinterserver:1521:bgpinter","SCOTT", "TIGER");
Statement stmt = conn.createStatement();
rset = stmt.executeQuery(sql);
}catch(SQLException e1) {
System.err.println("error: " + e1.getMessage());
}
return rset;
}
}
編譯後將JspJdbc.class檔案放入myweb\web-inf\jsp\beans目錄下。在下面的jsp檔案中調用beans,jspdb.jsp內容如下:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>Database in Jsp</title>
</head>
<body>

<%@ page language="java" import="java.sql.*,oracle.jdbc.driver.*" errorPage="errorpage.jsp" %>
<jsp:useBean id="jspdatabase" scope="page" class="JspJdbc" />
<%
ResultSet rset = jspdatabase.executeQuery("SELECT * FROM emp");
out.println("<table><tr><th>number</th><th>name</th></tr>");
while (reset.next()) {
out.println("<tr><td>"+rset.getInt("eptno")+"</td>");
out.println("<td>"+rset.getString("enameeptno")+"</td></tr>");
}
rest.close();
out.println("</table>");
%>
</body>
</html>
其中用於顯示異常的errorpage.jsp內容為:
<html>
<body bgcolor="red">
<%@ page isErrorPage="true" %>
<h1> The exception <%= exception.getMessage() %>
</body>
</html>
重新啟動Web server使新建立的java beans生效,如果與資料服務器串連正常,則在瀏覽器地址中輸入
http://localhost:8080/myweb/jspdb.jsp
將顯示查詢結果。
通過上面的介紹,相信大家對Jsp有所瞭解。要進一步瞭解Jsp技術可訪問下面的網站:
http://java.sun.com/products/jsp

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.