Serverlet
一、Serverlet簡單介紹:
Servlet(Server Applet),全稱Java Servlet,未有中文譯文。是用Java編寫的server端程序。其主要功能在于交互式地瀏覽和改動數(shù)據(jù),生成動態(tài)Web內(nèi)容。狹義的Servlet是指 Java語言實現(xiàn)的一個接口,廣義的Servlet是指不論什么實現(xiàn)了這個Servlet接口的類,普通情況下,人們將Servlet理解為后者。
二、Serverlet的執(zhí)行機制:
Servlet的主要功能在于交互式地瀏覽和改動數(shù)據(jù),生成動態(tài)Web內(nèi)容。這個過程為:
1、client發(fā)送請求至server端;
2、server將請求信息發(fā)送至Servlet;
3、Servlet生成響應(yīng)內(nèi)容并將其傳給Server。響應(yīng)內(nèi)容動態(tài)生成,通常取決于client的請求;
4、server將響應(yīng)返回給client ;
三、Serverlet的生命周期:
1、Server創(chuàng)建一個Servlet的實例,也就是調(diào)用了init();
2、一個client的請求到達Server;
3、Server將請求發(fā)送給Serverlet;
4、Serverlet生成對請求的響應(yīng);
5、Server激活Servlet的service()方法,傳遞請求和響應(yīng)對象作為參數(shù);
a、service()方法獲得關(guān)于請求對象的信息,處理請求,訪問其它資源,獲得須要的信息;
b、service()方法使用響應(yīng)對象的方法,將響應(yīng)傳回Server,終于到達client。service()方法可能激活其它方法以處理請求,如doGet()或doPost()或程序猿自己開發(fā)的新的方法;
c、對于很多其它的client請求,Server創(chuàng)建新的請求和響應(yīng)對象,仍然激活此Servlet的service()方法,將這兩個對象作為參數(shù)傳遞給它。如此重 復(fù)以上的循環(huán),但無需再次調(diào)用init()方法。一般Servlet僅僅初始化一次 ? ,當(dāng)Server不再須要Servlet時(一般當(dāng)Server關(guān)閉時),Server調(diào)用Servlet的Destroy()方法。
四、Serverlet調(diào)用JavaBean:
//通過Servlet調(diào)用JavaBean輸出結(jié)果集,并打印
//JavaBean:TBean SourceCode
package Demo;
import java.io.*;
import java.sql.*;
/**
* 在此處插入類型說明。
* 創(chuàng)建日期:(00-7-10 8:30:32)
* @author:Administrator
*/
public class TBean implements Serializable {
protected Connection conn = null;
protected Statement stmt = null;
protected java.sql.ResultSet Result;
/**
* TBean 構(gòu)造子注解。
*/
public TBean() {
super();
}
/**
* 在此處插入方法說明。
* 創(chuàng)建日期:(00-7-10 8:31:06)
*/
public void execute() {
try {
Class.forName("COM.ibm.db2.jdbc.App.DB2Driver").newInstance();
conn = DriverManager.getConnection("jdbc:db2:sample", "db2admin", "db2admin");
stmt = conn.createStatement();
String sql = "SELECT * FROM STAFF WHERE DEPT=20";
ResultSet rs = stmt.executeQuery(sql);
setResult(rs);
} catch (SQLException e) {
} catch (IllegalAccessException e2) {
} catch (ClassNotFoundException e3) {
} catch (InstantiationException e4) {
}
}
/**
* 在此處插入方法說明。
* 創(chuàng)建日期:(00-7-10 8:36:42)
* @return java.sql.ResultSet
*/
public java.sql.ResultSet getResult() {
return Result;
}
/**
* 在此處插入方法說明。
* 創(chuàng)建日期:(00-7-10 8:36:42)
* @param newResult java.sql.ResultSet
*/
public void setResult(java.sql.ResultSet newResult) {
Result = newResult;
}
/**
* 在此處插入方法說明。
* 創(chuàng)建日期:(00-7-10 8:35:54)
*/
public void Sqlclose() {
try {
conn.close();
stmt.close();
} catch (SQLException e) {
}
}
}
//Servlet:TServlet,調(diào)用JavaBean,并將結(jié)果集打?。?/p>
package Demo;
import java.io.*;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;
/**
* 在此處插入類型說明。
* 創(chuàng)建日期:(00-7-10 8:37:57)
* @author:Administrator
*/
public class TServlet extends HttpServlet implements Serializable {
/**
* TServlet 構(gòu)造子注解。
*/
public TServlet() {
super();
}
/**
* service 方法注解。
*/
public void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
try {
Demo.TBean javabean = new Demo.TBean();
javabean.execute();
ResultSet rs1 = javabean.getResult();
PrintWriter out = res.getWriter();
res.setContentType("text/html");
out.println("<table border=1>");
out.println("<H1>Hello World</H1>");
out.println("<td>ID</td><td>NAME</td><td>DEPT</td><td>JOB</td><td>YEARS</td><td>SALARY</td><td>COMM</td>");
while (rs1.next()) {
out.println("<tr>");
for (int i = 1; i <= 7; i++)
out.println("<td>" + rs1.getString(i) + "</td>");
out.println("</tr>");
}
out.println("</table>");
javabean.Sqlclose();
} catch (SQLException e) {
}
}
}
//運行:在VisualAge for Java 的IBM Websphere Test Environment的環(huán)境下:
//http://localhost:8080/servlet/Demo.TServlet
Hello Print ID NAME DEPT JOB YEARS SALARY COMM
10 Sanders 20 Mgr 7 18357.50 null
20 Pernal 20 Sales 8 18171.25 612.45
80 James 20 Clerk null 13504.60 128.20
190 Sneider 20 Clerk 8 14252.75 126.50
實例原文鏈接:https://blog.csdn.net/fly29/article/details/215776