還記得年前在看尚學(xué)堂教程時候馬先生曾經(jīng)說過“JavaScript在客戶端無所不能,而Servlet在服務(wù)器端無所不能”。這句話讓我感覺Servlet深不可測。
而在后來知道JSP,JSF,還有一系列WEB開發(fā)框架也是基于Servlet的時候更是對它懷有憧憬之神往。所以從今天起,開始繼續(xù)重新整理下Servlet。
自己看的東西,面上話就不說了,概念的東西網(wǎng)上一搜都有。
J2EE就是一系列標(biāo)準(zhǔn),Servlet屬于它所以也不例外。一些WEB容器符合這標(biāo)準(zhǔn)規(guī)范,就可以在其中使用Servlet。只用過TOMCAT所以別的就不說了。
在TOMCAT中,WEB程序都在“webapps”這個文件夾中。要符合Servlet標(biāo)準(zhǔn),就有類似與這樣的一個結(jié)構(gòu):
1、在項目目錄下必須存在“WEB-INF”這個目錄。2、“WEB-INF”下必須有一個“web.xml”文件,這個文件符合J2EE規(guī)范。3、如果要跑Servlet在“WEB-INF”下存在一個“classes”文件夾里面存放編譯好的Servlet文件(*.class)。4、“WEB-INF”下包含一個“lib”文件夾來存放所用到的“jar包”。

Servlet是一個接口,Servlet是在服務(wù)器端運行的程序,也可以在除HTTP服務(wù)器外的其他服務(wù)器端運行,一般情況來說我們要實現(xiàn)Servlet這個接口就實現(xiàn)它的子類,GenericServle直接實現(xiàn)Serlvet但是個抽象類,所以直接實現(xiàn)GenericServle的子類HttpSerlvet。
當(dāng)客戶端請求服務(wù)器的時候所制定的Servlet會被調(diào)用。doGet和doPost方法,直接在url訪問是調(diào)用doGet只有在通過Form提交時候并且Form的action屬性為post時候才調(diào)用doPost方法。
這兩個方法里都有兩個參數(shù)“request”和“response”request是取得從客戶端拿來的數(shù)據(jù),而response是對客戶端發(fā)送數(shù)據(jù)。
新建一個Servlet,名字為“HelloWorld.java”我把代碼貼下面。(建的時候如果IDE是不支持Servlet的話就先吧Servlet-api.jar這個包導(dǎo)入工程中,比如在用Eclipse做開發(fā)的時候。)
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 {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");//文件類型
PrintWriter out = response.getWriter();//拿到“out”
// 簡單,不說了,一系列的客戶端輸出
out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
out.println("<HTML>");
out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>");
out.println(" <BODY>");
out.print("HelloWorld!");
out.println(" </BODY>");
out.println("</HTML>");
out.flush();
out.close();
}
}
建好這個文件之后編譯它,然后把它放在剛才說的“
WEB-INF/classes/”下面

這樣我就差配
web.xml了,這個“web.xml”是web項目的配置核心。
下面在WEB-INF下建立個文件,改名成"web.xml"
把下面代碼寫到里面:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
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">
<servlet> //Servlet配置
<servlet-name>Hello</servlet-name> //這里是設(shè)置剛才寫的servlet的名字可以隨便起
<servlet-class>HelloWorld</servlet-class> //這里是class文件的名字,建立從classes目錄下HelloWorld.class文件把文件名字拷貝過來,不要后綴。。。。
</servlet>
<servlet-mapping> //Servlet映射
<servlet-name>Hello</servlet-name> //這里是指要訪問這個URL的時候?qū)?yīng)需要調(diào)用哪個 Servlet。注意跟上面的“servlet名字”一直,而不是類名。
<url-pattern>/Hello</url-pattern> //設(shè)置需要訪問的url是跟在你webapps下面項目名字后的記得以“/”開頭
</servlet-mapping>
</web-app>
都配完了。
現(xiàn)在開啟tomcat服務(wù)器。這么簡單的程序,應(yīng)該不出錯的,如果出錯,最多的應(yīng)該是web.xml文件的錯誤,配置問題,請自己檢查。而且注意,servlet-class里“
HelloWorld”要與你的
HelloWorld.class名字大小寫一致。
打開瀏覽器。如果你跟我的目錄一模一樣的話,就應(yīng)該輸入
http://localhost:8080/TestServlet/Hello
今天心情不好,就寫到這里吧。
posted on 2008-06-04 22:15
leweslove 閱讀(275)
評論(0) 編輯 收藏 所屬分類:
J2EE