說說你對servlet的了解或者 servlet 是什麼?
Servlet(Servlet Applet),全稱Java Servlet,是用Java編寫的伺服器端程式。而這些Servlet都要實作Servlet這個接口。其主要功能在于互動式的浏覽和修改資料,生成動态Web内容。Servlet運作于支援Java的應用伺服器中。
HttpServlet 重寫doGet 和 doPost 方法或者你也可以重寫service方法完成對get和post請求響應。
Servlet的通俗了解?
Servlet是一個運作了面向請求/ 響應伺服器中的網絡子產品。
請求是客戶的一個調用,可能是遠端的。
請求包含了客戶要發送給伺服器的資料。
響應是伺服器傳回給客戶的回答該請求的資料。Servlet是一個JAVA對象,他以請求為輸入,分析其資料,執行一些邏輯運算,并給客戶發回一個響應。
另一方面,Servlet作為駐留在伺服器端HTTP明白的中間層,它們知道怎樣在HTTP中通過RMI或IIOP在EJB和客戶之間進行通信。
RMI了解位址:http://haolloyin.blog.51cto.com/1177454/332426/
IIOP了解位址:https://baike.baidu.com/item/IIOP/8866752?fr=aladdin
RMI-IIOP:RMI以Java為核心,可與采用本機方法與現有系統相連接配接。IIOP,Internet Inter-ORB Protocol(網際網路内部對象請求代理協定),它是一個用于CORBA 2.0及相容平台上的協定。
Servlet 入門了解?
當學到Servlet這個新技術的時候,不是着急去學Servlet這個Java類有什麼屬性、方法,而是先去了解這個東西什麼時候會用到,既然都是BS的,那ASP.NET中有沒有類似的?然後就有了人寫了這篇部落格。
1.Servlet産生背景和主要作用
我們都知道網頁有靜态和動态之分。靜态的隻能看看,而動态可以實作用戶端和伺服器的互動,比如登入的功能,我們輸入使用者名和密碼後送出到伺服器,伺服器會處理這些資訊,如果正确的話則進入首頁。若不正确,則給出提示資訊。這是我們很常實作的例子,可是我們有沒有想過:用戶端到伺服器之間這個互動的過程是怎麼實作的?之前我沒有想過。直到遇到了Servlet.Servlet是Java中用來處理BS架構下,用戶端請求的響應處理。
2.java中Servlet和ASP.net中的HttpHandler的對比
ASP.Net:
當一個HTTP請求經同HttpModule容器傳遞到HttpHandler容器中時,ASP.NET Framework會調用HttpHandler的ProcessRequest成員方法來對這個HTTP請求進行真正的處理。以一個ASPX頁面為例,正是在這裡一個ASPX頁面才被系統處了解析,并将處理完成的結果繼續經由HttpModule傳遞下去,直至到達用戶端。我們看一張圖幫助了解:
Java:
在這個過程中,HttpServletRequest和HttpServletReponse相當于上面的HttpModule起到傳過去,傳回來的作用。Servlet(HttpServlet)相當于HttpHandler處理用戶端請求。
3.Servlet是什麼
現在我們說說Servlet是什麼。Servlet就是一個Java類。類就會有一系列的屬性和方法。了解這些可以看詳細的API文檔。這裡不再贅述。
Java包組成:javax.servlet和javax.servlet.http. 在javax.servlet包中定義了所有的Servlet類都必須實作或擴充的的通用接口和類.在javax.servlet.http包中定義了采用HTTP通信協定的HttpServlet類。
4.Demo(Tomcat)
login.html
<head>
<title>Login</title>
</head>
<body>
<form action="exam/login">
使用者名:<input type="text" name="username"> <br>
密 碼:<input type="password" name="password"> <br>
<input type="submit" value="登入">
</form>
</body>
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_2_5.xsd”
version=“2.5”>
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>loginservlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>
<servlet>
loginServlet.java
import javax.servlet.http.*;
import javax.servlet.*;
import java.io.*;
public class loginservlet extends HttpServlet{
public void doGet(HttpServletRequest req,
HttpServletResponse resp)
throws ServletException,
IOException{
String username = req.getParameter("username");
String password = req.getParameter("password");
System.out.println("username = " + username );
System.out.println("password = " + password );
resp.setContentType("text/html");
resp.getWriter().println("Login Success!");
}
}
對應時序圖:
總結:
以前沒有想過用戶端和伺服器如何實作互動。Servlet開始讓我思考。學習不能總是看以前學得不紮實。學得時候做好總結,往前看。但學新的東西要聯系舊的東西,這樣既能鞏固舊知識,也能使學習變得輕松。這也是為什麼我們學了後面的,再看前面學得容易了的原因。