Servlet簡明教程

轉自: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的示例

下面這個程序是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);
}
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章