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