JavaWeb學習之Servlet(一)----MyEclipse及Tomcat的配置

【聲明】html

歡迎轉載,但請保留文章原始出處→_→java

文章來源:http://www.cnblogs.com/smyhvae/p/4134921.htmlweb

 

【開發環境】apache

物理機版本:Win 7旗艦版(64位)小程序

jdk版本:jdk1.8.0_20瀏覽器

MyEclipse版本:10.7.1tomcat

Tomcat版本:apache-tomcat-7.0.57多線程

1、Servlet的基本概念:app

Servlet是sun提供的一種動態web資源開發技術.本質上就是一段java小程序.能夠將Servlet加入到Servlet容器中運行.框架

  • Servlet容器:可以運行Servlet的環境就叫作Servlet容器. --- tomcat
  • web容器:可以運行web應用的環境就叫作web容器 --- tomcat

Servlet的基本運行方式:

Servlet沒有main()方法。它們受控於另外一個Java應用(例如Tomcat),這個Java應用稱爲Sevlet容器,Tomcat就是這樣一個容器。一般咱們把Tomcat也叫作Servlet容器。

eac85d2e-366f-44df-8aef-39c8ac46cb92

Servlet默認是以多線程模式執行的。

注:JSP是爲了方便寫html代碼和Java代碼,它的自己其實仍是Servlet。

 

2、MyElipse的配置:

一、選擇工做空間:只要切換了工做空間,全部的配置所有清零。

二、配置jdk:

選擇菜單欄Windows-->Preferences,選擇標籤Java-->Installed JREs,界面以下:

b8d28911-9c4f-49ba-93ac-f509f5c90521

上圖中,能夠看到,MyEclise有自帶的jdk,那咱們仍是使用本身安裝的jdk吧,單擊上圖中的「add」按鈕,彈出以下界面:

dcaa9a3e-234d-4554-a095-cd79aa510142

上圖中,選擇本身安裝的jdk路徑,而後finish,繼續:

4b049373-8846-4b46-849a-04c4eee31bb5

三、配置工做空間的編碼:今後以後你建立的任何項目中的文本文件默認編碼都是utf-8

選擇菜單欄Windows--preferences,選擇標籤General-->Workspace,以下:

9f2560cc-f09a-4fd2-9ba6-b8d849133898

四、改字體:

 

 

3、使用MyEclipse建立Web工程:

一、MyEclipse指定Tomcat:

選擇菜單欄Window-->Preferences,選擇標籤MyEclipse-->Servers-->Tomcat,而後:

e2a59d5a-d7ed-476d-be98-832866ae67c1

上圖中,選擇本身的Tomcat目錄,記得必定要選中紅框部分的"Enable"。

檢查運行的jdk:

14fc3ca3-f8fd-40f4-a727-6869062f1f47

同時,咱們關閉MyEclipse自帶Tomcat:

9dcdf99f-737b-48d5-b723-9f6c4aede9e9

0aeddb4b-8c59-4acf-bec7-e0750b54bb53 

 二、MyEclipse建立Web項目:

868ac036-277f-40dd-a761-98c80d132da4

上圖中的Context root URL指的是外部訪問的虛擬路徑,點擊finish,繼續:

713edfd5-3791-439c-be36-fc998aa4fd13

上圖中,選擇「no」便可。若是選擇「yes」也行,就會用6.0來編譯,而不是5.0。繼續:

0bfb900a-1f72-475c-b322-237a29bf5702

上圖中,是讓你從Java視圖切換成MyEclipse視圖,選擇「yes」。

新建的工程,目錄結構以下:

e830f48f-8b80-4737-97cf-212756afc087

  • WebTest:web工程的名稱,該工程部署時,在webapps目錄下就會有一個example的web應用
  • src目錄:Java程序的開發目錄,該目錄下編寫的全部程序在部署時,會自動部署到example/web-inf/classes目錄下。
  • WebRoot目錄:webroot對應於web應用的根目錄,該目錄下的全部子目錄和子文件在部署時,會原封不動的發佈到web應用目錄下。

若是須要修改這個Web工程的對外訪問路徑Context Root,能夠右鍵這個項目,選擇Properties,選擇MyEclipse-->Web標籤:

3c5db6f7-f0a0-4f05-8412-4bfb28e92722

在上圖紅框部分進行需改就好了。

 

三、MyEclipse發佈Web項目到Tomcat下:

615b4396-e8a8-419c-aad6-9b241da9a036

選擇上圖中的按鈕(菜單欄下方),提示文字爲:Deploy Project to Server,彈出以下界面:

9eb9a10f-ea21-4d5d-8e4c-1d4bf2b59a12

上圖中,選擇add,繼續:

b34edee6-3d3c-4ebe-9523-189e159b3ec3

上圖中,選擇咱們以前Tomcat,就好了。

固然了,還有另一種方式能夠發佈到Tomcat,方法是:右鍵工程文件,效果以下:

206884db-e6b1-4c31-a63a-6a4e4db28211

項目一旦發佈到Tomcat,就會立刻把項目的WebRoot目錄copy到Tomcat的webapps目錄下,並把WebRoot重命名爲項目名稱,即WebTest:

f34238b0-aa61-42c8-bf7d-271d71757b8d

發佈以後,若是想在網頁上看效果,須要先運行Tomcat:

50fc161f-f670-4f1e-860b-5e6d19b0d984

而後在網址輸入url就好了:

258797e1-a0a8-4609-9c5c-efbc24d9e332

 

4、建立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包。

一、方式一:新建class文件

(1)新建一個class文件MyServlet.java,繼承子類HttpServlet:

MyServlet.java:

 1 package com.vae.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 //通常實現一個Servlet,只要繼承HttpServlet類便可
12 public class MyServlet extends HttpServlet {
13     @Override
14     protected void doGet(HttpServletRequest req, HttpServletResponse resp)
15             throws ServletException, IOException {
16         // TODO Auto-generated method stub
17         //super.doGet(req, resp);
18         //獲取對客戶端的輸出流(out對象)
19         PrintWriter out = resp.getWriter();
20         out.write(""Hello,Servlet"");
21     }
22 
23     @Override
24     protected void doPost(HttpServletRequest req, HttpServletResponse resp)
25             throws ServletException, IOException {
26         // TODO Auto-generated method stub
27         //super.doPost(req, resp);
28     }
29 }

上方代碼中,若是採用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中 經過標籤<servlet-mapping>配置一個映射的路徑,一樣附上別名name和路徑url。

打開web.xml,添加一些代碼。

web.xml:

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
 3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
 5     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
 6     <display-name></display-name>
 7     <welcome-file-list>
 8         <welcome-file>index.jsp</welcome-file>
 9     </welcome-file-list>
10 
11     <!-- 配置一個servlet -->
12     <servlet>
13         <servlet-name>helloServlet</servlet-name>
14         <servlet-class>com.vae.servlet.MyServlet</servlet-class>
15     </servlet>
16 
17     <!-- 配置一個servlet映射的URL路徑 -->
18     <servlet-mapping>
19         <servlet-name>helloServlet</servlet-name>
20         <url-pattern>/hello</url-pattern>
21     </servlet-mapping>
22 
23 </web-app>

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類。

運行程序,效果以下:

39005b42-f788-4a07-8dbf-1d1074b43773

注意必定要刪除MyServlet.java代碼中繼承父類的方法:super.doGet(req, resp);、super.doPost(req, resp);(17行、27行),不然會出現以下錯誤的頁面:

f9915954-5501-4fd6-a5fb-88c47ba55541

二、方式二:新建Servlet文件

注:只有在MyEcipse視圖下才能新建Servlet文件,在Java視圖下是不行的。

咱們來新建一個Servlet文件:

7148040d-635f-4675-8604-f449f77c394b

上圖中,MyEclipse會自動給咱們繼承父類HtpServlet,而後咱們只須要複寫doGet和doPost方法就好了。點擊next,繼續:

e0fb5de4-4440-416d-96fe-fcd9f4de5171

MyServlet.java代碼以下:

 1 package com.vae.servlet;
 2 
 3 import java.io.IOException;
 4 import java.util.Date;
 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 public class MyServlet extends HttpServlet {
12 
13     public void doGet(HttpServletRequest request, HttpServletResponse response)
14             throws ServletException, IOException {
15         //顯示當前時間
16         response.getWriter().write("now time:" + new Date().toLocaleString());
17 
18     }
19 
20     public void doPost(HttpServletRequest request, HttpServletResponse response)
21             throws ServletException, IOException {
22         doGet(request, response);
23 
24     }
25 
26 }

在網頁輸入url,效果以下:

67afabad-787f-4c51-b85b-c0337e06f701

上圖能夠看到,同一個資源,在不一樣的時間、不一樣的人訪問的時候,是不同的,很顯然Servlet是動態Web資源。

總結:完成了MyEclipse及Tomcat的配置,以及Servlet的開發流程。

相關文章
相關標籤/搜索