【菜鳥學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中Servlet技術JavaServlet
- java菜鳥入門Java
- 跟著菜鳥學pythonPython
- 菜鳥求助!!!
- 菜鳥學Python之雜湊表Python
- 菜鳥也想學習JSON解析JSON
- 菜鳥教程python 學習進度Python
- Java集合從菜鳥到大神演變Java
- 給大家分享下騰訊菜鳥京東Java面經(已經收到 Offer) | 掘金技術徵文Java
- Linux“菜鳥”到“菜鳥的一些建議Linux
- 菜鳥市場
- java從菜鳥到碼神之路——運算子Java
- Android菜鳥學習js筆記一AndroidJS筆記
- 菜鳥的資訊保安學習之路
- python菜鳥教程學習9:函式Python函式
- 菜鳥筆記之計算機網路(4)筆記計算機網路
- 走進JavaWeb技術世界4:Servlet 工作原理詳解JavaWebServlet
- python菜鳥教程學習1:背景性學習Python
- hashmap == 菜鳥驛站?HashMap
- 菜鳥看前端(Git)前端Git
- JavaScript 非同步及Promise 菜鳥學習心得JavaScript非同步Promise
- linux-鳥哥私房菜學習筆記Linux筆記
- C#、GIT詳細教程--菜鳥學院C#Git
- 菜鳥學python之用python找指定檔案Python
- python菜鳥教程學習13:檔案操作Python
- python菜鳥教程學習5: python運算子Python
- Java程式設計師從笨鳥到菜鳥全部部落格目錄Java程式設計師
- Linux菜鳥到老鳥的那些建議Linux
- 菜鳥學Python之 _, __ 和 __xx__的區別Python
- 鳥哥私房菜學習筆記(第零章)筆記
- 【菜鳥讀原始碼】halo✍原始碼學習 (一)原始碼
- python菜鳥教程學習3:基礎語法Python
- 一個菜鳥管理的學習和思考(一)
- 一個菜鳥管理的學習和思考(二)
- Servlet技術12_HttpServletRequest類ServletHTTP
- ESlint-菜鳥入門EsLint
- 菜鳥初嘗快速冪
- 菜鳥也裝Linux(轉)Linux
- 菜鳥學習筆記:Java基礎篇1(基礎語法、物件導向)筆記Java物件