[Spring MVC]學習筆記--基礎Servlet


Servlet是一個用Java編寫的應用程序,在服務器上運行,處理請求的信息並將其發送到客戶端。

Servlet的客戶端提出請求並獲得該請求的響應。

對於所有的客戶端請求,只需要創建Servlet的實例一次(這是和CGI(Common Gateway Interface)的重要區別,CGI是每個請求創建一個新實例),因此節省了大量的內存。

Servlet在初始化后即駐留內存中,因此每次作出請求時無需加載。

 

下面通過一個例子來介紹如何編寫一個簡單的Servlet。

 

准備工作:

1. 下載並啟動Tomcat(作為Servlet的容器)
 
實例步驟:
1. 在Tomcat/webapps下面創建新的folder,helloapp
 
2. 創建helloapp的子文件夾如下
helloapp
----WEB-INF
--------web.xml
--------classes
--------lib
 
3. 在classes下面創建新的java文件,Hello.java
 
4. 引入servlet-api.jar, import javax.servlet.*;
 
5. Servlet的實現有3種方式,下面分開進行介紹(重點)
HttpServlet繼承GenericServlet,GenericServlet實現了Servlet。
 
5.1 實現Servlet接口
 
public class Hello implements Servlet{
@Override
public void init(ServletConfig sc) throws ServletException {
//只有第一次被調用,初始化函數。
System.out.println("initialization...");
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
//每次訪問都被調用,業務邏輯寫在這里。
System.out.println("call service");
PrintWriter pw = res.getWriter();
pw.write("My first web app.");
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
//最后關閉時,調用。
System.out.println("destroy...");
}
}

 

5.2 繼承GenericServlet

 

public class Hello2 extends GenericServlet{
@Override
public void service(ServletRequest sr, ServletResponse sr1) throws ServletException, IOException {
//業務邏輯,每次訪問都被調用。
System.out.println("Testing....");
PrintWriter pw = sr1.getWriter();
pw.println("my second web app.");
}
}

 

5.3 繼承HttpServlet

 

public class Hello3 extends HttpServlet{
@Override
public 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>//對應的類
</servlet>
<servlet-mapping>
    <servlet-name>Hello</servlet-name>//servlet名稱,隨便起,但是要與servlet中的名稱一致。
    <url-pattern>/h1</url-pattern>//對應的,瀏覽器中url。
</servlet-mapping>

8. 訪問helloapp/h1,可以看到結果。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM