JSP內(nèi)幕
發(fā)表時間:2023-08-12 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]作者:ybwen 現(xiàn)在的企業(yè)應(yīng)用已從2-tier朝3-tier結(jié)構(gòu)轉(zhuǎn)移,開發(fā)者有許多不同的方法分發(fā)應(yīng)用與數(shù)據(jù)到用戶。JSP API是J2EE的一部分,給WEB和JAVA開發(fā)者創(chuàng)建各種應(yīng)用提供了一個簡...
作者:ybwen
現(xiàn)在的企業(yè)應(yīng)用已從2-tier朝3-tier結(jié)構(gòu)轉(zhuǎn)移,開發(fā)者有許多不同的方法分發(fā)應(yīng)用與數(shù)據(jù)到用戶。JSP API是J2EE的一部分,給WEB和JAVA開發(fā)者創(chuàng)建各種應(yīng)用提供了一個簡單但強有力的機制。
JSP給開發(fā)者提供了兩個重要的能力:一,它提供了訪問遠程數(shù)據(jù)的機制如EJB,RMI,JDBC。二,它讓開發(fā)者從表現(xiàn)中封裝和分離程序邏輯而達到最大程度的代碼重用和靈活性。邏輯與表現(xiàn)的分離是它超越其它WEB應(yīng)用結(jié)構(gòu)的一個主要優(yōu)勢。
在這篇文章中,我會對JSP技術(shù)進行一個總體的描述,當然會有一些例子來示范JSP的優(yōu)點。
首先,JSP是如何被執(zhí)行的
要支持JSP,WEB服務(wù)器必須要有相應(yīng)的配置。JSP支持的流行WEB服務(wù)器有:WebSphere,jwebserver,jswdk,jrun,tomcat等等。
當WEB服務(wù)器接收到一個后綴為".jsp"頁的請求,它觸發(fā)JSP引擎。JSP引擎首先檢查JSP文件是新的或修改過的,對這兩種情況,會對文件進行翻譯和編譯。翻譯是JSP如何工作的核心:JSP引擎取JSP文件把它轉(zhuǎn)換成JAVA SERVLET。然后使用標準的JVA編譯器編譯SERVLET,使用標準的API執(zhí)行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;
}
}
數(shù)據(jù)庫連接
如下源碼顯示了使用JDBC從數(shù)據(jù)庫中獲得數(shù)據(jù)的一個JSP文件。當然,在JSP中直接嵌入JDBC調(diào)用是獲得數(shù)據(jù)最簡單的方法,但更好的方法是封裝JDBC調(diào)用在JavaBean中,類似前一個例子。還有比這好的方法,在JSP1.1中的標簽庫機制描述如何定制數(shù)據(jù)庫查詢標簽,如下:
<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中就沒有什么顯著的區(qū)別。
JSP比Servlets的主要優(yōu)勢是JSP在顯示和服務(wù)端邏輯允許更合乎邏輯的分離。
JSP 與 ASP
JSP 和ASP是非常相似的,都是在HTML中用定制標簽創(chuàng)建動態(tài)WEB頁。且都支持在頁面直接包含代碼,也都使用封裝組件:在ASP中是COM,在JSP中是JavaBean。
它們最大的不同是平臺兼容性。ASP只能在Windows上,JSP就不用說了。另一個不同就是JSP是一次編譯一直運行,而ASP是每次請求就每次解釋。
結(jié)束語評:用MVC模式開發(fā)多層應(yīng)用酷斃。文哥題