Servlet學習大綱:
Tomcat服務器中運行的是處理瀏覽器請求的代碼。
實現技術:
Servlet
學習內容:
第一個Servlet程序
myEclipse集成Tomcat
Servlet的運行原理
web.xml講解
Servlet的生命週期
Http協議
Request對象
Response對象
中文亂碼問題解決
請求轉發和重定向
Cookie和Session
ServletConfig和ServletContext對象
瀏覽器和服務器交互模式(B/S)
前端知識:
使用HTML文檔將數據進行有效的組織起來,然後使用css和js以及jQuery讓文檔可以更加的美觀並和
用戶之間可以進行交互。
問題:
問題1:
在本地編寫好HTML文檔後,使用瀏覽器直接打開。並且在編寫時,HTML文檔的數據是直接寫死的。無法動態的變更。
如果要改變數據,必須修改HTML源碼
要求:
HTML文檔應該存儲在運行商的電腦中。HTML的中的數據需要動態的更新。
解決:
使用瀏覽器和服務器交互模式(B/S模式)
特點:
URL:統一資源定位符
HTTP:超文本傳輸協議
HTML:超文本標記語言。
使用:
主流服務器:tomcat服務器。 web service等
開發工具:
myEclipse
jdk版本:
1.7版本
數據庫:
第一個Servlet程序
工具準備:
第一個Servlet程序:
1 安裝myeclipse開發工具
2 安裝Tomcat服務器
驗證安裝:
雙加bin目錄下的startup.bat文件,如果命令窗口正常顯示則沒有問題
閃退問題解決:
https://jingyan.baidu.com/article/9f7e7ec0be98b56f281554e9.html
3 創建並運行第一個servlet程序
1 在myeclipse中創建web project
注意:選擇級j2EE5.0 jdk版本選擇1.7
2 在src下創建包com.bjsxt.servlet
在包下創建一個繼承了HttpServlet的java類
覆寫service方法
清空service方法中的內容。
寫:
//告訴瀏覽器響應的內容格式
resp.setContentType("text/html");
//輸出到瀏覽器
resp.getWriter().write("<u>this is my first servlet.</u>");
//輸出到控制檯
System.out.println("這是我的第一個Servlet程序");
3 在webRoot下的web-inf文件夾下的web.xml中配置servlet
<!-- 配置Servlet -->
<!-- 配置servlet路徑 -->
<servlet>
<servlet-name>first</servlet-name>
<servlet-class>com.bjsxt.servlet.MyServlet</servlet-class>
</servlet>
<!--配置Servlet的訪問路徑-->
<servlet-mapping>
<servlet-name>first</servlet-name>
<url-pattern>/f</url-pattern>
</servlet-mapping>
4 在Tomcat的webapps目錄下創建一個文件夾,名字爲myFirst
將myeclipse工作空間中剛纔創建的項目的webRoot目錄先的東西全部複製到此文件夾中
5 啓動tomcat服務器
6 在瀏覽器中輸入:http://localhost:8080/myFirst/f 訪問即
------
知識點:
知識點:
1 web poject目錄結構介紹
src: 存儲java源代碼的位置
src和webRoot之間: 項目相關的jar包
webRoot: 存儲靜態資源和jsp文件
WEB-INF: 存儲項目的編譯文件和jar包的文件夾 以及web.xml配置文件
lib文件夾: 存儲項目導入的jar包的位置,例如 :jabc.jar包
2 tomcat目錄結構介紹:
bin目錄: tomcat服務器的程序入口 startup.bat
conf目錄: 存錯了tomcat服務器啓動所需的配置信息
主要的 server.xml和web.xml
lib目錄: tomcat自帶的開發先關的jar包
logs目錄: 存儲的是tomcat服務器運行期間相關的日誌信息
temp目錄: 緩存目錄
webapps目錄: 存儲了tomcat服務器運行的web項目
work目錄: 存儲的是jsp的編譯文件
3 tomcat和瀏覽器的交互流程:
http://localhost:8080/a/f
localhost: 服務器所在的電腦的ip地址,如果服務器和瀏覽器在同一臺電腦寫localhost即可。
8080: tomcat服務器的端口號
a: 告訴服務器要請求的web項目。服務器會在webapps目錄下查找一個叫“a”的文件夾或者壓縮包(.war)
如果找到了則繼續執行,如果未找到則直接返回404給瀏覽器----(虛擬項目名)
f: 要執行的servlet的別名。tomcat服務器會根據此別名查找項目下的web.xml文件。然後執行f映射的servlet文件。
注意:
提升安全級別。方便程序員使用。
注意:
IP+端口號可以在網絡中唯一的定位一個應用程序。但是因爲難於記憶,所以
使用網址的形式提供給普通用戶。
注意2:
服務器開啓後不要關閉。
總結:
最簡單的servlet開發流程
第一步
創建一個繼承了HttpServlet的java類,並覆寫service方法。
在service方法中書寫業務處理代碼
第二步:
在web.xml中配置servlet
第三步:
將寫好的項目webRoot下的內容複製到tomcat下的webapps下的虛擬項目中
第四步:
啓動服務器,訪問即可。
url格式:IP:端口號/虛擬項目名/servlet別名?請求數據
myeclipse集成tomcat
Myeclipse集成Tomcat:
1. myEclipse集成Tomcat
https://jingyan.baidu.com/article/2a13832898c497074a134fdc.html
2.myEclipese項目部署(冷部署)
https://jingyan.baidu.com/article/a65957f4894faf24e67f9bbe.html
注意:
選擇的項目部署到服務器成功後,默認在tomcat的webapps目錄下
新建文件夾的名字爲myeclipse的項目名
注意2:
在myeclipse中保存代碼的時候會重新編譯並重新複製到tomcat中
3發佈
在myeclipse的servers窗口中選擇集成好的tomcat然後點擊啓動按鈕即可。
注意:
如果servlet文件發生了更改,需要重新啓動tomcat服務器才能看到效果。
tomcat真正執行的servlet文件是從虛擬項目中加載到內存中的文件。
4 自定義部署項目名:
選中要部署的項目單擊右鍵選擇properties--->myEclipse-->project Facts-->web-->更改 web-Root的內容(注意保留/)
然後部署項目即可。
Sevlet的web.xml配置學習
Servlet的web.xml配置文件學習:
web.xml文件的作用:
tomcat會調用此文件用來進行查找要執行的Servlet。
使用:
第一種配置方式:
<servlet>
<servlet-name>my</servlet-name>
<servlet-class>com.bjsxt.servlet.MyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>my</servlet-name>
<url-pattern>/m</url-pattern>
</servlet-mapping>
作用:給servlet配置一個專門的別名,不能通用,訪問此servlet必須通過此別名。
第二種配置方式:
<servlet>
<servlet-name>my2</servlet-name>
<servlet-class>com.bjsxt.servlet.MyServlet2</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>my2</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
作用:給servlet配置一個通配性較高的servlet,格式 *.do
第三種配置方式:
<servlet>
<servlet-name>my3</servlet-name>
<servlet-class>com.bjsxt.servlet.MyServlet3</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>my3</servlet-name>
<url-pattern>/a/*</url-pattern>
</servlet-mapping>
作用:給servlet配置一個按照模塊訪問的url-pattern
web.xml的加載時機:
服務器啓動的時候即完成所有部署的項目的web.xml的加載。
注意:
1. url-pattern不可以重複,一個url-pattern只能對應一個servlet。
否則服務器啓動報錯:Caused by: java.lang.IllegalArgumentException: The servlets named [my] and [my2] are both mapped to the url-pattern [/m] which is not permitted
2 一個Servlet可以對象好幾個url-pattern
Servlet的生命週期
Servlet的生命週期:
1 複寫init()方法:
init()方法只會被執行一次,Servlet第一次被調用的時候執行
先於service()方法執行
2 複寫destory()方法:
此方法在服務器關閉的時候會執行,說明Servlet是服務器關閉的時候才被銷燬的。
Servlet的生命週期1:
從第一次調用到服務器關閉。
Servlet的生命週期2:
如果在web.xml中配置了<load-on-startup>1</load-on-startup>,生命週期從服務器開啓到服務器關閉
小結
瀏覽器和服務器交互模式
第一個Servlet程序
myeclipse集成tomcat
Sevlet的web.xml配置學習
Servlet的生命週期
小知識點:
servlet tomcat
1.tomcat:
Tomcat 服務器是一個免費的開放源代碼的Web 應用服務器,屬於輕量級應用服務器,在中小型系統和併發訪問用戶不是很多的場合下被普遍使用,是開發和調試JSP 程序的首選。
2.從servlet開始,使用myeclipse2014 tomcat MySQL navicat
3.使用Jdk1.7
4.myeclipse->project->clean…到底有什麼用:
其實主要作用就是把編譯好的class等文件刪除,激活eclipse的自動編譯。
解決的問題就是,有時候你把代碼改了,但因爲一些未知的原因,eclipse的自動編譯沒有成功,導致運行結果不正常。
當你的工程出現一些莫名其妙的錯誤時(當然不是語法錯誤),用一下這個功能,效果不錯的
5.因爲安裝了oracle XE 版本,其中有一個服務佔用了8080端口,所以把OracleServiceXE、OracleXETNSListener服務禁用並關閉,若用oracle 11g 企業版 就不會出現這個問題。
6.xml是處理虛擬目錄的別名和真正的包的全限定路徑之間的映射關係。讓自己的web項目安全
7、 //告訴瀏覽器響應的內容格式
res.setContentType("text/html;charset=utf-8");
8、servlet:
Servlet(Server Applet)是Java Servlet的簡稱,稱爲小服務程序或服務連接器,用Java編寫的服務器端程序,主要功能在於交互式地瀏覽和修改數據,生成動態Web內容。
狹義的Servlet是指Java語言實現的一個接口,廣義的Servlet是指任何實現了這個Servlet接口的類,一般情況下,人們將Servlet理解爲後者。Servlet運行於支持Java的應用服務器中。從原理上講,Servlet可以響應任何類型的請求,但絕大多數情況下Servlet只用來擴展基於HTTP協議的Web服務器。
Servlet 的命名可以看出 sun 命名的特點,如 Applet 表示小應用程序;Scriptlet = Script + Applet,表示小腳本程序;同樣 Servlet = Service + Applet,表示小服務程序。
9、靜態網頁與動態網頁:
所謂的動態網頁,是指跟靜態網頁相對的一種網頁編程技術。靜態網頁,隨着html代碼的生成,頁面的內容和顯示效果就基本上不會發生變化了——除非你修改頁面代碼。而動態網頁則不然,頁面代碼雖然沒有變,但是顯示的內容卻是可以隨着時間、環境或者數據庫操作的結果而發生改變的。