轉自:http://www.blogjava.net/jlin/articles/62523.html
- Servlet程序的基本結構
//Servlet 基本結構
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class SomeServlet extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
// 用 "request" 可以讀取輸入的值 (e.g. cookies)
// 和表單提交的數據
// 用 "response" 返回輸出的內容
PrintWriter out = response.getWriter();
// 用 "out" 向瀏覽器寫內容。
}
}
Servlet都是有HttpServlet繼承下來的。基本結構如上面的代碼所示。
- Servlet實例
1、生成一般文本的例子
package test;
//用這條語句編譯 javac -encoding iso8859_1 filename.java
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HelloServlet extends HttpServlet {
public void doGet( HttpServletRequest requset,
HttpServletResponse response)
throws IOException, ServletException {
PrintWriter out = response.getWriter();
out.println("Hello,world!");
out.println("你好,萬維網");
}
}
2、生成HTML內容的例子
package test;
//javac -encoding iso8859_1 HelloWWW.java
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HelloWWW extends HttpServlet {
public void doGet( HttpServletRequest requset,
HttpServletResponse response)
throws IOException, ServletException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">"+
"<HTML>"+
"<HEAD>"+
"<TITLE>"+"Hello WWW by LoveJSP.site"+"</TITLE>"+
"<BODY>"+
"<H1>Hello WWW</H1>"+
"<H1>你好,萬維網</H1>"+
"<h2><A HREF=\"HTTP://LOVEJSP.COM\">welcom to LoveJSP.site</A></h2>"+
"</BODY>"+
"<HTML>");
}
}
- 處理表單提交的數據
在Web程序設計中,處理表單提交的數據是獲取Web數據的主要方法,今天,我們來看一看Servlet中是怎樣處理來自表單的數據的。
表單數據的提交方法有兩種:Post方法和Get方法。當使用Post方法時,數據由標準的輸入設備讀入,當使用Get方法時,數據由CGI變量QUERY_STRING傳遞給表單數據處理程序。Servlet會自動將以上兩種方法得到的數據進行處理,從而使用戶只要簡單的調用HttpServletRequest的getParameter方法,給出變量名稱即可取得該變量的值。需要注意的是,變量的名稱是大小寫敏感的。對於Post方法或Get方法提交的數據,Servlet的處理方法是一樣的。當請求的變量不存在時,將會返回一個空字符串。如果變量有多個值,你應該調用getParameterValues,這個方法將會返回一個字符串數組。使用getParameterNames可以取得所有變量的名稱,該方法返回一個Emumeration方法。
下面讓我們來看一個簡單的例子,下面這個Servlet讀取表單中指定名稱的五個字段的值。下載這個例子
1.頁面文件
postdata.html
<html>
<head>
<title>getFormData Servlet Example form LoveJSP.com</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body bgcolor="#FFFFFF">
<h1 align="center"> <i><b>Demo Page</b></i></h1>
<form action="/try/servlet/lovejsp.getFormData">
<p> </p>
<table width="41%" border="2" align="center">
<tr bgcolor="#6633CC" align="center">
<td colspan="2" align="center"><font color='white'>getFormData Servlet DemoPage</font></td>
</tr>
<tr bgcolor="#FFFFCC">
<td align="center" width="43%">
<div align="right">username:</div>
</td>
<td width="57%">
<div align="left">
<input type="text" name="username">
</div>
</td>
</tr>
<tr bgcolor="#CCFF99">
<td align="center" width="43%">
<div align="right">password:</div>
</td>
<td width="57%">
<div align="left">
<input type="password" name="password">
</div>
</td>
</tr>
<tr bgcolor="#FFFFCC">
<td align="center" width="43%">
<div align="right">Email:</div>
</td>
<td width="57%">
<div align="left">
<input type="text" name="email">
</div>
</td>
</tr>
<tr bgcolor="#CCFF99">
<td align="center" width="43%">
<div align="right">Homepage:</div>
</td>
<td width="57%">
<div align="left">
<input type="text" name="Homepage">
</div>
</td>
</tr>
</table>
<p align="center">
<input type="reset" name="Reset" value="clear">
<input type="submit" name="Submit2" value="Let's Go">
</p>
</form>
</body>
</html>
2.Servlet文件
getFormData.java
package lovejsp;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
/** Servlet getParameter Ex from Lovejsp.site(http://www.lovejsp.com)
*/
public class getFormData extends HttpServlet {
public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String title = "讀取表單數據";
out.println(LovejspTools.headTitle(title) + //a tools method to show the html code with title
"<BODY BGCOLOR=\"#FDF5E6\">\n" +
"<H1 ALIGN=CENTER>" + title + "</H1>\n" +
"<UL>\n" +
" <LI><B>username</B>: "
+ request.getParameter("username") + "\n" +
" <LI><B>password</B>: "
+ request.getParameter("password") + "\n" +
" <LI><B>Email</B>: "
+ request.getParameter("Email") + "\n" +
" <LI><B>Homepage</B>: "
+ request.getParameter("Homepage") + "\n" +
"</UL>\n" +
"</BODY></HTML>");
}
}
3.getParameterNames的示例
ShowAllFormData.java
package lovejsp;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;
public class ShowAllFormData extends HttpServlet {
public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String title = "顯示所有的Form變量的值";
out.println("<HTML><HEAD><TITLE>"+title+"</TITLE></HEAD>"+
"<BODY BGCOLOR=\"#FDF5E6\">\n" +
"<H1 ALIGN=CENTER>" + title + "</H1>\n" +
"<TABLE BORDER=1 ALIGN=CENTER>\n" +
"<TR BGCOLOR=\"#FFAD00\">\n" +
"<TH>變量名稱<TH>變量值");
Enumeration paramNames = request.getParameterNames();
while(paramNames.hasMoreElements()) {
String paramName = (String)paramNames.nextElement();
out.println("<TR><TD>" + paramName + "\n<TD>");
String[] paramValues = request.getParameterValues(paramName);
if (paramValues.length == 1) {
String paramValue = paramValues[0];
if (paramValue.length() == 0)
out.print("<I>No Value</I>");
else
out.print(paramValue);
} else {
out.println("<UL>");
for(int i=0; i<paramValues.length; i++) {
out.println("<LI>" + paramValues[i]);
}
out.println("</UL>");
}
}
out.println("</TABLE>\n</BODY></HTML>");
}
public void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}