Servlet之簡單介紹

什麼是servlet
Servlet技術是在java ee出現之前就存在了,在開發動態網頁中,得到廣泛的應用,直到現在的Java ee 項目中也是非常重要
的,同時jsp也是在servlet的基礎上發展起來的。因此,掌握好servlet太重要了。
Servlet(java服務器小程序)是用java編寫的服務器程序,它的特點:
他是由服務器調用和執行的(運行在服務器端上)
他是用java語言編寫的額,servlet就是一個java程序(java類)
他是按照Servlet規範開發的(該程序要遵循servlet開發規範)
功能強大,可以完成幾乎所有的網站功能
是學習jsp的基礎

Servlet的快速入門案例
概述:開發servlet有三種方法
實現Servlet接口
通過繼承GenericServlet
通過繼承HttpServlet
需求如下:請實現接口的方式,來開發一個Servlet要求顯示Hello world,同時顯示當前時間
建立web應用cyhweb1
在cyhweb1下建立WEB-INF/web.xl[web.xml可以從ROOT/WEB-INF/web.xml拷貝]
在cyhweb1建立class目錄(我們的Servlet就要在該目錄開發),建立lib文件夾
開發MyFirstservlet.java

<?xml version="1.0" encoding="ISO-8859-1"?>

<servlet>
<!--是將來訪問該Servlet的資源名,該名字可以自己定義,默認就使用該Servlet -->
  <servlet-name>MyFirstServlet</servlet-name>
<!--Servlet-class要指明該Servlet放在哪個包下的形式是包/包/../類-->
  <servlet-class>com.cyh.MyFirstServlet</servlet-class>
</servlet>
<!--Servlet的映射-->
MyFirstServlet /ABC 6.在瀏覽器中輸入 http://localhost:9080/cyhweb1/ABC 7.可能出現的錯誤 (1) MyFirstServlet名字不一樣(啓動tomcat錯誤) (2) com.cyh.MyFirstServlet.java寫成MyFirstServlet.java會報告500 (3)資源名自己寫錯 http://localhost:9080/cyhweb1/錯誤的資源url-pattern 404錯誤

補充:如果使用javac去編譯一個java文件,則需要帶命令參數 java -d .java文件

Servlet生命週期
Servlet程序是有WEB服務器調用,WEB服務器收到客戶端的Servlet訪問請求後:
WEB服務器首先檢查是否已經裝載並創建了該Servlet的實例對象。如果是,則直接執行第4步,否則,執行第2步
裝載並創建該Servlet的一個實例對象
調用Servlet實例對象的init()方法
創建一個用於封裝HTTP請求消息的HttpServletRequest對象和一個代表HTTP響應消息的HttpServletResponse對象,
然後調用Servlet的service()方法並將請求和響應對象作爲參數傳遞過去
5.WEB應用程序被停止或重新啓動之前,Servlet引擎將卸載Servlet,並在卸載之前調用Servlet的destory()方法
以下情況會導致destory()方法調用
a:tomcat重新啓動 b:reload該webapp c:重新啓動電腦

GenericServlet接口,瞭解即可
public class MyGenericServlet extends GenericServlet
{
public void service(ServletRequest req,
ServletResponse res)
throws ServletException,
java.io.IOException
{ res.setContentType(“text/html;charset=utf-8”);
res.getWriter().println(“hello world,北京你好”);
}
}

使用繼承HttpServlet的方法來開發Servlet
在軟件公司,90%都是通過該方法開發
舉例說明:
package com.cyh;
import javax.servlet.;
import javax.servlet.http.
;
import java.io.*;
public class MyHttpServlet extends HttpServlet
{
protected void doGet(HttpServletRequest req,
HttpServletResponse resp)
throws ServletException,
java.io.IOException
{
resp.getWriter().println(“i am httpServlet doGet()”);

				 }
				  
protected void doPost(HttpServletRequest req,
                  HttpServletResponse resp)
           throws ServletException,
                  java.io.IOException
				 {
				 resp.getWriter().println("i am httpServlet doPost()	           

                                     postname="+req.getParameter("username"));
					 
				 }

}
還有login.html

u:

表單提交數據get請求和post請求的區別
從安全性看get<post get提交的數據會在瀏覽器的地址欄顯示
從提交內容帶下看get<post get 提交的數據不能大於2k,而post提交的數據理論上不受限制,但是實際編程中建議不要大於64k
從請求響應速度看:get>post,get要求服務器立即處理請求,而post請求可能形成一個隊列請求

Servlet實現類
Servlet接口SUN公司定義了兩個兩個默認實現類:分別爲:
GenericServlet、HttpServlet(建議使用)
HttpServlet指能夠處理Http請求的Servlet,它在原有Servlet接口上添加了一些與Http協議處理方法,它比Servlet接口的功能更爲強大。因此開發人員在編寫Servlet時,通常應繼承這個類,而避免直接去實現Servlet接口
HttpServlet在實現Servlet接口時,覆寫了Service方法,該方法體內的代碼會自動判斷用戶的請求方式,如爲GET請求,則調用HttpServlet的doGet方法,如爲Post請求,則調用doPost方法。因此,開發人員在編寫Servlet時,通常只需要覆寫doGet或doPost方法,而不要去覆寫service方法

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章