【菜鳥學Java】4:Servlet 技術
什麼是Servlet?
Servlet是java語言類,用來擴充通過請求響應模式的服務端的能力。儘管servlets可以響應任何型別的響應,它們通常用於擴充基於Web的應用程式。在這種應用程式中,Java servlet技術定義了特定的HTTP servlet類。
Servlet通常執行在多執行緒伺服器上,因此應該瞭解到Servlet必須處理併發請求並且要小心翼翼地同步對共享資源的訪問。共享資源一般包括記憶體資料(比如例項或者類變數)和外部物件(比如檔案、資料庫連線和網路連線)。
當然我在這裡主要討論的是產生響應HTTP請求的Servlets。說到這裡就不得不說一個很重要類HttpServlet,上文也提到了,它提供了將要被子類化以建立適用於Web站點的HttpServlet的抽象類,其子類至少必須重寫一個方法,該方法通常是諸如doGet、doPost、doDelete等方法。
可能說了這麼多,還是對Servlet的作用不是很清楚,也許使用圖可以幫助大家更好的理解Servlet。如下圖所示
從上圖中我們可以看到,Servlet就是一個執行在Web伺服器中的小型Java程式,它通常通過Http協議接收和響應來自Web客戶端的請求。那麼如何應用Servlet技術呢?請接著看程式碼例項。
怎麼用Servlet?
對於客戶端,我們使用html頁面來模擬,對於伺服器端我們編寫一個簡單的Servlet程式,用於處理網頁傳送過來的請求。具體程式碼如下;
login.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>登入</title>
<body>
<form action="http://lochost:8080/test_servlet/loginServlet">
賬號:<input type="text" name="username"><br>
密碼:<input type="text" name="password"><br>
<input type="submit" value="登入">
</form>
</body>
</head>
</html>
LoginServlet,java程式碼
import java.io.*;
import java.servlet.*;
import javax.servlet.http.*;
public class LoginServlet extends HttpServlet{
public void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException{
String username = request.getParameter("username");
String password = request.getParameter("password");
System.out.println("username" + username);
System.out.println("password" + password);
response.setContentType("text/html;charset=GB18030");
response.getWriter().println("登陸成功!!");
}
}
web.xml程式碼
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0"
metadata-complete="true">
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/loginServlet</url-pattern>
</servlet-mapping>
</web-app>
那麼這個Servlet程式具體的執行流程是什麼樣的,下面的時序圖可以幫助大家更好的理解
從上圖可以看出,Servlet從客戶端接收使用者資料,在自己內部或者是呼叫外部程式進行處理,將處理結果傳送回客戶端,從而完成了使用者和系統的互動,就這麼簡單。
小結一下:
伺服器上需要一些程式,常常是根據使用者輸入訪問資料庫的程式。這些通常是使用公共閘道器介面(Common Gateway Interface,CGI)應用程式完成的。然而,在伺服器上執行 Java,這種程式可使用 Java 程式語言實現。在通訊量大的伺服器上,JavaServlet 的優點在於它們的執行速度更快於 CGI 程式。各個使用者請求被啟用成單個程式中的一個執行緒,而無需建立單獨的程式,這意味著伺服器端處理請求的系統開銷將明顯降低。
相比較而言,Servlet更勝於CGI,主要體現在便利性,功能強大,可移植性好,僅需要很少的投入,比較便宜。不過Servlet也有其自己不足,那就是它輸出HTML語句還是採用老的CGI方式,一句一句的輸出,因此編寫和修改HTML非常的麻煩。之後出現的JSP和JSP + Bean等技術,其速度方便都比Servlet要強,所以現在Servlet可能用的比較少了。
相關文章
- 【菜鳥學Java】11:Session技術JavaSession
- 【菜鳥學Java】10:Cookie技術JavaCookie
- 菜鳥學Java(九)——Servlet的基本配置JavaServlet
- 菜鳥學Java(十七)——Jboss瘦身Java
- 菜鳥學Java(十八)——異常Java
- 菜鳥學Java(七)——Ajax+Servlet實現無重新整理下拉聯動JavaServlet
- Java中Servlet技術JavaServlet
- 菜鳥學Java(十六)——Jboss簡介Java
- 菜鳥學Java(十一)——GET與POSTJava
- 【菜鳥學Java】9:使用dom4j解析jdbc.xmlJavaJDBCXML
- 菜鳥學Java(十四)——Java反射機制(一)Java反射
- 菜鳥學Java(十五)——Java反射機制(二)Java反射
- 菜鳥學Java(十)——分頁查詢Java
- vcasm的多程式反跟蹤技術學習心得(菜鳥篇)ASM
- java菜鳥入門Java
- 技術菜鳥如何聘到大牛工程師?工程師
- 菜鳥學Java(四)——JSP內建物件JavaJS物件
- 【菜鳥學Java】15:JSP技術中的Model1和Model2開發模式JavaJS模式
- 菜鳥學Java(二十三)——Java記憶體分析Java記憶體
- 菜鳥必看:釋出駭客最初步的技術(轉)
- Servlet技術---Servlet深化Servlet
- 菜鳥學Java(八)——dom4j詳解之讀取XML檔案JavaXML
- 【菜鳥學Java】7:JSP的基本語法JavaJS
- 【菜鳥學Java】2:初識J2EEJava
- 菜鳥初學Java的備忘錄(二) (轉)Java
- 菜鳥初學Java的備忘錄(五) (轉)Java
- 菜鳥初學Java的備忘錄(八) (轉)Java
- 菜鳥初學Java的備忘錄(七) (轉)Java
- 菜鳥初學Java的備忘錄(九) (轉)Java
- 菜鳥初學Java的備忘錄(四) (轉)Java
- 菜鳥初學Java的備忘錄(六) (轉)Java
- 菜鳥初學Java的備忘錄(十) (轉)Java
- 菜鳥初學Java的備忘錄(一) (轉)Java
- 菜鳥初學Java的備忘錄(三) (轉)Java
- IT菜鳥的學習生活
- 菜鳥學Java(六)——簡單驗證碼生成(Java版)Java
- Servlet技術----Servlet入門Servlet
- Java菜鳥到大牛學習路線培訓教程Java