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

          什么是servlet ?

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

          編寫并運行你的Servlet!
          當一個servlet已經(jīng)寫好怎樣來運行測試呢?下面通過一個例子詳細的說說,這樣會有一個感性的把握。我用的運行環(huán)境是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下。
          好了,現(xiàn)在萬事俱備,就差啟動Tomcat運行我們的Servlet了。
          在IE地址欄中輸入http://localhost:8080/ourappfiles/Hello,就可以看到結(jié)果了。
          以上就是運行Servlet的幾個步驟。

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

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

          當瀏覽器向服務器請求一個JSP頁面(A.JSP)時, 源頁面(A.JSP)通過轉(zhuǎn)換器(在TOMCAT中,這個轉(zhuǎn)換器叫做Jasper)被轉(zhuǎn)換成一個Java類(如:A_jsp.java),該類繼承于org.apache.jasper.runtime.HttpJspBase基類,而HttpJspBase實現(xiàn)了HttpServlet接口。可見,JSP在運行前首先被編譯為一個Servlet, 這個Servlet對請求進行處理,將結(jié)果內(nèi)容發(fā)送回客戶端.所以說, JSP是"嵌入了HTML的Java Servlet ", 其本質(zhì)就是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 小言身寸 閱讀(1001) 評論(0)  編輯  收藏 所屬分類: JAVA相關(guān)技術(shù)
          主站蜘蛛池模板: 临邑县| 桂阳县| 卢氏县| 汉沽区| 株洲县| 利津县| 阆中市| 丹巴县| 南木林县| 舟曲县| 临潭县| 三亚市| 大宁县| 榆林市| 丽水市| 密云县| 康马县| 屏南县| 丰原市| 济阳县| 博湖县| 莱阳市| 宁远县| 和政县| 麻阳| 六安市| 马龙县| 克拉玛依市| 醴陵市| 安化县| 郁南县| 新竹市| 崇信县| 横山县| 会泽县| 阿克陶县| 北辰区| 温宿县| 梧州市| 聊城市| 行唐县|