Servlet
Servlet是一個Java程序,是在服務(wù)器上運行以處理客戶端請求并做出響應(yīng)的程序丙曙。
初識Servlet
-
步驟1:導(dǎo)入所需的包爸业、處理請求的方法、將數(shù)據(jù)發(fā)送給客戶端
import java.io.*; import javax.servlet.*; import javax.servlet.http.*; //繼承HttpServlet類 public class HelloServletTest extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); out.println("<html>"); out.println(" <head><title>Servlet</title></head>"); out.println(" <body>"); out.println("你好亏镰,歡迎來到Servlet世界"); out.println(" </body>"); out.println("</html>"); out.close(); } }
-
步驟2:在web.xml文件中配置Servlet
<web-app> <servlet> <servlet-name> HelloServlet </servlet-name> <servlet-class> com.HelloServlet </servlet-class> </servlet> <servlet-mapping> <servlet-name> HelloServlet </servlet-name> <url-pattern> /HelloServlet </url-pattern> </servlet-mapping> </web-app>
注意:
- <servlet-name標(biāo)簽中的名稱必須相同
- 第一個是設(shè)定當(dāng)前servlet的內(nèi)部名稱(對象名)
- 第二個 通過servlet內(nèi)部名把訪問路徑與Class綁定
- <servlet-class標(biāo)簽中是完整的包名+類名扯旷,指定對應(yīng)servlet內(nèi)部相關(guān)類
- <url-pattern標(biāo)簽中訪問Servlet的URL,用戶訪問servlet時的路徑名索抓,一定要加上” / ”
- <servlet-name標(biāo)簽中的名稱必須相同
servlet的生命周期
- 實例化:Servlet 容器創(chuàng)建 Servlet 的實例
- 初始化 :該容器調(diào)用 init() 方法
- 請求處理:如果請求 Servlet钧忽,則容器調(diào)用 service() 方法
- 服務(wù)終止:銷毀實例之前調(diào)用 destroy() 方法
servlet的相關(guān)類
Servlet 、 ServletConfig ——接口
|
GenericServlet ——抽象類
|
HttpServlet ——抽象類
Servlet接口
- 定義了所有Servlet需要實現(xiàn)的方法
ServletConfig接口
- 在Servlet初始化過程中獲取配置信息
- 一個Servlet只有一個ServletConfig對象
GenericServlet抽象類
- 提供了Servlet與ServletConfig接口的默認(rèn)實現(xiàn)方法
HttpServlet概述
- 繼承于GenericServlet
- 處理HTTP協(xié)議的請求和響應(yīng)
請求逼肯、響應(yīng)相關(guān)接口
請求:
ServletRequest
|
HttpServletRequest
響應(yīng):
ServletResponse
|
HttpServletResponse
說明我們創(chuàng)建Servlet都是繼承自HttpServlet
ServletRequest概述
- 獲取客戶端的請求數(shù)據(jù)
- ServletRequest的常用方法
- public Object getAttribute(String name):獲取名稱為name的屬性值
- public void setAttribute(String name, Object object):在請求中保存名稱為name的屬性
- public void removeAttribute(String name):清除請求中名字為name的屬性
HttpServletRequest概述
- 除了繼承ServletRequest接口中的方法耸黑,還增加了一些用于讀取請求信息的方法
- HttpServletRequest的常用方法
- public String getContextPath():返回請求URI中表示請求上下文的路徑,上下文路徑是請求URI的開始部分
- public Cookie[ ] getCookies():返回客戶端在此次請求中發(fā)送的所有cookie對象
- public HttpSession getSession():返回和此次請求相關(guān)聯(lián)的session篮幢,如果沒有給客戶端分配session大刊,則創(chuàng)建一個新的session
- public String getMethod():返回此次請求所使用的HTTP方法的名字,如GET三椿、POST
ServletResponse概述
- 向客戶端發(fā)送響應(yīng)數(shù)據(jù)
- ServletResponse接口的常用方法
- public PrintWriter getWriter():返回PrintWrite對象缺菌,用于向客戶端發(fā)送文本
- public String getCharacterEncoding():返回在響應(yīng)中發(fā)送的正文所使用的字符編碼
- public void setCharacterEncoding():設(shè)置發(fā)送到客戶端的響應(yīng)的字符編碼
- public void setContentType(String type):設(shè)置發(fā)送到客戶端的響應(yīng)的內(nèi)容類型,此時響應(yīng)的狀態(tài)屬于尚未提交
HttpServletResponse概述
- 除了繼承ServletResponse接口中的方法搜锰,還增加了新的方法
- HttpServletResponse的常用方法
- public void addCookie(Cookie cookie):增加一個cookie到響應(yīng)中伴郁,這個方法可多次調(diào)用,設(shè)置多個cookie
- public void addHeader(String name,String value):將一個名稱為name纽乱,值為value的響應(yīng)報頭添加到響應(yīng)中
- public void sendRedirect(String location):發(fā)送一個臨時的重定向響應(yīng)到客戶端蛾绎,以便客戶端訪問新的URL
- public void encodeURL(String url):使用session ID對用于重定向的URL進行編碼