前面討論過手動建立jsp的項目,jsp是tomcat服務器負責編譯執行,所以配置相對簡單,而Servlet需要先把java源文件編譯成字節碼class文件,然后再執行,所以需要servlet-api.jar這個包的支持,使用集成的開發環境時,IDE幫助我們做了一些事情,所以手動配置和IDE的原理是一樣的,xml文件的編寫方式也是一樣的,下面就從頭開始建立一個servlet的項目
首先在tomcat服務器目錄下的webapps目錄下新建一個目錄作為項目目錄,我建立的是MyFirstServlet,然后在這個目錄下建立一個WEB-INF目錄,這個和前面的一樣,能直接通過瀏覽器訪問的資源都要放在WEB-INF目錄外面,而WEB-INF目錄是無法通過瀏覽器進行訪問的,然后在WEB-INF目錄中建立classes和lib目錄,lib目錄是放相關類庫的,classes目錄就是servlet運行的目錄,我們編寫好的java源文件可以放到WEB-INF下,也可以自己定義一個存放源文件的目錄,但是千萬不要放在可以被訪問到的地方,然后我們復制web.xml文件,放在WEB-INF目錄下,這樣我們的目錄就部署完畢了,然后我們編寫簡單的servlet源文件,代碼如下:
1 package servlet; 2 3 import java.io.IOException; 4 import java.io.PrintWriter; 5 6 import javax.servlet.ServletException; 7 import javax.servlet.http.HttpServlet; 8 import javax.servlet.http.HttpServletRequest; 9 import javax.servlet.http.HttpServletResponse; 10 11 /* 12 * 繼承於Servlet 13 */ 14 public class HelloServlet extends HttpServlet { 15 16 @Override 17 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 18 System.out.println("處理GET請求"); 19 //獲取輸入 20 PrintWriter out = response.getWriter(); 21 //指定輸出文件類型和編碼 22 response.setContentType("text/html; charset=utf-8"); 23 //開始輸出 24 out.println("<strong>Hello Servlet !!!</strong>"); 25 } 26 27 @Override 28 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 29 doGet(request, response); 30 } 31 32 }
這個java源文件是不能直接用javac編譯的,原因是因為我們沒有添加servlet的jar包,有兩種方法來配置編譯環境
第一個方法是讓之前配置過JDK去加載jar包進行編譯,我們復制tomcat服務器目錄下lib目錄中的servlet-api.jar文件,復制到之前配置好的%JAVA_HOME%\jre\lib\ext\下,如下圖:

第二種方法是,還可以在之前配置好的環境變量CLASSPATH最后追加servlet-api.jar的路徑,比如我的是:;%CATALINA_HOME%\lib\servlet-api.jar,然后確定即可生效,這兩種方法都可以,但是推薦第一種,因為jar包復制過去,以后服務器目錄改變了也不影響
然后我們就可以直接編譯java源文件了,我使用的編碼是UTF-8的,所以用:javac -encoding utf-8 HelloServlet.java進行編譯

那么編譯成功,同目錄下會出現一個HelloServlet.class的字節碼文件,然后我們復制該文件到classes/servlet/下,就是路徑要和package聲明包的保持一致,然后配置web.xml文件,當然在Servlet3.0之后還可以用注解進行url配置,xml文件內容如下:
1 <?xml version="1.0" encoding="UTF-8"?> 2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" metadata-complete="true" version="3.1"> 3 <welcome-file-list> 4 <welcome-file>/index.jsp</welcome-file> 5 </welcome-file-list> 6 7 <servlet> 8 <servlet-name>HelloServlet</servlet-name> 9 <servlet-class>servlet.HelloServlet</servlet-class> 10 </servlet> 11 <servlet-mapping> 12 <servlet-name>HelloServlet</servlet-name> 13 <url-pattern>/servlet/HelloServlet</url-pattern> 14 </servlet-mapping> 15 <servlet-name>HelloServlet</servlet-name> 16 <url-pattern>/servlet/HelloServlet/</url-pattern> 17 </servlet-mapping> 18 19 </web-app>
這里配置和2個url-pattern用任何一個都能訪問,注意<servlet-class>的配置,要把包寫完整,寫好之后保存;然后啟動tomcat,輸入http://localhost:8080/MyFirstServlet/servlet/HelloServlet,訪問就可以了

以上就是手動配置的過程,我們可以把IDE的項目手動的移植過來,也可以自由的配置JavaBean和其他的業務邏輯類等,只要原理明白了其他的就簡單了,這樣就不會出現只會使用IDE的被動,開發起來也更加靈活
