手動創建並且部署一個Servlet:
1.寫代碼 extends HttpServlet
public void service(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException{
request.setCharacterEncoding("GBK");
//1.設置響應類型
response.setContentType("text/html;charset=GBK");
//2.獲取輸出流
PrintWriter out = response.getWriter();
//3.使用輸出流
out.println();
out.flush();
}
2.編譯
tomcat安裝目錄/lib/servlet-api.jar
3.部署
1)創建web應用目錄結構
webapps/myweb/
|-WEB-INF(必需)
|-classes
|-web.xml
|-form.html
2)編譯後的pag.DateServlet.class copy myweb/WEB-INF/classes
3)編寫web.xml (DateServlet)
<servlet>
<servlet-name>date</servlet-name>
<servlet-class>pag.DateServlet</servlet-class>
</servlet>
<servlet-mapping>
<serlvet-name>date</servlet-name>
<url-pattern>/mydate</url-pattern>
</servlet-mapping>
4.運行
http://127.0.0.1:8888/myweb/mydate
<a href="/myweb/mydate">....</a>
<form action="/myweb/mydate">....</form>
獲取表單元素中輸入的內容:
String str = request.getParameter("文本框的名字");
--------------------------------------
一、使用MyEclipse簡化Servlet 開發
1.右鍵創建web project
2.Project Name:項目名稱
Source folder:存在java源碼
Web root folder:本地開發路徑
Context root URL:服務器上的web應用名(http://127.0.0.1:8888/項目名/)
3.創建servlet(選擇自動生成web.xml)
4.部署(配置tomcat,把自己安裝tomcat和MyEclipse整合到一起)
配置tomcat的步驟:window-preferences-展開MyEclipse-展開servers-展開tomcat-選擇tomcat6-選中Enable並且選擇tomcat的安裝路徑
****注意:部署新項目後,需要重啓Tomcat****
5.運行
http://127.0.0.1:8888/servlet2/hello
http://127.0.0.1:8888/testservlet/servlet/FirstServlet
URL的組成:
協議://主機名ip:端口號/資源
協議://主機名ip:端口號/web應用/url-pattern
協議://主機名ip:端口號/web應用/first.html
二、Servlet的生命週期
1)client --> server 請求發出後的一系列執行過程:
1.寫URL,回車
2.tomcat接收請求,解析URL,得到 web應用名(web.xml)
3.繼續解析URL,得到 url-pattern
4.在web.xml 匹配 url-pattern, 得到 servlet-name
5.根據 servlet-name 匹配到 servlet-class
6.tomcat 判斷 client 是第一次請求
是- 使用JAVA反射機制創建servlet對象(構造方法),初始化(init),處理第1次請求(service)並且給client響應
否- 處理本次請求(service)並且給client響應
7.tomcat 等待狀態,如果有client請求,從第2步循環
8.tomcat 停止或重啓時,銷燬 servlet(destroy方法被調用.回覆servlet對象資源)
2)tomcat 中 servlet生命週期,分爲4個階段:
被調用的時間 被調的方法 被調次數
實例化 client第一次請求 構造方法 1次
初始化 第1次請求,實例化後 init 1
服務 有請求到 service N次
doGet/doPost
銷燬 server停,重啓 destroy 1
3)讀取web.xml
1.在tomcat啓動時,會依次加載webapps下所有web應用的web.xml,
同時web.xml的內容讀到 ServletContext 對象(ServletContext是web.xml文件在內存中的表現)
一個web應用對應一個ServletContext.
2.每讀到一個<servlet></servlet>,tomcat會把這個標籤中的內容存到 ServletConfig對象中
應用:
ServletContext: 獲取<context-param>中定義的全局初始化參數
web.xml中的配置(在<serlvet>標籤的外面定義):
<context-param>
<param-name>encode</param-name>
<param-value>GBK</param-value>
</context-param>
獲取值:
String str = this.getServletContext().getInitParameter("參數名");
ServletConfig: 獲取<init-param>中定義的初始化參數
web.xml中的配置(在<serlvet>標籤的裏面定義):
<servlet>
<servlet-name>CountServlet</servlet-name>
<servlet-class>com.zpark.servlet.CountServlet</servlet-class>
<init-param>
<param-name>count</param-name>
<param-value>1000</param-value>
</init-param>
</servlet>
獲取值:
String str = this.getServletConfig().getInitParameter("參數名");
4)servlet的多線程訪問
注意:servlet編程時,因爲tomcat運行過程中,只創建一個servlet對象,需要同時爲多個client服務,就需要考慮線程安全問題
1.對敏感代碼加線程鎖
2.儘量不定義成員變量
三、Servlet的通訊[掌握]
Servlet:JAVA編寫的在服務器上運行的小程序/類.接收client請求,處理,響應.
1.include:包含
應用場景:在複雜動態網頁中,有公共部分可提取,可以把公共部分分別定義成servlet,使用include合併到一起.
使用: //獲取請求分發對象
RequestDispatcher rd = request.getRequestDispatcher("/url-pattern");
//include
rd.include(request, response);
特點: 1)地址欄不變
2)服務器端的轉發(在服務端運行)
3)看到的是所有servlet的結果之和
4)共享同一個request
2.forward:轉發
應用場景: 一個Servlt從數據庫中取出數據,轉到另外一個servlet進行顯示
使用: //獲取請求分發對象
RequestDispatcher rd = request.getRequestDispatcher("/url-pattern");
//forward
rd.forward(request, response);
特點: 1)地址欄不變
2)服務器端的轉發(在服務端運行)
3)永久轉向(看到的是最後一個servlet的處理結果)
4)共享同一個request
Servlet知識點<二>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
servlet知識點<五>
qq_875174369
2018-08-27 19:38:49
Servlet知識點<一>
qq_875174369
2018-08-27 19:38:47
servlet知識點<六>
qq_875174369
2018-08-27 19:38:45
servlet知識點<三>
qq_875174369
2018-08-27 19:38:45
HttpServlet詳解
whc20011
2018-08-27 17:19:04
HttpServlletResponse簡介
zijindongnan
2018-08-27 17:11:53
Servlet學習筆記
zijindongnan
2018-08-27 17:11:52
HttpServletRequest簡介
zijindongnan
2018-08-27 17:11:50
servlet gzip 中文亂碼
smst1987
2018-08-27 17:03:41
Textarea插入表格table,保存到數據庫。jsp頁面顯示錶格問題
阳光宅男
2018-08-27 14:58:43
Java的Web項目中Web.xml配置文件元素詳解
小尘鸟8
2018-08-27 13:38:53
Servlet 原理概述
小尘鸟8
2018-08-27 13:38:53
Cookie與Session的特點及生命週期
WDianJ
2018-08-27 11:28:18