top
Loading...
JSP內幕
作者:ybwen

現在的企業應用已從2-tier朝3-tier結構轉移,開發者有許多不同的方法分發應用與數據到用戶。JSP API是J2EE的一部分,給WEB和JAVA開發者創建各種應用提供了一個簡單但強有力的機制。

JSP給開發者提供了兩個重要的能力:一,它提供了訪問遠程數據的機制如EJB,RMI,JDBC。二,它讓開發者從表現中封裝和分離程序邏輯而達到最大程度的代碼重用和靈活性。邏輯與表現的分離是它超越其它WEB應用結構的一個主要優勢。

在這篇文章中,我會對JSP技術進行一個總體的描述,當然會有一些例子來示范JSP的優點。

首先,JSP是如何被執行的
要支持JSP,WEB服務器必須要有相應的配置。JSP支持的流行WEB服務器有:WebSphere,jwebserver,jswdk,jrun,tomcat等等。

當WEB服務器接收到一個后綴為".jsp"頁的請求,它觸發JSP引擎。JSP引擎首先檢查JSP文件是新的或修改過的,對這兩種情況,會對文件進行翻譯和編譯。翻譯是JSP如何工作的核心:JSP引擎取JSP文件把它轉換成JAVA SERVLET。然后使用標準的JVA編譯器編譯SERVLET,使用標準的API執行JAVA SERVLET。這個翻譯步驟也是JSP為什么慢的一個原因。

寫一個JSP

一個JSP的例子如下:


<p>Sending to:
<input type=text name="recipient"></p>
<p>your comments:</p>
<p><textarea name="body" rows=5 cols=40></textarea></p>
<input type=submit name="Submit" value="Submit">
</form>
</body>
</html>

MailBean.java源碼如下:

// MailBean.java

package ybwen;
import java.io.*;
import sun.net.smtp.*;
public class MailBean {
String sender;
String recipient;
String body;
public void setSender(String s) {
sender = s;
}
public void setRecipient(String s) {
recipient= s;
}
public void setBody(String s) {
body = s;
}
/**
* @returns true if the message was sent, false otherwise
**/
public boolean sendMessage() {
try {
// replace "smtp" with your own SMTP server's name
SmtpClient client = new SmtpClient("smtp");

// use the SmptClient instance to construct the message
client.from(sender);
client.to(recipient);
PrintStream msg = client.startMessage();
msg.println("Subject: Web Feedback");
msg.println();
msg.println(body);
msg.println("--");
msg.println("Send using MailBean!");
client.closeServer();
}
catch(IOException e) {
return false;
}
return true;
}

}

數據庫連接
如下源碼顯示了使用JDBC從數據庫中獲得數據的一個JSP文件。當然,在JSP中直接嵌入JDBC調用是獲得數據最簡單的方法,但更好的方法是封裝JDBC調用在JavaBean中,類似前一個例子。還有比這好的方法,在JSP1.1中的標簽庫機制描述如何定制數據庫查詢標簽,如下:

<sql:connection id="conn01" url="jdbc:odbc:EnterpriseDB" />
<sql:query id="customers" connection="conn01">
SELECT * FROM customers
</sql:query>
<ul>
<sql:foreach iterate="row" in="customers">
<li><%= row.getColumn(1) %>
</sql:foreach>
</ul>


JSP 與 Servlets
自從JSP頁能自動翻譯為Servlets,在JSP 和Servlets中就沒有什么顯著的區別。

JSP比Servlets的主要優勢是JSP在顯示和服務端邏輯允許更合乎邏輯的分離。

JSP 與 ASP
JSP 和ASP是非常相似的,都是在HTML中用定制標簽創建動態WEB頁。且都支持在頁面直接包含代碼,也都使用封裝組件:在ASP中是COM,在JSP中是JavaBean。

它們最大的不同是平臺兼容性。ASP只能在Windows上,JSP就不用說了。另一個不同就是JSP是一次編譯一直運行,而ASP是每次請求就每次解釋。

結束語評:用MVC模式開發多層應用酷斃。文哥題。

北斗有巢氏 有巢氏北斗