一、Servlet的基本概念:
Servlet是sun提供的一種動態web資源開發技術。本質上就是一段java小程序。可以將Servlet加入到Servlet容器中運行。
Servlet容器:能夠運行Servlet的環境就叫做Servlet容器。 — tomcat
web容器:能夠運行web應用的環境就叫做web容器 — tomcat
Servlet的基本運行方式:
Servlet沒有main()方法。它們受控于另一個Java應用(例如Tomcat),這個Java應用稱為Sevlet容器,Tomcat就是這樣一個容器。通常我們把Tomcat也叫做Servlet容器。
Servlet默認是以多線程模式執行的。
注:JSP是為了方便寫html代碼和Java代碼,它的本身其實還是Servlet。
二、MyElipse的配置:
1、選擇工作空間:只要切換了工作空間,所有的配置全部清零。
2、配置jdk:
選擇菜單欄Windows–》Preferences,選擇標簽Java–》Installed JREs,界面如下:
上圖中,可以看到,MyEclise有自帶的jdk,那我們還是使用自己安裝的jdk吧,單擊上圖中的“add”按鈕,彈出如下界面:
上圖中,選擇自己安裝的jdk路徑,然后finish,繼續:
3、配置工作空間的編碼:從此之后你創建的任何項目中的文本文件默認編碼都是utf-8
選擇菜單欄Windows–preferences,選擇標簽General–》Workspace,如下:
4、改字體:
三、使用MyEclipse創建Web工程:
1、MyEclipse指定Tomcat:
選擇菜單欄Window–》Preferences,選擇標簽MyEclipse–》Servers–》Tomcat,然后:
上圖中,選擇自己的Tomcat目錄,記得一定要選中紅框部分的”Enable”。
檢查運行的jdk:
同時,我們關閉MyEclipse自帶Tomcat:
2、MyEclipse創建Web項目:
上圖中的Context root URL指的是外部訪問的虛擬路徑,點擊finish,繼續:
上圖中,選擇“no”即可。如果選擇“yes”也行,就會用6.0來編譯,而不是5.0。繼續:
上圖中,是讓你從Java視圖切換成MyEclipse視圖,選擇“yes”。
新建的工程,目錄結構如下:
WebTest:web工程的名稱,該工程部署時,在webapps目錄下就會有一個example的web應用
src目錄:Java程序的開發目錄,該目錄下編寫的所有程序在部署時,會自動部署到example/web-inf/classes目錄下。
WebRoot目錄:webroot對應于web應用的根目錄,該目錄下的所有子目錄和子文件在部署時,會原封不動的發布到web應用目錄下。
如果需要修改這個Web工程的對外訪問路徑Context Root,可以右鍵這個項目,選擇Properties,選擇MyEclipse–》Web標簽:
在上圖紅框部分進行需改就行了。
3、MyEclipse發布Web項目到Tomcat下:
選擇上圖中的按鈕(菜單欄下方),提示文字為:Deploy Project to Server,彈出如下界面:
上圖中,選擇add,繼續:
上圖中,選擇我們之前Tomcat,就行了。
當然了,還有另外一種方式可以發布到Tomcat,方法是:右鍵工程文件,效果如下:
項目一旦發布到Tomcat,就會馬上把項目的WebRoot目錄copy到Tomcat的webapps目錄下,并把WebRoot重命名為項目名稱,即WebTest:
發布之后,如果想在網頁上看效果,需要先運行Tomcat:
然后在網址輸入url就行了:
四、創建Servlet的一般步驟:
Servlet的框架組成:
Servlet框架是由兩個Java包組成:Javax.servlet和Javax.servlet.http。Servlet的框架的核心里Javax.servlet.Servlet接口,所有的Servlet都必須實現這一接口。
步驟:
新建一個類實現sun公司定義的Servlet接口
將寫好的類配置到tomcat中的web應用的web.xml中(配置對外訪問路徑)
注1:為了理解過程,下面的方式一是新建一個class文件作為Servlet,然后手動配置Web.xml。其實,實際開發中,直接新建Servlet文件(方式二),就能一步到位,Web.xml會自動配置好。
注2:Tomcat內置Servlet的jar包。
1、方式一:新建class文件
(1)新建一個class文件MyServlet.java,繼承子類HttpServlet:
MyServlet.java:
package com.vae.servlet; 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; //一般實現一個Servlet,只要繼承HttpServlet類即可 public class MyServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // TODO Auto-generated method stub //super.doGet(req, resp); //獲取對客戶端的輸出流(out對象) PrintWriter out = resp.getWriter(); out.write(“”Hello,Servlet“”); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // TODO Auto-generated method stub //super.doPost(req, resp); } }
上方代碼中,如果采用get請求,就可以重寫doGet方法。注意要注釋掉第17行的代碼(父類的方法)。
其實,doPost和doGet方法其實是在Servlet類的service()方法的內部中調用的。Tomcat已經把14行的request和response這兩個參數給new好了。
19行:PrintWriter是字符打印流,這個字符流的輸出源針對的是頁面(向客戶端輸出)。
(2)Web.xml配置,配置Servlet的對外訪問路徑(URL):
既然這個Servlet是由Web容器啟動的,那么就需要在Web.xml中進行配置,這樣的話,Tomcat在啟動的時候就會自動加載這個文件。
瀏覽器訪問Web端必須通過url,于是還需要在Web.xml中 通過標簽配置一個映射的路徑,同樣附上別名name和路徑url。
打開web.xml,添加一些代碼。
web.xml:
“1.0” encoding=“UTF-8”?》 “2.5” 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 ”》 index.jsphelloServlet com.vae.servlet.MyServlet helloServlet /hello
11至21行是我添加的代碼。
12行至15行:Web.xml配置。一個名稱映射一個類,別名可以隨便取,方便在整個web.xml中引用這個Servlet(13行),但類名必須為之前定義的Servlet,含包名(14行)。
18行至21行:url配置,讓瀏覽器通過這個url訪問Web端。19行的name別名必須和13行一樣,20行的”/hello”是我們設置的url路徑。
其實就是根據20行的url找到13行的別名,進而找到14行的Servlet類。
運行程序,效果如下:
注意一定要刪除MyServlet.java代碼中繼承父類的方法:super.doGet(req, resp);、super.doPost(req, resp);(17行、27行),否則會出現如下錯誤的頁面:
2、方式二:新建Servlet文件
注:只有在MyEcipse視圖下才能新建Servlet文件,在Java視圖下是不行的。
我們來新建一個Servlet文件:
上圖中,MyEclipse會自動給我們繼承父類HtpServlet,然后我們只需要復寫doGet和doPost方法就行了。點擊next,繼續:
MyServlet.java代碼如下:
package com.vae.servlet; import java.io.IOException; import java.util.Date; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class MyServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //顯示當前時間 response.getWriter().write(“now time:” + new Date().toLocaleString()); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
在網頁輸入url,效果如下:
上圖可以看到,同一個資源,在不同的時間、不同的人訪問的時候,是不一樣的,很顯然Servlet是動態Web資源。
總結:完成了MyEclipse及Tomcat的配置,以及Servlet的開發流程。
評論
查看更多