Servlet是一個用java編寫的應(yīng)用程序,在服務(wù)器上運行,處理請求的信息并將其發(fā)送到客戶端。
Servlet的客戶端提出請求并獲得該請求的響應(yīng)。
對于所有的客戶端請求,只需要創(chuàng)建Servlet的實例一次(這是和CGI(Common Gateway Interface)的重要區(qū)別,CGI是每個請求創(chuàng)建一個新實例),因此節(jié)省了大量的內(nèi)存。
Servlet在初始化后即駐留內(nèi)存中,因此每次作出請求時無需加載。
下面通過一個例子來介紹如何編寫一個簡單的Servlet。
準備工作:
1. 下載并啟動Tomcat(作為Servlet的容器)實例步驟:1. 在Tomcat/webapps下面創(chuàng)建新的folder,helloapp2. 創(chuàng)建helloapp的子文件夾如下helloapp----WEB-INF--------web.xml--------classes--------lib3.在classes下面創(chuàng)建新的java文件,Hello.java4. 引入servlet-api.jar, import javax.servlet.*;5. Servlet的實現(xiàn)有3種方式,下面分開進行介紹(重點)HttpServlet繼承GenericServlet,GenericServlet實現(xiàn)了Servlet。5.1 實現(xiàn)Servlet接口public class Hello implements Servlet{@Overridepublic void init(ServletConfig sc) throws ServletException {//只有第一次被調(diào)用,初始化函數(shù)。System.out.println("initialization...");}@Overridepublic ServletConfig getServletConfig() {return null;}@Overridepublic void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {//每次訪問都被調(diào)用,業(yè)務(wù)邏輯寫在這里。System.out.println("call service");PrintWriter pw = res.getWriter();pw.write("My first web app.");}@Overridepublic String getServletInfo() {return null;}@Overridepublic void destroy() {//最后關(guān)閉時,調(diào)用。System.out.println("destroy...");}}
5.2 繼承GenericServlet
public class Hello2 extends GenericServlet{@Overridepublic void service(ServletRequest sr, ServletResponse sr1) throws ServletException, IOException {//業(yè)務(wù)邏輯,每次訪問都被調(diào)用。System.out.println("Testing....");PrintWriter pw = sr1.getWriter();pw.println("my second web app.");}}
5.3 繼承HttpServlet
public class Hello3 extends HttpServlet{@Overridepublic void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException{System.out.println("do get method...");PrintWriter pw = res.getWriter();pw.println("do get method.");}public void doPost(HttpServletRequest req, HttpServletResponse res) throws IOException{System.out.println("do post method...");PrintWriter pw = res.getWriter();pw.println("do post method.");}}
6. 編譯源文件
7.修改web.xml
<servlet> <servlet-name>Hello</servlet-name>//servlet 名稱,隨便起 <servlet-class>com.test.servlet.Hello</servlet-class>//對應(yīng)的類</servlet><servlet-mapping> <servlet-name>Hello</servlet-name>//servlet名稱,隨便起,但是要與servlet中的名稱一致。 <url-pattern>/h1</url-pattern>//對應(yīng)的,瀏覽器中url。</servlet-mapping>
8.訪問helloapp/h1,可以看到結(jié)果。
|
新聞熱點
疑難解答