隨筆-94  評論-56  文章-3  trackbacks-0

          什么是servlet ?

          一個 servlet 就是 Java 言中的一個 , 是用 Java 寫的 Server 端程序 . 客戶機提交 請求 到服務器 , 服務器中的 servlet 對請求進行處理 , 將處理的結果反饋回客戶機 ( 響應 客戶機的請求 ), 這就是 servlet - 程模型 中扮演的角色 , 它被用來 展服 器的性能 。服 留著可以通 - 程模型來 訪問 用程序。 servlet 可以 任何 型的 生響 ,但通常只用來 Web 用程序

          編寫并運行你的Servlet!
          當一個servlet已經寫好怎樣來運行測試呢?下面通過一個例子詳細的說說,這樣會有一個感性的把握。我用的運行環境是Tomcat5.0
          首先我們來寫一個最簡單的servlet: 命名為HelloServlet.java
          package?test;?
          import?java.io.*;
          import?javax.servlet.*;
          import?javax.servlet.http.*;

          public?class?HelloServlet?extends?HttpServlet{
          ?
          public?void?doGet(HttpServletRequest?request,HttpServletResponse?response)throws?ServletException,IOException{
          ?response.setContentType(
          "text/html;charset=UTF-8");
          ?response.setCharacterEncoding(
          "UTF-8");
          ?
          ?PrintWriter?out
          =response.getWriter();
          ?out.println(
          "<HTML>");
          ?out.println(
          "<BODY>");
          ?out.println(
          "<p>Hello!這是我的第一個Java?Servlet程序。</p>");
          ?out.println(
          "</BODY>");
          ?out.println(
          "</HTML>");
          ?}
          }

          把編譯好的HelloServlet.class文件放到\Tomcat文件夾\webapps\ourappfiles\WEB-INF\classes\test的文件夾下。

          接著編寫我們的web.xml文件。

          <?xml?version="1.0"?encoding="UTF-8"?>
          <!DOCTYPE?web-app?PUBLIC?"-//Sun?Microsystems,?Inc.//DTD?Web?Application?2.3//EN"?"http://java.sun.com/dtd/web-app_2_3.dtd">
          <web-app>
          ?
          <servlet>
          ??
          <servlet-name>helloservlet</servlet-name>
          ??
          <servlet-class>test.HelloServlet</servlet-class>
          ?
          </servlet>
          ?
          <servlet-mapping>
          ??
          <servlet-name>helloservlet</servlet-name>
          ??
          <url-pattern>/Hello</url-pattern>
          ?
          </servlet-mapping>
          </web-app>

          把編寫好的web.xml文件放到\Tomcat文件夾\webapps\ourappfiles\WEB-INF下。
          好了,現在萬事俱備,就差啟動Tomcat運行我們的Servlet了。
          在IE地址欄中輸入http://localhost:8080/ourappfiles/Hello,就可以看到結果了。
          以上就是運行Servlet的幾個步驟。

          通過這個例子可以看出純粹的Servlet編程的缺點.所有的內容------甚至是基本的HTML格式------都必須由Servlet輸出,你不得不在Servlet中放置大量的print語句來結束,唯一的目的就是向用戶返回內容.另外,甚至最簡單的HTML格式變化都必須在JAVA源代碼中解決,這意味著非JAVA開發人員不能進行WEB站點的設計.

          為了克服上述缺點, JavaServer Pages(JSP)應運而生. JSP表面上看是"嵌入了Java 的HTML", 而實際上JSP是"嵌入了HTML的Java Servlet ". 要明白這一點,需要了解一下JSP是如何響應請求的.

          當瀏覽器向服務器請求一個JSP頁面(A.JSP)時, 源頁面(A.JSP)通過轉換器(在TOMCAT中,這個轉換器叫做Jasper)被轉換成一個Java類(如:A_jsp.java),該類繼承于org.apache.jasper.runtime.HttpJspBase基類,而HttpJspBase實現了HttpServlet接口。可見,JSP在運行前首先被編譯為一個Servlet, 這個Servlet對請求進行處理,將結果內容發送回客戶端.所以說, JSP是"嵌入了HTML的Java Servlet ", 其本質就是Servlet.

          如果將上面的servlet程序中的doGet方法寫成下面的樣子:

          public?void?doGet(HttpServletRequest?request,?HttpServletResponse?response)
          ????????????
          throws?ServletException,?IOException?{
          ????????response.setContentType(
          "application/vnd.ms-excel");
          ????????PrintWriter?out?
          =?response.getWriter();
          ????????out.println(
          "\tQ1\tQ2\tQ3\tQ4\tTotal");
          ????????out.println(
          "Apples\t78\t87\t92\t29\t=SUM(B2:E2)");
          ????????out.println(
          "Oranges\t77\t86\t93\t30\t=SUM(B3:E3)");
          ????}?

          運行后,就可以輸出一個excel文件啦!

          附: 對Content-type的詳細說明:
          Content-type?的說明?<?php

          $mimetypes?
          =?array(
          ????'ez'????????
          =>?'application/andrew-inset',
          ????'hqx'????????
          =>?'application/mac-binhex40',
          ????'cpt'????????
          =>?'application/mac-compactpro',
          ????'doc'????????
          =>?'application/msword',
          ????'bin'????????
          =>?'application/octet-stream',
          ????'dms'????????
          =>?'application/octet-stream',
          ????'lha'????????
          =>?'application/octet-stream',
          ????'lzh'????????
          =>?'application/octet-stream',
          ????'exe'????????
          =>?'application/octet-stream',
          ????'class'????????
          =>?'application/octet-stream',
          ????'so'????????
          =>?'application/octet-stream',
          ????'dll'????????
          =>?'application/octet-stream',
          ????'oda'????????
          =>?'application/oda',
          ????'pdf'????????
          =>?'application/pdf',
          ????'ai'????????
          =>?'application/postscript',
          ????'eps'????????
          =>?'application/postscript',
          ????'ps'????????
          =>?'application/postscript',
          ????'smi'????????
          =>?'application/smil',
          ????'smil'????????
          =>?'application/smil',
          ????'mif'????????
          =>?'application/vnd.mif',
          ????'xls'????????
          =>?'application/vnd.ms-excel',
          ????'ppt'????????
          =>?'application/vnd.ms-powerpoint',
          ????'wbxml'????????
          =>?'application/vnd.wap.wbxml',
          ????'wmlc'????????
          =>?'application/vnd.wap.wmlc',
          ????'wmlsc'????????
          =>?'application/vnd.wap.wmlscriptc',
          ????'bcpio'????????
          =>?'application/x-bcpio',
          ????'vcd'????????
          =>?'application/x-cdlink',
          ????'pgn'????????
          =>?'application/x-chess-pgn',
          ????'cpio'????????
          =>?'application/x-cpio',
          ????'csh'????????
          =>?'application/x-csh',
          ????'dcr'????????
          =>?'application/x-director',
          ????'dir'????????
          =>?'application/x-director',
          ????'dxr'????????
          =>?'application/x-director',
          ????'dvi'????????
          =>?'application/x-dvi',
          ????'spl'????????
          =>?'application/x-futuresplash',
          ????'gtar'????????
          =>?'application/x-gtar',
          ????'hdf'????????
          =>?'application/x-hdf',
          ????'js'????????
          =>?'application/x-javascript',
          ????'skp'????????
          =>?'application/x-koan',
          ????'skd'????????
          =>?'application/x-koan',
          ????'skt'????????
          =>?'application/x-koan',
          ????'skm'????????
          =>?'application/x-koan',
          ????'latex'????????
          =>?'application/x-latex',
          ????'nc'????????
          =>?'application/x-netcdf',
          ????'cdf'????????
          =>?'application/x-netcdf',
          ????'sh'????????
          =>?'application/x-sh',
          ????'shar'????????
          =>?'application/x-shar',
          ????'swf'????????
          =>?'application/x-shockwave-flash',
          ????'sit'????????
          =>?'application/x-stuffit',
          ????'sv4cpio'????
          =>?'application/x-sv4cpio',
          ????'sv4crc'????
          =>?'application/x-sv4crc',
          ????'tar'????????
          =>?'application/x-tar',
          ????'tcl'????????
          =>?'application/x-tcl',
          ????'tex'????????
          =>?'application/x-tex',
          ????'texinfo'????
          =>?'application/x-texinfo',
          ????'texi'????????
          =>?'application/x-texinfo',
          ????'t'????????????
          =>?'application/x-troff',
          ????'tr'????????
          =>?'application/x-troff',
          ????'roff'????????
          =>?'application/x-troff',
          ????'man'????????
          =>?'application/x-troff-man',
          ????'me'????????
          =>?'application/x-troff-me',
          ????'ms'????????
          =>?'application/x-troff-ms',
          ????'ustar'????????
          =>?'application/x-ustar',
          ????'src'????????
          =>?'application/x-wais-source',
          ????'xhtml'????????
          =>?'application/xhtml+xml',
          ????'xht'????????
          =>?'application/xhtml+xml',
          ????'zip'????????
          =>?'application/zip',
          ????'au'????????
          =>?'audio/basic',
          ????'snd'????????
          =>?'audio/basic',
          ????'mid'????????
          =>?'audio/midi',
          ????'midi'????????
          =>?'audio/midi',
          ????'kar'????????
          =>?'audio/midi',
          ????'mpga'????????
          =>?'audio/mpeg',
          ????'mp2'????????
          =>?'audio/mpeg',
          ????'mp3'????????
          =>?'audio/mpeg',
          ????'aif'????????
          =>?'audio/x-aiff',
          ????'aiff'????????
          =>?'audio/x-aiff',
          ????'aifc'????????
          =>?'audio/x-aiff',
          ????'m3u'????????
          =>?'audio/x-mpegurl',
          ????'ram'????????
          =>?'audio/x-pn-realaudio',
          ????'rm'????????
          =>?'audio/x-pn-realaudio',
          ????'rpm'????????
          =>?'audio/x-pn-realaudio-plugin',
          ????'ra'????????
          =>?'audio/x-realaudio',
          ????'wav'????????
          =>?'audio/x-wav',
          ????'pdb'????????
          =>?'chemical/x-pdb',
          ????'xyz'????????
          =>?'chemical/x-xyz',
          ????'bmp'????????
          =>?'image/bmp',
          ????'gif'????????
          =>?'image/gif',
          ????'ief'????????
          =>?'image/ief',
          ????'jpeg'????????
          =>?'image/jpeg',
          ????'jpg'????????
          =>?'image/jpeg',
          ????'jpe'????????
          =>?'image/jpeg',
          ????'png'????????
          =>?'image/png',
          ????'tiff'????????
          =>?'image/tiff',
          ????'tif'????????
          =>?'image/tiff',
          ????'djvu'????????
          =>?'image/vnd.djvu',
          ????'djv'????????
          =>?'image/vnd.djvu',
          ????'wbmp'????????
          =>?'image/vnd.wap.wbmp',
          ????'ras'????????
          =>?'image/x-cmu-raster',
          ????'pnm'????????
          =>?'image/x-portable-anymap',
          ????'pbm'????????
          =>?'image/x-portable-bitmap',
          ????'pgm'????????
          =>?'image/x-portable-graymap',
          ????'ppm'????????
          =>?'image/x-portable-pixmap',
          ????'rgb'????????
          =>?'image/x-rgb',
          ????'xbm'????????
          =>?'image/x-xbitmap',
          ????'xpm'????????
          =>?'image/x-xpixmap',
          ????'xwd'????????
          =>?'image/x-xwindowdump',
          ????'igs'????????
          =>?'model/iges',
          ????'iges'????????
          =>?'model/iges',
          ????'msh'????????
          =>?'model/mesh',
          ????'mesh'????????
          =>?'model/mesh',
          ????'silo'????????
          =>?'model/mesh',
          ????'wrl'????????
          =>?'model/vrml',
          ????'vrml'????????
          =>?'model/vrml',
          ????'css'????????
          =>?'text/css',
          ????'html'????????
          =>?'text/html',
          ????'htm'????????
          =>?'text/html',
          ????'asc'????????
          =>?'text/plain',
          ????'txt'????????
          =>?'text/plain',
          ????'rtx'????????
          =>?'text/richtext',
          ????'rtf'????????
          =>?'text/rtf',
          ????'sgml'????????
          =>?'text/sgml',
          ????'sgm'????????
          =>?'text/sgml',
          ????'tsv'????????
          =>?'text/tab-separated-values',
          ????'wml'????????
          =>?'text/vnd.wap.wml',
          ????'wmls'????????
          =>?'text/vnd.wap.wmlscript',
          ????'etx'????????
          =>?'text/x-setext',
          ????'xsl'????????
          =>?'text/xml',
          ????'xml'????????
          =>?'text/xml',
          ????'mpeg'????????
          =>?'video/mpeg',
          ????'mpg'????????
          =>?'video/mpeg',
          ????'mpe'????????
          =>?'video/mpeg',
          ????'qt'????????
          =>?'video/quicktime',
          ????'mov'????????
          =>?'video/quicktime',
          ????'mxu'????????
          =>?'video/vnd.mpegurl',
          ????'avi'????????
          =>?'video/x-msvideo',
          ????'movie'????????
          =>?'video/x-sgi-movie',
          ????'ice'????????
          =>?'x-conference/x-cooltalk',
          )
          ;?
          posted on 2006-07-03 13:40 小言身寸 閱讀(1000) 評論(0)  編輯  收藏 所屬分類: JAVA相關技術
          主站蜘蛛池模板: 锦屏县| 特克斯县| 嘉祥县| 博爱县| 克什克腾旗| 缙云县| 永福县| 平谷区| 玉环县| 都匀市| 平远县| 宜川县| 茶陵县| 南漳县| 砀山县| 静乐县| 体育| 凯里市| 新密市| 肃南| 平原县| 石家庄市| 新民市| 昭苏县| 江山市| 咸阳市| 辉县市| 丘北县| 安图县| 罗江县| 怀来县| 博兴县| 博罗县| 同仁县| 临漳县| 浦东新区| 九江市| 文登市| 苍山县| 大田县| 义乌市|