Servlet編程需要用到很多類和接口,下面介紹幾個簡單的類和接口:
一、Servlet 接口
- (1)Servlet 接口:Java Servlet 是運行在 Web 服務器或應用服務器上的程序,它是作爲來自 Web 瀏覽器或其他 HTTP 客戶端的請求和 HTTP 服務器上的數據庫或應用程序之間的中間層。
- (2)servlet中的幾個方法:
- void destroy() 方法:當servlet 將要卸載時,由servlet 引擎調用。
- ServletConfig getServletConfig() 方法:返回傳遞到servlet的 init()方法的ServletConfig 對象。
- String getServletInfo() 方法:返回描述servlet的一個字符串。
- void init(ServletConfig config) throws ServletException 方法:在servlet 被載入後和實施服務前由servlet 引擎進行一次性調用。
- service(ServletRequest req, ServletResponse resp) throws ServletException, IOException 方法:處理request 對象中描述的請求,使response 對象返回請求結果。
- 實現如下:
import java.io.IOException;
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class LoginServlet implements Servlet {
@Override
public void destroy() {
// TODO Auto-generated method stub
}
@Override
public ServletConfig getServletConfig() {
// TODO Auto-generated method stub
return null;
}
@Override
public String getServletInfo() {
// TODO Auto-generated method stub
return null;
}
@Override
public void init(ServletConfig config) throws ServletException {
// TODO Auto-generated method stub
}
@Override
public void service(ServletRequest req, ServletResponse resp) throws ServletException, IOException {
// TODO Auto-generated method stub
}
}
二、GenericServlet 類
-
(1)GenericServlet 類:GenericServlet是Servlet接口的實現類,我們可以通過繼承GenericServlet來編寫自己的Servlet。GenericServlet提供除了service()方法外所有接口中方法的缺省實現。
-
(2)實現如下:繼承GenericServlet實現servlet,也就是說,繼承GenericServlet可以實現servlet 的功能。
public class MyGenericServlet extends GenericServlet{
@Override
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
res.setContentType("text/html;charset=UTF-8");
res.getWriter().print("你好,"+new Random().nextInt(100));
res.getWriter().print("<hr/>");
//直接調用獲取servletconfig就可以了
res.getWriter().print("此類在web.xml中配置的名稱爲 :"+getServletConfig().getServletName());
}
}
三、HttpServlet 類
- (1)HttpServlet 類:是servlet更一般的操作,常用的方法有doGet() 方法,doPost()方法。
- (2)兩個方法:doGet() 方法, doPost()方法。
- doGet() 方法:由Servlet 引擎處理一個HTTP GET 請求,輸入參數,HTTP 頭標和輸入流可從 request對象 ,response 對象 和頭標 的輸出流獲取。
- doPost()方法:由Servlet 引擎處理一個HTTP POST請求,輸入參數,HTTP 頭標和輸入流可從 request對象 ,response 對象 和頭標 的輸出流獲取。
- 實現如下:
package com.servlet;
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.dao.AuthorDao;
import com.entity.Author;
/**
* Servlet implementation class AuthorServlet
*/
@WebServlet("/AuthorServlet")
public class AuthorServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public AuthorServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
@SuppressWarnings("unused")
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doPost(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
四、ServletRequest 類
- (1)ServletReques : 封裝了客戶端請求的細節,它與協議無關,並有一個指定的HTTP 的子接口。主要適用於找到客戶端的主機名和IP地址、檢索請求參數、取得和設置屬性和取得輸入和輸出流的功能。
- (2)集中常用的方法:
- String setCharacterEncoding() 方法: 設置字符編碼。
- String getParameter(String name ) 方法:返回指定輸入參數,如果不存在,返回NULL。
- Object setAttribute(String name) 方法:返回具有指定名字的請求屬性,如果不存在返回NULL。
- 實現如下:
request.setAttribute("pageBean", pb);
request.setCharacterEncoding("utf-8");
五、ServletResponse 類
- (1)ServletResponse :將一個servlet生成的結果傳到發送請求的客戶端,它由servlet引擎創建。
- (2)集中常用的方法:
- getWriter():返回 PrintWriter 對象。調用該對象的 print() 方法,將把 print() 中的參數直接打印到客戶的瀏覽器上。
- setContentType(String type):設置響應的內容類型。
- 具體實現:
ublic void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
PrintWriter out = res.getWriter();
out.print("Hello!");
}
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
res.setContentType("application/msword"); //返回一個Word文檔類型
PrintWriter out = res.getWriter();
out.print("Hello!");
}
六、HttpServletRequest 接口
- (1)HttpServletRequest :讀取和寫入HTTP頭標,取得和設置cookies,取得路徑信息和標識HTTP會話。
- (2)幾種常用的方法:
- getContextPath()方法:返回請求地址的根目錄,以"/“開關,但不是以”/"結尾
- getServletPath() 方法:返回請求URI上下文的子串。
- getMethod()方法 :返回HTTP請求方法。
七、HttpServletResponse 接口
- (1)HttpServletResponse :加入表示狀態碼,狀態信息,和響應頭標的表示方法,它還負責對URL 中寫入----web頁面的HTTP會話ID進行解碼。
- (2)幾種常用的方法:
- void addCookie (Cookie cookie) 方法:將一個set-Cookie頭標加入響應。
- sendRedirect(“useradd.jsp”) 方法: 頁面重定向。
八、ServletContext 接口
- (1) ServletContext:是一塊所有客戶都可以訪問的共享的服務器端空間,和Session類似,就是名字和值。
- (2)幾種常用的方法:
- String getRealPath();
- String getInitParameter(String var1);
- Enumeration getInitParameterNames();
- Object getAttribute(String var1); 向ServletContext 獲取數據
- void setAttribute(String var1, Object var2);向ServletContext 添加數據
- void removeAttribute(String var1); 向ServletContext 刪除數據