【zz】部署一個簡單的servlet工程(測試)


只有先搞清楚servlet的基本情況,在後續的工作中才能做到心中有數。

http://hi.baidu.com/316526334/item/d489b627dcdc5343469962d1


Servlet是一個執行在服務器端的Java Class文件,載入前必須先將Servlet程序代碼編譯成.class文件,然後將此class文件放在servlet Engline路徑下。Servlet API使用javax.servlet和javax.servlet.http兩個包的接口類。

Servlet的最大的缺點是不能有效地管理頁面的邏輯部分和頁面的輸出部分,導致Servlet代碼非常混亂,而用JSP和JavaBean/Servlet結合可以有效地管理頁面的邏輯部分和頁面的輸出部分。

當服務器上的一個JSP網頁被第一次請求執行時,服務器上的JSP引擎首先將JSP頁面文件轉譯成一個Java文件,再將這個Java文件編譯成class字節碼文件(即Servlet類),然後執行以響應客戶的請求,當這個JSP頁面再次被請求執行時,JSP引擎將直接執行這個字節碼文件來響應客戶,響應速度比第一次執行快很多。

    兩者可以互相調用,一般Servlet較多應用於業務邏輯(頁面HTML輸出不多或沒有),而JSP偏重於數據展現,同一份數據可以用不同形式的視圖來展現。


1.開發部署一個簡單的servlet

這裏以Tomcat5.5作爲應用服務器,它是Apache+Servlet/JSP容器。先介紹一下Tomcat的目錄結構,然後講解如何添加一個應用,並部署一個簡單的Servlet。

1)Tomcat 的主要目錄結構

①     /bin: 存放Tomcat服務器的可執行文件和運行用的Jar包。

②     /conf :存放Tomcat服務器的各種配置文件,其中最重要的是server.xml。

③     /server :包含3個子目錄classes、lib和webapps。

④     /common/lib 存放Tomcat服務器以及所有Web應用都可以訪問的JAR。

⑤     /logs:存放了Tomcat的日誌文件。

⑥     /webapps:當發佈Web應用時,默認情況下把Web應用文件放於此目錄下。

⑦     /work:Tomcat把由JSP生成的Servlet放於此目錄下。

其中server.xml是用於整個Web服務器的,可以配置Web服務器的端口、應用目錄、應用的入口、用戶訪問安全等信息。


2)Web應用的目錄結構

Web應用有固定的結構,在/webapps目錄下創建一個目錄test,也即爲一個web項目的根目錄。這個Web應用的目錄結構如下:

①     /test:Web應用的根目錄,所有的JSP和Html文件都存放在該目錄下。

②     /test/WEB-INF:存放Web應用的描述文件web.xml。

③     /test/WEB-INF/classes:存放各種class文件,servlet類文件也存放與該目錄下。

④     /test/WEB-INF/lib:存放Web應用所需的各種JAR文件。如可以存放JDBC驅動程序的JAR文件。


3)配置文件web.xml

Java Web 應用通過一個基於XML的發佈描述文件來配置其發佈信息。Web.xml文件中可包含的配置信息有:

①         Servlet的定義;

②         Servlet的初始化參數;

③         Servlet以及JSP的映射;

④         安全域配置參數;

⑤         資源引用;

⑥         環境變量的定義。

配置文件web.xml可以自己編寫,也可以從其他應用(如Root、JSP-examples、servlets-examples等)目錄下拷貝過來修改。


4)部署Servlet文件的步驟

①   編寫Servlet並編譯成class文件,編譯時,將servlet-api.jar文件(在/common/lib 目錄下)加入到classpath中;我這裏是:C:\Program Files\Java\jdk1.6.0_10\jre\lib\ext.如果在ellipse中操作是:工程屬性/構件路徑 /庫   導入servlet.jar/servlet-api.jar,,如果沒有正確放置servlet-api.jar文件,編譯java文件將出錯,這是因爲servlet一般直接繼承HttpServlet類

注:用JDK編譯時,也可以用一個簡單的方法,即:


          在JDK編譯時,把tomcat裏面的servlet-api.jar複製到你要編譯的目錄,這個文件應該在common\lib目錄下的。然後編譯的時候執行   
          javac   -classpath   .\servlet-api.jar   要編譯的java文件.java   
    
       不要被IDE綁住了手腳。

②   將編譯好的class文件拷貝到應用的WEB-INF/classes/下(如/test/WEB-INF/classes/);

③   在web.xml中進行配置 <servlet> 、<servet-mapping>,具體可參見下面的web.xml。

這裏以一簡單的Servlet爲例,實現Servlet的開發和部署。

web.xml文件(置於WEB_INF目錄下)

<?xml version="1.0" encoding="ISO-8859-1"?>

<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
    version="2.4">

    <!-- Define servlets that are included in the example application -->

    <servlet>
        <servlet-name>HelloServlet</servlet-name>
        <servlet-class>HelloServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>HelloServlet</servlet-name>
        <url-pattern>/servlet/HelloServlet</url-pattern>
    </servlet-mapping>

</web-app>

5.HelloServlet代碼

import java.io.*;

import javax.servlet.http.*;

public class HelloServlet extends HttpServlet {

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

    response.setContentType("text/html;charset=gb2312");

    PrintWriter out = response.getWriter();

    out.println("<HTML>");

    out.println("<HEAD>");

    out.println("<TITLE>Hello Servlet</TITLE>");

    out.println("</HEAD>");

    out.println("<BODY>");

    out.println("<B>Hello, World !</B>");

    out.println("</BODY>");

    out.println("</HTML>");

    out.close();

}

}

6. 然後可以測試:

http://localhost:8080/test/servlet/HelloServlet

出現具體問題了在具體分析,建議看一下tomcat的自帶的一個servlet的例子:5.5版本的是

:***/Apache Software Foundation\Tomcat 5.5\webapps\servlets-examples在這個目錄下。

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