Please install JDK 1.3.1_02 or later with Java Plugin to view this page. Also, this page is best viewed with browsers (for examples, Mozilla 0.99 or later, IE 6.x or later) with CSS2 support. This document is provided as is. You are welcomed to use it for non-commercial purpose.
在以下的範例中,我們假設你已經在你自己的電腦上面安裝好了 Apache Tomcat 而且 port 為 8080。
//
// Hello World Servlet Version
//
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class HelloServ extends HttpServlet
{
// HttpServletRequest 是用來存放由使用者傳過來的資料
// HttpServletResponse 是用來存放要回應給客戶端的資料
// doGet 是給 GET 方法用的,而 doPost 是給 POST 方法用的。
// 現在大多使用 service() 來取代 doGet and doPost
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException
{
PrintWriter output;
// 若要輸出中文字,記得要加 charset=Big5
res.setContentType("text/html;charset=Big5");
output = res.getWriter();
StringBuffer buf = new StringBuffer();
buf.append("<html><head><title>\n");
buf.append("Hello World\n");
buf.append("</title></head><body>\n");
buf.append("<h1>大家好</h1>\n");
buf.append("</body></html>\n");
output.println(buf.toString());
output.close();
}
}
buf.append("accessed " + count++ + " times.");
<form method="post" action="http://localhost:8080/servlet/Greeting"> <input type="text" value="老呂" name="data"> <input type="submit" value="確定"> </form>
//
// getParameter example
//
import java.io.*;
import java.text.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class Greeting extends HttpServlet {
// 除了使用 service 之外,你也可以利用 doGet 和 doPost
// 互相呼叫的方式來達到一個 servet 能同時處理 GET 和 POST
// 的方法
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws IOException, ServletException
{
doPost(req, res);
}
public void doPost(HttpServletRequest req, HttpServletResponse res)
throws IOException, ServletException
{
// 若要輸出中文字,下列兩種方法任選一種,而且必須先設定之後才
// 能實體化 PrintWriter
// (1)
//res.setLocale(new Locale(new String("zh"), new String("TW")));
//res.setContentType("text/html");
// (2)
res.setContentType("text/html;charset=Big5");
PrintWriter out = res.getWriter();
// 將中文的輸入轉成適當的大五碼,這個是因為 Tomcat 會將非英文的
// 的資料 encode 成 ISO-8859-1,所以我們這個 servlet 是為 Tomcat
// 而寫的就必須把它從 ISO-8859-1 轉回 Big5
// 如果 data 不存在,則回傳 null。
String person = new String(
req.getParameter("data").getBytes("ISO-8859-1"), "Big5");
out.println("<html><head><title>\n");
out.println("Hello World\n");
out.println("</title></head><body><h1>\n");
out.println("大家好");
// 注意要如何輸出雙引號
out.println("</h1><h3><font color=\"blue\">");
out.println( person );
out.println("向你問好");
out.println("</font></h3>\n");
out.println("</body></html>\n");
}
}
<form method="post" action="http://localhost:8080/servlet/DBServ"> Database: <input type="text" value="jlu" name="dsn" size="20"><br> Table: <input type="text" value="Product" name="table" size="20"><br> User ID: <input type="text" name="uid" size="20"><br> Password: <input type="password" name="pwd" size="20"><br> <input type="submit"> </form>
//
// DB example
//
import java.io.*;
import java.text.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;
public class DBServ extends HttpServlet {
public void service (HttpServletRequest req, HttpServletResponse res)
throws IOException, ServletException
{
// get DSN, UID, and PWD from Form
// You should put some error checking here or prevent receiving
// inappropriate information from web page by using Javascript.
String dsn = req.getParameter("dsn");
String table = req.getParameter("table");
String uid = req.getParameter("uid");
String pwd = req.getParameter("pwd");
res.setContentType("text/html;charset=Big5");
PrintWriter out = res.getWriter();
// initialize query string
String aQuery = null;
Connection conn = null;
try {
// load the JDBC bridge driver
Class.forName("com.mysql.jdbc.Driver");
// connect to Database
aQuery = "select * from " + table;
conn = DriverManager.getConnection("jdbc:mysql://localhost/"+ dsn,
uid, pwd);
// display heading; you should define this as a Static class
out.println("<html><head><title>");
out.println("Database " + dsn + " Query");
out.println("</title></head><body>");
// Construct a SQL statement and submit it
Statement aStatement = conn.createStatement();
ResultSet rs = aStatement.executeQuery(aQuery);
// Get info about the query results
ResultSetMetaData rsmeta = rs.getMetaData();
int cols = rsmeta.getColumnCount();
// contruct table
out.println("<table align=\"center\" border=\"1\">");
out.println("<tr>");
// Display column headers
for(int i=1; i<=cols; i++) {
out.print("<th>");
out.print(rsmeta.getColumnLabel(i));
out.print("</th>");
}
out.println("\n</tr>");
// Display query results.
while(rs.next()) {
out.print("<tr>");
for(int i=1; i<=cols; i++) {
out.print("<td>");
out.print(new String(rs.getString(i).getBytes("ISO-8859-1"),
"BIG5"));
out.print("</td>");
}
out.println("</tr>");
}
// Clean up
rs.close();
aStatement.close();
conn.close();
} catch (Exception e) {
System.out.println("Exception Occurs: " + e);
}
}
}
<?xml version="1.0" encoding="Big5"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
"http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">
<web-app>
<servlet>
<servlet-name>HelloParam</servlet-name>
<servlet-class>HelloParam</servlet-class>
<init-param>
<param-name>dsn</param-name>
<param-value>dbms</param-value>
</init-param>
<init-param>
<param-name>param2</param-name>
<param-value>你好嗎</param-value>
</init-param>
</servlet>
</web-app>
//
// Read Initial Parameters from web.xml
//
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class HelloParam extends HttpServlet
{
private String p1, p2;
public void init( ServletConfig con ) throws ServletException
{
p1 = con.getInitParameter("param2");
p2 = con.getInitParameter("dsn");
}
public void service(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException
{
PrintWriter output;
res.setContentType("text/html;charset=Big5");
output = res.getWriter();
StringBuffer buf = new StringBuffer();
buf.append("<html><head><title>\n");
buf.append("Hello Parameter\n");
buf.append("</title></head><body>\n");
buf.append("dsn = " + p2 + "<br/>\n");
buf.append("param2 = " + p1 + "<br/>\n");
buf.append("</body></html>\n");
output.println(buf.toString());
output.close();
}
}
File file=new File(getServletContext().getRealPath("/")+"test.txt");
其中 getServletContext().getRealPath("/") 會回傳 /usr/local/tomcat/webapps/myproject.
//
// Use Cookies
//
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class UseCookies extends HttpServlet
{
public void service(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException
{
PrintWriter output;
res.setContentType("text/html;charset=Big5");
output = res.getWriter();
StringBuffer buf = new StringBuffer();
buf.append("<html><head><title>\n");
buf.append("Use Cookies\n");
buf.append("</title></head><body>\n");
Cookie [] cookie = req.getCookies();
if (cookie.length == 0)
buf.append("<h1>沒有 Cookie</h1>\n");
else
{
buf.append("<h1 align=\"center\">大家好</h1>\n");
buf.append("<ul>\n");
for(int i=0; i<cookie.length; i++)
buf.append("<li> " + cookie[i].getName() + "=" +
cookie[i].getValue());
buf.append("</ul>\n");
}
buf.append("</body></html>\n");
output.println(buf.toString());
output.close();
}
}
//
// Set Cookies
//
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class SetCookies extends HttpServlet
{
public void service(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException
{
PrintWriter output;
res.setContentType("text/html;charset=Big5");
output = res.getWriter();
Cookie myck1 = new Cookie("UID", "123");
res.addCookie(myck1);
Cookie myck2 = new Cookie("PWD", "abc");
res.addCookie(myck2);
StringBuffer buf = new StringBuffer();
buf.append("<html><head><title>\n");
buf.append("Write Cookies\n");
buf.append("</title></head><body>\n");
buf.append("<h1>寫入 Cookie</h1>\n");
buf.append("</body></html>\n");
output.println(buf.toString());
output.close();
}
}
<html> <head> <meta http-equiv="Content-Type" content="text/html;charset=Big5"> <meta name="DC.Creator" content="Lu, Eric Jui-Lin"> <title> Test Servlet Sessions </title> </head> <body> <form method="POST" action="http://localhost:8080/servlet/Session1"> <strong>請選擇你想進一步了解的電腦語言:</strong><p/> <input type="radio" name="lang" value="C">C</input><br/> <input type="radio" name="lang" value="C++">C++</input><br/> <input type="radio" name="lang" value="Java" checked>Java</input><br/> <input type="radio" name="lang" value="VB">Visual Basic</input><p/> <input type="submit" value="確定"/> <input type="reset"/> </form> </body> </html>
//
// Use Session
//
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class Session1 extends HttpServlet
{
public void service(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException
{
PrintWriter output;
String lang = req.getParameter("lang");
// create a session if one does not exist
// 需要使用 true 當作 getSession() 的參數
HttpSession session = req.getSession(true);
// add a value for user's choice to session
session.setAttribute("language", lang);
res.setContentType("text/html;charset=Big5");
output = res.getWriter();
StringBuffer buf = new StringBuffer();
buf.append("<html><head><title>\n");
buf.append("Recommendation\n");
buf.append("</title></head><body>\n");
buf.append("請按\"Recommended Books\"來顯示建議清單<br/>\n");
buf.append("<form method=\"POST\" " +
"action=\"http://localhost:8080/servlet/Session2\">\n");
buf.append("<input type=\"submit\" value=\"Recommended Books\">\n");
buf.append("</form>\n");
buf.append("</body></html>\n");
output.println(buf.toString());
output.close();
}
}
//
// Use Session
//
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class Session2 extends HttpServlet
{
private final static String names[] =
{"C", "C++", "Java", "VB"};
private final static String books[] =
{"C: How to Program", "C++: How to Program",
"Java: How to Program", "Visual Basic: How to Program"};
public void service(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException
{
PrintWriter output;
res.setContentType("text/html;charset=Big5");
output = res.getWriter();
StringBuffer buf = new StringBuffer();
buf.append("<html><head><title>\n");
buf.append("Recommended Book List\n");
buf.append("</title></head><body>\n");
// do NOT create a session if one does not exist
// 需要使用 false 當作 getSession() 的參數
HttpSession session = req.getSession(false);
// 如果沒有之前的 session,則要求使用者到第一個網頁
if(session == null)
{
buf.append("<h1>請重新選擇</h1>\n");
buf.append("<a href=\"http://localhost:8080/testsession.html\">"+
"請按這裡</a>\n");
// Or 直接將結果轉向第一個網頁
//res.sendRedirect("http://localhost:8080/testsession.html");
}
else
{
// get values from session
String lang = (String) session.getAttribute("language");
for(int i=0; i<names.length; i++)
if(lang.equals(names[i]))
buf.append("<h1>" + books[i] + "</h1>\n");
}
buf.append("</body></html>\n");
output.println(buf.toString());
output.close();
}
}