【JAVA SERVLET 开发系列之二】创建WEBAPP详细步骤,通过SERVLET实现HTTP简单交互
轉載自【黑米GameDev街區】 原文鏈接:?http://www.himigame.com/java-servlet/853.html
創建一個webApp詳細步驟如下:
? ? ? 1. ??在我們的tomcat目錄下的webapps 下創建一個自定義目錄,作為我們webapp的整個項目目錄;這里Himi命名為MyWebApp;
?
? ? ? 2.然后在 MyWebApp下繼續創建一個“WEB-INF”文件夾(必須有),在WEB-INF下創建一個名字為”web.xml”文件(必須有),并且在WEB-INF繼續放置一個名為“lib”文件夾(必須有) ,lib下主要用于放置第三方jar包,tomcat自動為我們加載;最后仍舊在WEB-INF中創建一個名為“classes”文件夾(必須有),整個classes文件夾主要用于放置我們編譯好的servlet文件;
目錄如下圖:
? ?
? ? ? 3.?第二步中新建的web.xml只需要寫入如下內容即可:
| 1 2 3 4 5 6 7 8 9 10 | <?xml version="1.0" encoding="ISO-8859-1"?> <web-app xmlns="http://java.sun.com/xml/ns/javaee" ??xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ??xsi:schemaLocation="http://java.sun.com/xml/ns/javaee ??????????????????????http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" ??version="3.0" ??metadata-complete="true"> </web-app> |
?
? ? ? ?4.?設置tomcat自動為我們監控目錄是否有變化,有變化就自動為我們重新加載,設置方法:
在tomcat目錄下,conf/context.xml 打開后將?<Context> 標簽加入一個屬性,如下:
| 1 | ???? <Context reloadable="true"> |
?
? ? ? ? ?5.編寫我們第一個Servlet:
IDE 新建一個 Java Project,然后在此項目中加入servlet jar包,此jar包為:
xxx(你的tomcat目錄)/lib/servlet-api.jar
?
? ? ? ? ?6.?新建一個類,繼承HttpServlet 并且重寫doGet,?doPost兩個函數,如下:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author Himi */ public class HelloServlet extends HttpServlet { private static final long serialVersionUID = 1L; @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // TODO Auto-generated method stub super.doGet(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // TODO Auto-generated method stub super.doPost(req, resp); } } |
OK, doGet和doPost 都有兩個參數:
1).?HttpServletRequest ? ?表示客戶端傳過來的一個請求,然后被Tomcat包裝成對象;
2).?HttpServletResponse ? 表示對客戶端的一個應答,將數據發送給客戶端;
這里假設我們客戶端使用get方式訪問服務器,那么我們稍微修改下get函數如下:
| 1 2 3 4 5 6 7 8 9 | @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { PrintWriter pw??= resp.getWriter();//得到一個輸出流 //寫給Client端一個簡單網頁信息 pw.println("<html><head></head><body>Server:Hello Client~</body></html>"); pw.flush(); pw.close(); } |
?
? ? ? ? 7.?這里我們雖然編寫了一個Servlet,但是無法使用必須通過Tomcat使用,所以我們將剛剛編寫的Servlet類找到其對應編譯后的.class文件,然后放置我們在tomcat目錄下自定義的MyWebApp/WEB-INF/classes文件夾下;
?
? ? ? ? ?8.修改web.xml讓tomcat知道當客戶端訪問server時候知道什么時候調用使用我們的servlet,將web.xml內容修改如下:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | <?xml version="1.0" encoding="ISO-8859-1"?> <web-app xmlns="http://java.sun.com/xml/ns/javaee" ??xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ??xsi:schemaLocation="http://java.sun.com/xml/ns/javaee ??????????????????????http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" ??version="3.0" ??metadata-complete="true"> ????<servlet> ????????<servlet-name>servlethimi</servlet-name> ????????<servlet-class>HelloServlet</servlet-class> ????</servlet> ????<servlet-mapping> ????????<servlet-name>servlethimi</servlet-name> ????????<url-pattern>/himi</url-pattern> ????</servlet-mapping> ????<servlet-mapping> ????????<servlet-name>servlethimi</servlet-name> ????????<url-pattern>/xiaominghimi</url-pattern> ????</servlet-mapping> </web-app> |
這里大概解釋一下:
1) ?<servlet-name> 標簽是給你的servlet起個名字,整個名字是給tomcat來看的;
2)?<servlet-class> 對應你編譯后的servlet的類名;
3)?<url-pattern> 整個標簽主要是告訴tomcat,Client端訪問我這個servlet而使用的字段是什么;
這里注意兩點:
a) ?<url-pattern>標簽內容要以”/”開頭;
b) 每個servlet可以對應很多個訪問字段,比如這里我有兩個?<servlet-mapping>對應兩個訪問字段”/himi”,”/xiaominghimi”
到此我們第一個簡單的WebApp就完成了,然后我們測試一下;
首先啟動tomcat ?,打開終端 startup.sh
然后打開你的safari 在地址欄敲入:
http://localhost:8080/MyWebApp/xiaominghimi
或者:
http://localhost:8080/MyWebApp/himi
都可以正常得到如下內容:
?
整個網頁的源碼如下:
| 1 | <html><head></head><body>Server:Hello Client~</body></html> |
OK,數據獲取正常;
總結
以上是生活随笔為你收集整理的【JAVA SERVLET 开发系列之二】创建WEBAPP详细步骤,通过SERVLET实现HTTP简单交互的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PAT (Advanced Level)
- 下一篇: 【COCOS2DX隐藏IOS7状态栏】通