而在后來知道JSP,JSF,還有一系列WEB開發框架也是基于Servlet的時候更是對它懷有憧憬之神往。所以從今天起,開始繼續重新整理下Servlet。
自己看的東西,面上話就不說了,概念的東西網上一搜都有。
J2EE就是一系列標準,Servlet屬于它所以也不例外。一些WEB容器符合這標準規范,就可以在其中使用Servlet。只用過TOMCAT所以別的就不說了。
在TOMCAT中,WEB程序都在“webapps”這個文件夾中。要符合Servlet標準,就有類似與這樣的一個結構:1、在項目目錄下必須存在“WEB-INF”這個目錄。2、“WEB-INF”下必須有一個“web.xml”文件,這個文件符合J2EE規范。3、如果要跑Servlet在“WEB-INF”下存在一個“classes”文件夾里面存放編譯好的Servlet文件(*.class)。4、“WEB-INF”下包含一個“lib”文件夾來存放所用到的“jar包”。

Servlet是一個接口,Servlet是在服務器端運行的程序,也可以在除HTTP服務器外的其他服務器端運行,一般情況來說我們要實現Servlet這個接口就實現它的子類,GenericServle直接實現Serlvet但是個抽象類,所以直接實現GenericServle的子類HttpSerlvet。
當客戶端請求服務器的時候所制定的Servlet會被調用。doGet和doPost方法,直接在url訪問是調用doGet只有在通過Form提交時候并且Form的action屬性為post時候才調用doPost方法。
這兩個方法里都有兩個參數“request”和“response”request是取得從客戶端拿來的數據,而response是對客戶端發送數據。
新建一個Servlet,名字為“HelloWorld.java”我把代碼貼下面。(建的時候如果IDE是不支持Servlet的話就先吧Servlet-api.jar這個包導入工程中,比如在用Eclipse做開發的時候。)
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/”下面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.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> //這里是設置剛才寫的servlet的名字可以隨便起
<servlet-class>HelloWorld</servlet-class> //這里是class文件的名字,建立從classes目錄下HelloWorld.class文件把文件名字拷貝過來,不要后綴。。。。
</servlet>
<servlet-mapping> //Servlet映射
<servlet-name>Hello</servlet-name> //這里是指要訪問這個URL的時候對應需要調用哪個 Servlet。注意跟上面的“servlet名字”一直,而不是類名。
<url-pattern>/Hello</url-pattern> //設置需要訪問的url是跟在你webapps下面項目名字后的記得以“/”開頭
</servlet-mapping>
</web-app>
都配完了。<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> //這里是設置剛才寫的servlet的名字可以隨便起
<servlet-class>HelloWorld</servlet-class> //這里是class文件的名字,建立從classes目錄下HelloWorld.class文件把文件名字拷貝過來,不要后綴。。。。
</servlet>
<servlet-mapping> //Servlet映射
<servlet-name>Hello</servlet-name> //這里是指要訪問這個URL的時候對應需要調用哪個 Servlet。注意跟上面的“servlet名字”一直,而不是類名。
<url-pattern>/Hello</url-pattern> //設置需要訪問的url是跟在你webapps下面項目名字后的記得以“/”開頭
</servlet-mapping>
</web-app>
現在開啟tomcat服務器。這么簡單的程序,應該不出錯的,如果出錯,最多的應該是web.xml文件的錯誤,配置問題,請自己檢查。而且注意,servlet-class里“HelloWorld”要與你的HelloWorld.class名字大小寫一致。
打開瀏覽器。如果你跟我的目錄一模一樣的話,就應該輸入 http://localhost:8080/TestServlet/Hello

今天心情不好,就寫到這里吧。