<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 100  文章 - 50  trackbacks - 0
    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    常用鏈接

    留言簿(3)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    收藏夾

    我收藏的一些文章!

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    一、Servlet的基本結構。

    //Servlet de 基本結構

    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的小例子。

    //生成一般文本的例子 下載本例

    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("你好,萬維網");
    }
    }


    //生成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>");
    }
    }
    處理表單提交的數據 Pely Gan

    在Web程序設計中,處理表單提交的數據是獲取Web數據的主要方法,今天,我們來看一看Servlet中是怎樣處理來自表單的數據的。

    表單數據的提交方法有兩種Post方法和Get方法,當使用Post方法時,數據由標準的輸入設備讀入,當使用Get方法時,數據由CGI變量QUERY_STRING傳遞給表單數據處理程序。

    Servlet會自動將以上兩種方法得到的數據進行處理,從而使用戶只要簡單的調用HttpServletRequest的getParameter方法,給出變量名稱即可取得該變量的值。需要注意的是,變量的名稱是大小寫敏感的。對于Post方法或Get方法提交的數據,Servlet的處理方法是一樣的。當請求的變量不存在時,將會返回一個空字符串。如果變量有多個值,你應該調用getParameterValues,這個方法將會返回一個字符串數組。使用getParameterNames可以取得所有變量的名稱,該方法返回一個Emumeration方法。

    下面讓我們來看一個簡單的例子,下面這個Servlet讀取表單中指定名稱的五個字段的值。下載這個例子

    //Html file----> postdata.htm 下載本文件
    <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 Demo
    Page</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>

    //Servlet File 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>");
    }
    }


    這個程序的運行結果如下圖所示:





    大家可能注意到了,上面的結果中Email的值是null,這是因為在表單中沒有這個字段,表單的email的名稱是email。

    下面這個程序是getParameterNames的示例,也是調試程序的很好的工具,它的功能是顯示所有的表單數據。

    //Servlet File 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);
    }
    }

    運行結果:


    好了,that's all for today,thank you all. see you next time
    在Servlet中使用請求頭(Request Header) LoveJSP.site

    Request Header簡介
    當一個客戶端(通常是瀏覽器)向Web服務器發送一個請求是,它要發送一個請求的命令行,一般是GET或POST命令,當發送POST命令時,它還必須向服務器發送一個叫"Content-Length”的請求頭(Request Header) 用以指明請求數據的長度,除了Content-Length之外,它還可以向服務器發送其它一些Headers,如:

    Accept 瀏覽器可接受的MIME類型
    Accept-Charset 瀏覽器支持的字符編碼
    Accept-Encoding 瀏覽器知道如何解碼的數據編碼類型(如 gzip)。Servlets 可以預先檢查瀏覽器是否支持gzip并可以對支持gzip的瀏覽器返回gzipped的HTML頁面,并設置Content-Encoding回應頭(response header)來指出發送的內容是已經gzipped的。在大多數情況下,這樣做可以加快網頁下載的速度。
    Accept-Language 瀏覽器指定的語言,當Server支持多語種時起作用。
    Authorization 認證信息,一般是對服務器發出的WWW-Authenticate頭的回應。
    Connection 是否使用持續連接。如果servlet發現這個字段的值是Keep-Alive,或者由發出請求的命令行發現瀏覽器支持 HTTP 1.1 (持續連接是它的默認選項),使用持續連接可以使保護很多小文件的頁面的下載時間減少。
    Content-Length (使用POST方法提交時,傳遞數據的字節數)
    Cookie (很重要的一個Header,用來進行和Cookie有關的操作,詳細的信息將在后面的教程中介紹)
    Host (主機和端口)
    If-Modified-Since (只返回比指定日期新的文檔,如果沒有,將會反回304 "Not Modified")
    Referer (URL)
    User-Agent (客戶端的類型,一般用來區分不同的瀏覽器)
    如果你想更多的了解Request Header的內容,你可以訪問W3C的網站。

    在Servlet中讀取Request Header的內容

    在Servlet中讀取Request Header的值是很簡單的,只要調用HttpServletRequest的getHeader方法就可以了,當你指定要返回的Header的名稱,該方法就會返回String類型的Header的內容,如果指定的Header不存在,就返回null。調用getHeaderNames可以返回包含所有Header名字的Enumeration.

    讀取所有Request Header值的Servlet程序

    下面是Tomcat中所帶的Servlet例子中關于Request Header的例子,下載該程序。

    import java.io.*;
    import java.util.*;
    import javax.servlet.*;
    import javax.servlet.http.*;

    public class RequestHeaderExample extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws IOException, ServletException
    {
    response.setContentType("text/html");
    PrintWriter out = response.getWriter();
    Enumeration e = request.getHeaderNames();
    while (e.hasMoreElements()) {
    String name = (String)e.nextElement();
    String value = request.getHeader(name);
    out.println(name + " = " + value);
    }
    }
    }
    訪問標準CGI變量
    LoveJSP.site
    1. CGI變量簡介
    如果你在以前使用過傳統的CGI,你應該對"CGI變量”的概念很熟悉。 由這些變量可以取得一些和請求(Request)有關的信息。其中一些來自于 HTTP 請求命令行(request line) 和headers (例如:在URI中問號后面的部分或者Content-Length header),一些來自于 Socket本身(例如:被請求主機的IP和名稱),還有一些來自于服務器的配置信息(例如:被映射為URL目錄的實際 路徑)。

    2. Servlet和標準CGI變量之間的對應關系
    下面的表格中給出了Servlet和標準CGI變量之間的對應關系,對以前使用CGI變量進行編程的朋友會有很大的幫助。 在下表中我們假設request是HttpServletRequest類型的對象。
    CGI變量 含義 在 doGet 或 doPost 訪問的辦法
    AUTH_TYPE 如果在請求中有 Authorization header ,則這個變量將會被賦值 (basic 或 digest) request.getAuthType()
    CONTENT_LENGTH 只有當請求的方法是 POST 時這個變量才會有意義,它表示傳送的數據的字節數。 String.valueOf(request.getContentLength()) (返回String) 或者 request.getContentLength(),返回一個整數(int)。
    CONTENT_TYPE 如果被賦值,就表示數據的MIME類型。 request.getContentType()
    DOCUMENT_ROOT 和網站根目錄對應的實際路徑 getServletContext().getRealPath("/") 注意:在以前的Servlet標準中,這條語句是這樣寫的request.getRealPath("/") 。
    HTTP_XXX_YYY 訪問任意的HTTP headers request.getHeader("Xxx-Yyy")
    PATH_INFO URL 指向的路徑的信息。由于Servlet可以和服務器直接通訊,所以這個變量對Servlet沒什么作用。 request.getPathInfo()
    PATH_TRANSLATED 在Server上被映射為web目錄的目錄的真實路徑的信息。和上一個變量一樣,對Servlet用處不大。 request.getPathTranslated()
    QUERY_STRING 如果用 GET 方法發出請求(requests),這個變量中將會存放請求的數據,其 形式為經過URL編碼的一個大字符串。在servlet中,你很少會用到這個原始的字符串。而是 用 request.getParameter 方法來訪問某個特定的請求數據。 request.getQueryString()
    REMOTE_ADDR 客戶端的IP地址,是String類型的。其形式類似于 "192.9.48.9"。 request.getRemoteAddr()
    REMOTE_HOST 發出請求的客戶端的域名(例如. "java.sun.com") 如果不能檢測到域名,就用客戶端的IP地址代替。 request.getRemoteHost()
    REMOTE_USER 如果 Authorization header 被賦值,則這個變量中放有用戶名。 request.getRemoteUser()
    REQUEST_METHOD 請求的類型。通常為 GET 或 POST,但也可能是 HEAD, PUT, DELETE, OPTIONS, 或者 TRACE。 request.getMethod()
    SCRIPT_NAME srvlet的路徑 request.getServletPath()
    SERVER_NAME 服務器的名稱 request.getServerName()
    SERVER_PORT 服務器的端口 String.valueOf(request.getServerPort())(返回String類型) request.getServerPort()(返回int類型)
    SERVER_PROTOCOL 在請求命令行中用的協議的版本號。(例如. HTTP/1.0 或 HTTP/1.1)。 request.getProtocol()
    SERVER_SOFTWARE 所用 Web Server 軟件的名稱 getServletContext().getServerInfo()


    3. 例子:讀取CGI變量。
    下面是一個顯示除去 HTTP_XXX_YYY 外所有CGI變量的的servlet。他顯示了在上面的表格中列出的所有CGI變量的值。
    3.1 ShowCGIVariables.java
    Download Here

    //! ####### Start ShowCGIVariables.java
    import java.io.*;
    import javax.servlet.*;
    import javax.servlet.http.*;
    import java.util.*;


    public class ShowCGIVariables extends HttpServlet {
    public void doGet(HttpServletRequest request,
    HttpServletResponse response)
    throws ServletException, IOException {
    response.setContentType("text/html");
    PrintWriter out = response.getWriter();
    String[][] variables =
    { { "AUTH_TYPE", request.getAuthType() },
    { "CONTENT_LENGTH", String.valueOf(request.getContentLength()) },
    { "CONTENT_TYPE", request.getContentType() },
    { "DOCUMENT_ROOT", getServletContext().getRealPath("/") },
    { "PATH_INFO", request.getPathInfo() },
    { "PATH_TRANSLATED", request.getPathTranslated() },
    { "QUERY_STRING", request.getQueryString() },
    { "REMOTE_ADDR", request.getRemoteAddr() },
    { "REMOTE_HOST", request.getRemoteHost() },
    { "REMOTE_USER", request.getRemoteUser() },
    { "REQUEST_METHOD", request.getMethod() },
    { "SCRIPT_NAME", request.getServletPath() },
    { "SERVER_NAME", request.getServerName() },
    { "SERVER_PORT", String.valueOf(request.getServerPort()) },
    { "SERVER_PROTOCOL", request.getProtocol() },
    { "SERVER_SOFTWARE", getServletContext().getServerInfo() }
    };
    String title = "Servlet Example: 顯示CGI變量";
    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>CGI Variable Name<TH>Value");
    for(int i=0; i<variables.length; i++) {
    String varName = variables[i][0];
    String varValue = variables[i][1];
    if (varValue == null)
    varValue = "<I>沒有被賦值</I>";
    out.println("<TR><TD>" + varName + "<TD>" + varValue);
    }
    out.println("</TABLE></BODY></HTML>");
    }

    public void doPost(HttpServletRequest request,
    HttpServletResponse response)
    throws ServletException, IOException {
    doGet(request, response);
    }
    }

    //! ####### End ShowCGIVariables.java
    posted on 2006-08-09 10:59 fly 閱讀(2191) 評論(0)  編輯  收藏 所屬分類: jsp學習
    主站蜘蛛池模板: 最近中文字幕mv免费高清视频8| 精品福利一区二区三区免费视频| 亚洲色成人网站WWW永久| 免费看一区二区三区四区| 亚洲精品美女久久久久| 日韩a级毛片免费观看| 精品国产免费一区二区三区| 自怕偷自怕亚洲精品| 午夜色a大片在线观看免费| 一级免费黄色毛片| 亚洲精品**中文毛片| 国产在线不卡免费播放| 久草免费福利视频| 亚洲国产精品一区二区三区在线观看| 亚洲av无码国产精品色在线看不卡 | 亚洲av乱码一区二区三区香蕉| 国产人成免费视频| 99在线免费观看视频| 深夜A级毛片视频免费| 亚洲邪恶天堂影院在线观看| 国产精品免费看久久久久| 久久久久国产精品免费免费不卡| 亚洲午夜精品久久久久久app| 亚洲一区二区三区在线观看蜜桃| 亚洲阿v天堂在线2017免费| 亚洲黄色免费网址| 久久成人18免费网站| 亚洲AV日韩AV永久无码色欲| 亚洲天堂一区二区| 国产成人精品日本亚洲专区| 午夜免费不卡毛片完整版| 免费无码毛片一区二区APP| 性生大片视频免费观看一级| 亚洲综合欧美色五月俺也去| 久久综合图区亚洲综合图区| 亚洲精品美女久久久久99小说| a毛片基地免费全部视频| 无码成A毛片免费| yellow免费网站| 久久久久久亚洲精品无码| 亚洲伦理一二三四|