andy_taoke
          大家一起來學JAVA
          posts - 9,comments - 3,trackbacks - 0
          今天動手實踐了一下寫Servlet的代碼,感覺不錯.現在寫些東西給大家分享一下:

          我們是用Servlet的API處理HTTP請求的,現在我給大家看一段代碼,它的作用就是在瀏覽器里面打出一行字,經典的不能再經典(你想說老土我也不反對)就是,Hello,World
          package Chap2;

          import java.io.IOException;
          import java.io.PrintWriter;

          import javax.servlet.ServletException;
          import javax.servlet.http.HttpServlet;
          import javax.servlet.http.HttpServletRequest;
          import javax.servlet.http.HttpServletResponse;

          public class HelloWorld extends HttpServlet
          {
              // eclipse非要讓我加這句話,要么會有一個警告,我看對運行沒有什么影響我就加了,不知道哪位高人知道怎么用這個東西
              private static final long serialVersionUID = 1L;

              // 這個方法可以處理GET的請求
              public void doGet(HttpServletRequest request, HttpServletResponse response)
                      throws ServletException, IOException {

                  // 設置一個Content-Type首部
                  response.setContentType("text/html");
                 
                  // 這個東西就像你拿到了向客戶端瀏覽器寫字的一支筆
                  PrintWriter out = response.getWriter();       
                  // 現在可以往客戶端的瀏覽器寫HTML代碼了,想怎么寫就怎么寫,呵呵
                  out.println( "<HTML>" );
                  out.println( "<HEAD><TITLE>Hello World</TITLE></HEAD>" );
                  out.println( "<BODY>" );
                  out.println( "<BIG>Hello World</BIG>" );
                  out.println( "</BODY></HTML>" );
              }
          }

          把這個東西發布到你的服務器下面,你就可以看到一行字:Hello,World.
          至于怎么配置服務器,近期我會給大家一份資料,里面詳細描述了配置JDK+Tomcat+Eclipse+MyEclipse的方法,這些軟件都可以到我的網站上去下載,鏈接在我的簽名里面!

          下面我們來點動態的東西,做完了以后,學過JSP的人們會發現,這個...不就是JSP么?
          對!JSP就是拿這個東西實現的,就如同Windows API和MFC的關系;相信如果你是個肯鉆研的主,早就不愿意學MFC那個把你規定的死死的東西了吧.
          第二個例子:
          package Chap2;

          import java.io.IOException;
          import java.io.PrintWriter;

          import javax.servlet.ServletException;
          import javax.servlet.http.HttpServlet;
          import javax.servlet.http.HttpServletRequest;
          import javax.servlet.http.HttpServletResponse;

          public class Exp2 extends HttpServlet
          {
              private static final long serialVersionUID = 1L;

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

                  response.setContentType("text/html");
                  PrintWriter out = response.getWriter();
                 
                  String name = request.getParameter( "name" );
                  out.println( "<HTML>" );
                  out.println( "<HEAD>" );
                  out.println( "<TITLE>Hello " + name + ".</TITLE>" );
                  out.println( "</HEAD>" );
                  out.println( "<BODY>" );
                  out.println( "Hello, " + name + "." );
                  out.println( "</BODY>" );
                  out.println( "</HTML>" );
              }
             
              public String getServletInfo()
              {
                  return "A servlet that knows the name of the person to whom it's saying hello";
              }
          }
          這個Servlet可以接受一個name的參數,當然你可以新建一個頁面來讓用戶來提交這個參數.
          我給大家一個
          <HTML>
              <HEAD>
                  <TITLE>Introductions</TITLE>
              </HEAD>
             
              <BODY>
                  Exp2
                  <FORM METHOD=GET ACTION="servlet/Exp2"> If you don't mind me asking, what is your name?
                      <INPUT TYPE=TEXT NAME="name"></P>
                      <INPUT TYPE=SUBMIT>
                  </FORM>
              </BODY>
          </HTML>
          純粹的HTML代碼,簡單的不能再簡單,根據你服務器配置的不同和Servlet存放的地方的不同,你要看你的FORM標簽上面那個ACTION屬性該怎么填!

          Exp2那個Servlet就是接受了一個name的變量,然后叫一下你的名字,問候你下你呵呵.

          但是有時候用戶會發出一個HEAD請求(客戶端只想看到響應的首部時發出的請求),這個東西可能會讓你很煩,你心里會說這些人就會給我搗亂,發什么HEAD請求啊!確實這個東西看上去微不足道,也沒有doHead()的方法可以使用.任何有子類HttpServlet和實現了doGet方法的servlet都支持HEAD請求.

          現在我們看一下處理HEAD請求的工作過程:
          HttpServlet的service()方法確定HEAD請求并把它特殊對待。它構建一個修改過的HttpServletResponse對象,并把它和原來的請求一起發給doGet方法(你知道了,我們要在doGet那個東西里面做文章!)。很高興地告訴你,如果是一個HEAD請求,系統可以為我們自動屏蔽后面的輸出,但是如果讓我們來做一個判斷,你可以提高你的程序性能,也能加深我們對這個Servlet的了解。

          我們要在Exp2的doGet()方法中加一句話:
          if( request.getMethod().equals( "HEAD" ) ) return;
          通過request這個對象我們可以看到客戶端的請求類型,如果這個字符串時HEAD,哈哈,干掉他!

          但是,即使我們只是處理一個HEAD請求,我們也要設置Content-Type首部。
          posted on 2005-12-30 13:32 Fusion KISS 閱讀(423) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 长寿区| 武夷山市| 辰溪县| 海兴县| 无极县| 宁明县| 宁海县| 珠海市| 潞城市| 新宾| 巢湖市| 万安县| 攀枝花市| 横峰县| 东至县| 右玉县| 香港 | 类乌齐县| 青岛市| 富阳市| 米脂县| 平利县| 盐亭县| 遵义市| 荃湾区| 两当县| 小金县| 东海县| 海兴县| 无极县| 连平县| 饶河县| 台江县| 丹寨县| 临泉县| 三原县| 富源县| 徐州市| 安塞县| 舟山市| 三穗县|