1. 程式人生 > >servlet學習日誌01

servlet學習日誌01

javaweb

web開發是基於請求和響應的:
請求:瀏覽器(客戶端)向伺服器傳送資訊
響應:伺服器向瀏覽器回送資訊

請求和響應是成對出現的。web資源分類

所謂web資源即放在Internet網上供外界訪問的檔案或程式,又根據它們呈現的效果及原理不同,將它們劃分為靜態資源和動態資源。

靜態web資源:固定不變資料檔案(靜態網頁 HTML、文字、音訊、視訊)
靜態web技術:HTML+CSS+JavaScript (HTML5+CSS3) ====== DHTML (Dynamic HTML)


動態web資源:一段程式,執行後,生成資料檔案
動態web技術:servlet,jsp,php, .net ,ruby、python



tomcat

開源小型web伺服器 ,完全免費,主要用於中小型web專案,只支援Servlet和JSP 等少量javaee規範 ,Apache公司jakarta 一個子專案

1、安裝和啟動tomcat
2、把一個web的工程(把一些資源部署到tomcat中,可以讓使用者去訪問);
3、tomcat和myeclipse的結合使用。

tomcat下載和安裝說明


提供的.zip結尾。免安裝版本。不需要安裝,可以直接使用:
注意事項:
1、JAVA_HOME:環境變數。並且配置到jdk的目錄。
例如:
C:\Program Files\Java\jdk1.7.0_72

2、啟動tomcat。 tomcat/bin/startup.bat(window啟動檔案)
找到startup.bat 雙擊執行。會有一個黑視窗,黑視窗不要關閉。(如果關閉,相當於把tomcat停止了。)

3、在瀏覽器位址列中輸入:http://localhost:8080 127.0.0.1:8080
如果看到如下頁面,證明啟動成功

在myclipse中配置 tomcat





啟動tomcat:
注意:此時我們的系統只能啟動一個tomcat。



 tomcat伺服器與servlet版本的關係

servlet:sun公司提供的用於開發動態web資源的技術。
jsp:(java server page),java提供的一門開發web網頁的技術。

tomcat軟體:java開發的。java軟體執行的時候需要jdk。

向下相容。tomcat7也支援servlet3.0/jsp2.2規範,可以支援javaee6.0

myeclipse自帶的tomcat。10.*自帶的tomcat是 tomcat 6.*

當前企業常用的版本 7 * / 8 *



tomcat目錄結構-----重要

bin目錄,啟動和關閉
logs目錄,日誌 目錄
webapps目錄:web專案部署之後的目錄
work目錄:jsp的一些檔案放到work目錄下


將網站目錄複製到tomcat/webapps目錄----掌握

有一個網站(一個資料夾),把資料夾複製到tomcat的webapps目錄下。
資料夾的名字,就是網站的目錄.相當於之前配置 Context path

如果webapps下面有一個ROOT的專案。那麼在訪問的時候,直接可以省略專案的名字/ 表示找到root目錄

把war包部署到tomcat中

war:就是一個壓縮檔案 zip格式的壓縮檔案。 只不過副檔名不是.zip 而是.war

步驟1、把資料夾中的內容壓縮成zip的格式
點選一個要部署的資料夾下面,全選 然後壓縮


步驟2、修改檔案的字尾名為.war

步驟3.把war檔案複製到webapps目錄下。tomcat會自己把war的檔案進行解壓

配置tomcat的埠

tomcat預設的埠是8080(訪問埠)
http://www.baidu.com:80

http的預設埠是80.
如果訪問的時候
輸入http://www.baidu.com
相當於http://www.baidu.com:80

真正在專案上線之後,通常採用80.

在tomcat/conf/server.xml
找到<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
修改port的值。
win7系統,會自帶一個軟體,把80端口占用了。

配置tomcat在執行中,瀏覽器訪問的埠。


如果啟動的時候出現如下錯誤:表示埠被佔用



4.8. 將myeclipse中的web專案部署到tomcat---重點
4.8.1. myeclipse配置tomcat
讓tomcat和myeclipse關聯起來



注意:選擇tomcat的時候,選擇到tomcat目錄即可。



啟動tomcat:

需要注意的問題:


一定要配置到jdk的目錄

4.8.2. myeclipse建立web工程


Context root URL :配置web專案,要被訪問的目錄(Context path=“”,部署到webapps目錄下資料夾的名字。)






4.8.3. 把web工程(myeclipse建立的)部署到tomcat中

1、deplay





myeclipse會把工程檔案的內容,複製到tomcat的webapps目錄下。

複製Web-Root下面的內容。到tomcat的webapps下。 更改資料夾名字為工程名(預設是工程名。)


啟動tomcat



4.9. 修改工程的部署名字



4.9.1. myeclipse把什麼內容部署到tomcat中去了
myeclipse只會把webRoot下面的內容拷貝到tomcat的webapps下面

java檔案會被編譯成class檔案。 class檔案放到web-inf目錄下classes目下

以後html,js,css的內容,放到 webroot目錄下。

在web-inf 下面 有一個web.xml 的檔案。包含了當前的web工程的一些資訊


4.10. web應用(網站)的目錄結構
建立web工程的時候,目錄結構很相似。


web.xml中的內容

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
  <display-name></display-name>
  <welcome-file-list>
  	<!-- 歡迎頁面,當訪問我們這個工程的時候,如果後面什麼也不輸入。就會進入歡迎也沒 -->
    <welcome-file>index.html</welcome-file>
  </welcome-file-list>
</web-app>

如果工程部署之後,是一個ROOT。ROOT表示的目錄相當於/

5. servlet

5.1. servlet簡介



serlvet:1、接受瀏覽器傳送過來的訊息。

          2、給瀏覽器返回訊息。瀏覽器認識html。可以動態去輸出html

Request:請求。客戶端向服務端傳送的資訊。

Response:響應。伺服器向客戶端放鬆的資訊。

通常請求和響應是成對出現的。

作用:servlet 編寫一個程式生成網頁。

瀏覽器請求—servletservlet會生產html。把html傳送給瀏覽器(響應)。瀏覽器看到內容是html

sun公司提供過的servlet的api在javaEE的規範中。如果要使用servlet需要使用javaEE的api。(javeEE包)

javaEE相關的包,(myeclipse自帶。當新建一個web工程的時候,myeclipse會自動的把javaEE包匯入工程中。)

注意:javaEE的api並不在jdk中。



5.2. servlet快速入門
5.2.1. 編寫servlet

寫servlet做兩件事
1、實現servlet介面。 由sun公司定義的一個介面。(定義一個規範)
2、把類部署到web伺服器中(tomcat)。

sun公司定義一個servlet的規範。定義了servlet應該有哪些方法,以及方法需要的引數。
1、實現servlet介面(javax.servlet.Servlet)
2、重寫service方法

當瀏覽器輸入地址,訪問servlet的時候,servlet會執行servcie方法。

3、在WebRoot/WEB-INF/web.xml中配置servlet的路徑 。瀏覽器訪問servlet的路徑
web.xml(新建web工程的時候,myeclipse自動創建出來的)的位置:

在web.xml的根標籤下,直接書寫如下內日。


4、把專案部署到tomcat中,去啟動tomcat。在位址列中輸入資訊,訪問servlet

5.2.2. 訪問servlet

訪問過程分析:



5.2.3. servlet入門小結
1、快速建立一個serlvet。
1、建立一個類,去實現java.servlet.Serlvet 這個介面
2、重寫類中 service方法
3、在web-inf/web.xml 中去配置serlvet一些資訊
<serlvet>
<serlvet-name>
<serlvet-class>
<serlvet>
<serlvet-mapping>
<serlvet-name>
<url-pattern> servlet的訪問路徑
<servlet-mapping>
2、Servlet的訪問過程?

3、Servlet的api在那裡?javaEE的包裡面。
myeclipse在建立web工程的時候會自帶上。
tomcat的lib目錄中也包含了javaEE的包

5.3. servlet生命週期

servlet的生命週期。
什麼時候建立一個servlet。
什麼時候去銷燬一個servlet。



init方法:當伺服器建立一個serlvet的時候,會去呼叫init方法。

       當我們第一次去訪問一個servlet的時候,會去建立這個servlet物件。並且只會建立一次。




如果配置了load-on-startup表示伺服器啟動的時候建立servlet。




service方法:客戶端每一次請求,tomcat都會去呼叫servcie方法。處理使用者的請求。並且給其響應。

                           每一次請求都會呼叫servcie方法。



destroy 方法:當伺服器銷燬一個servlet的時候,會呼叫裡面的destory方法。

                     當我們的web伺服器,正常關閉的時候,會去呼叫destroy方法。

否則不會呼叫destroy的方法。






5.4. 快速建立一個servlet---掌握

知道:1、自己去定義的servlet 只需要繼承HttpServlet 就可以實現servlet的介面了。

2、以後處理使用者的請求,都寫在doGet或者doPost方法中。

掌握:

1、如何藉助工具建立servlet

2、以後書寫的程式碼書寫在使用doGet 或者doPost 中。



步驟:new---servlet






GenericServlet 實現了。servlet的介面。

所以安裝工具類建立的servlet,也是實現了servlet的介面

GenericServlet 已經對一些servlet中定義方法進行了實現。

HttpServlet 是GenericServlet的子類。針對http協議的 包含了一些協議相關的內容的servlet。

我們在通過工具去建立的servlet中,要重寫的方法是doGet,doPost . ( post,get提交資料的方式,是http協議中的。)

獲取http請求的方式。post 和get



因為httpServlet中, service方法回去呼叫doGet或者doPost. 可以根據不同的請求方法,進行不同的處理。



1.1. 去除servlet模板:
找到myeclipse的按裝路徑,common搜plugins下面的com.genuitec.eclipse.wizards,用解壓工具開啟找到templates/servlet.java

1.2. url-pattern三種配置

url-pattern 配置servlet的訪問路徑。

1、完全路徑匹配,以”/”開頭 後面是具體的路徑資訊。
你輸入什麼內容。訪問的時候,就需要輸入什麼內容,才可以找到對應的servlet
例如
<url-pattern>/hello</url-pattern>

在訪問的時候 http://ip:埠/應用名/hello 才可以找到hello的servlet
2、目錄匹配,以/*結尾
例如 /abc/* ---這這個url-patten 對應的servlet
在訪問的時候只有/abc/xx /abc/dd /abc/cc
http://ip:埠/abc/abx
http://ip:埠/abc/bdsf
/abc/ssss
/abc/fdsafd/asdf/asdf


3、副檔名匹配 *.副檔名
*.do
*.action
當訪問的時候 輸入a.do b.do
/ddd/asdf/a.do


訪問的時候aa.do
/abc/a.do

在url進行匹配的時候,會尋找更具體的進行匹配

5.7. web中的資源路徑

告訴大家:如何去訪問一個web中的資源。

web資源路徑訪問的問題;

1、部署工程檔案的位置
WebRoot 下所有資源全部發布到伺服器webapps 目錄應用名下 所有靜態頁面放在WebRoot 下或者 WebRoot 子目錄

專案部署的時候,會把工程中的WebRoot這個資料夾拷貝到tomcat的webapps目錄下。把WebRoot資料夾的名字修改成專案的目錄名字;

考慮問題:
在webroot外面去建立了一個html a.html

此時a.html 不能被訪問的。 因為專案部署的時候,至部署了。webRoot 裡面的內容。

以後我們把html檔案,css。js都放到webRoot 下


在瀏覽器中,如何去訪問一個html內容。

http://localhost:8080/day09/直接書寫html檔案的路徑,相對與WEBROOT這個資料夾路徑
例如b.html 和c.html的訪問路徑可以是:
http://localhost:8080/day09/b.html
http://localhost:8080/day09/html/c.html



關於servlet 。在web.xml中進行配置servlet路徑 url-pattern . 相當於servlet的訪問路徑
之前的內容:http://localhost:8080/day09/url-pattern
例如我們在web.xml中配置了

訪問的時候,可以書寫:http://localhost:8080/day09/login

2:  原始碼 servlet 全部在src  ---> 對映 WEB-INF /classes 目錄下!!

src存放的java原始檔。

把java檔案進行編譯,編譯好的classes放到到WEB-INF/classes。

專案中的資源訪問的路徑的問題

瀏覽器輸入什麼樣的路徑資訊,才可以找到對應的資源。


5.7.1. 如果有一個表單。表單的內容提交到servlet中,怎麼去書寫路徑
在html的頁面 。書寫 / 表示的內容 http://localhost:8080


相對路徑的寫法

hello  統一個資料夾下

./hello  統一個資料夾下

 ../  表示上一層目錄

使用相對路徑的時候,需要進行路徑的比對

例如在

那麼在hello.html 這個頁面,可以理解為 hello.html  和 login 在一個路徑下

絕對路徑的寫法


分為伺服器端和客戶端(瀏覽器)

•       Web系統中的相對路徑和絕對路徑

–      絕對路徑:/hello   /myweb/hello

•       伺服器端和客戶端對於/ 的區別

 客戶端 http://localhost:8080

客戶端關於路徑問題的程式設計結論

*.html *.jsp 內都使用絕對路徑

*.css 內部使用相對路徑---- 背景圖片

*.js中使用絕對路徑

 


5.7.4. servletConfig說明

servletConfig 是一個物件。javaee規範中定義的一個物件。要求web伺服器(tomcat),建立一個servlet的同時,也要去建立一個servletConfig物件。還要給servlet去使用。
serlvetConfig 是我們servlet 一些的配置資訊。如果一個servlet 使用的過程中需要一些引數資訊。這些引數資訊,可以配置到servletConfig中。 之後servlet去使用。


serlvetConfig物件使用總結:
1、如果servlet需要一些引數。我們可以在servlet這個標籤內去進行配置(web.xml)


2、tomcat去工作:讀取servlet中init-param這個標籤。把裡面的內容封裝到servletConfig物件中。
3、tomcat去工作,呼叫servlet中init方法。把封裝好的servletConfig物件。傳遞到對應的servlet中。

4、如何去使用:
4.1 需要獲取servletConfig,getServletConfig方法去獲取物件
4.2獲取裡面具體的值。servletConfig.getInitParameter(key);


示例

web.xml



servlet.java


5.7.5. servletContext說明
ServletContext是整個web專案應用程式執行後的代表物件。(代表當前一個專案)可以通過ServletConfig的getServletContext() 的方法得到,然後可以用該物件取得整個應用程式的相關資源或者資訊。

統計一個網站的訪問量:   (多個不同的servlet 都可以進行訪問)

配置全域性的字符集:(所有的serlvet都可以使用)





ServletConfig:一個servlet被例項化後,對任何客戶端在任何時候訪問有效,但僅對本servlet
有效,一個servlet的ServletConfig物件不能被另一個servlet訪問。
ServletContext:對任何servlet,任何人在任何時間都有效,等於是全域性的物件。



相關推薦

servlet學習日誌01

javaweb web開發是基於請求和響應的: 請求:瀏覽器(客戶端)向伺服器傳送資訊 響應:伺服器向瀏覽器回送資訊 請求和響應是成對出現的。web資源分類 所謂web資源即放在Internet網上供外界訪問的檔案或程式,又根據它們呈現的效果及原理不同,將它們劃分為靜態資

html5學習日誌01

html5 W3C標準 W3C World Wide Web Consortium(全球資訊網聯盟) 成立於1994年,Web技術領域最權威和具影響力的國際中立性技術標準機構 http://www.w3.org/ http://www.chinaw3c.org/ W3

圖形學程式設計學習日誌01

1.obj檔案的讀取 #include<sstream> #include <string> #include <stdio.h> #include <stdlib.h> #include <math.h> #i

蘇嵌學習日誌01

姓名:高翔 日期:2018.9.3 今日學習任務:安裝實訓環境,學習c語言中指標陣列等概念。 今日任務完成情況:今日任務較少,程式碼量較小,主要為老師例程執行,瞭解指標概念 e.g. : #include<stdio.h> #inclu

Java學習日誌01

基本概念: 基本的Java術語 JRE :java執行環境 J2SE:java2標準環境 J2ME:java2手機開發環境 J2EE:java2企業級開發環境 JVM:java虛擬機器 3年以上工作經驗,有至少1個大型專案經驗,精通JSP,Servlet,JNDI,EJB

Egret白鷺引擎學習日誌01

1.簡介 egret是一個開源免費的遊戲框架,它使用TypeScript指令碼語言進行開發; 2.下載安裝包 下載完成後根據提示進行安裝​ 根據自己需求進行安裝相應版本 3.下載工具 根據需求下載相應工具,我學習開始下載的工具也就是圖下已安裝的工具

2018/10/01學習日誌

1, 運算子, 運算子的優先順序, 邏輯運算子, 條件運算子,條件表示式, ++,--操作符,  位運算,  2, 基本把第三章內容看懂了,  3 部分運算子優先順

Oracle OCP 官方PPT學習日誌 使用 SQL SELECT 語句檢索資料 01

連線運算子,|| 注:也可以將日期表示式連線到其他表示式或列。 文字字串 SELECT last_name ||' is a '||job_id AS "Employee Details" FROM employees; &nbs

Oracle OCP 官方PPT學習日誌 使用 SQL SELECT 語句檢索數據 01

bubuko 示例 檢索 size 方括號 ora clas sel 但是 連接運算符,|| 註:也可以將日期表達式連接到其他表達式或列。 文字字符串 SELECT last_name ||‘ is a ‘||job_id AS "Employ

5月3日上午學習日誌

能力 程序 系統調用 logs 學習日誌 執行 shel 管理軟件 -1 2017年5月3日上午把昨天記憶的英語單詞的多種詞意用自己組句的方法聯系起來再記憶一遍,然後再學10個考研高頻詞匯,完成英語app的打卡和看通信工程視頻。今天基本上完成了通信工程教學視頻中對操作系統組

5月4日上午學習日誌

聯系 昨天 單詞 學習 mage blog 方法 img 高頻 2017年5月4日上午把昨天記憶的英語單詞的多種詞意用自己組句的方法聯系起來再記憶一遍,然後再學10個考研高頻詞匯,完成英語app的打卡。5月4日上午學習日誌

5月5日下午學習日誌

時間 執行 lock times logs ges lin time 設備文件 5月5日下午學了通信原理教材和通信工程視頻。學習了通信工程操作系統文件長格式中,普通文件的格式,這部分講了包括 d.目錄文件 b.塊設備文件(block) c.字符設備文件(character)

5月9日下午學習日誌

內部 使用 執行文件 shell 空間 log 命令類型 err alt 下午學了張宇數學18講教材第五講和通信工程視頻,通過看通信工程視頻,學習的是Linux 系統的命令類型和環境變量 命令類型:內置命令(shell內置)內部,內建 外部命令:在文件系統的某個路徑下有一個

.Net語言 APP開發平臺——Smobiler學習日誌:在手機應用開發中如何實現跳轉地圖

demo hand 操作 窗體 clas com ps1 ati void 一、目標樣式 我們要實現上圖中的效果,需要如下的操作: 二、跳轉地圖代碼 VB: Private Sub Button1_Click(sender As Object, e As Ev

python基礎學習日誌day5---random模塊

+= python pre 隨機生成 int 1.0 clas Coding for python使用random生成隨機數 下面是主要函數random.random()用於生成一個0到1的隨機符點數: 0 <= n < 1.0random.randint(a,

python基礎學習日誌day5---os模塊

隱藏 dirname 運維 isa 工作 打印 rmdir 空值 如何 python os模塊提供對操作系統進行調用的接口。 # -*- coding:utf-8 -*-__author__ = ‘shisanjun‘import osprint(os.getcwd())#

python基礎學習日誌day5---logging模塊

取值 ive expect wid order out 程序 正常的 pen 很多程序都有記錄日誌的需求,並且日誌中包含的信息即有正常的程序訪問日誌,還可能有錯誤、警告等信息輸出,python的logging模塊提供了標準的日誌接口,你可以通過它存儲各種格式的日誌,logg

servlet學習筆記

consola for 相對 實用代碼 log out image 例如 true Servlet學習 一、Servlet基礎 什麽是Servlet? Servlet是在服務器端運行的小程序。 Tomcat容器等級 Servlet編寫 1

python基礎學習日誌day6-類的繼承

del pytho roo ict sel self eache 但是 n) 繼承:承創建的新類稱為“子類”或“派生類”,被繼承的類稱為“基類”、“父類.     繼承的過程,就是從一般到特殊的過程.要實現繼承,可以通過“繼承”(Inheritance)和“組合”(Co

python基礎學習日誌day6-類的經典類vs新式類

blog 學習 obj 父類 day6 廣度 auth () Coding 經典類VS新式類區別1)寫法新式類class Person(object):#new style 經典類class Persion: #classical style 2)調用父類 新式寫法用s