天天看點

對servlet 的了解

說說你對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開始讓我思考。學習不能總是看以前學得不紮實。學得時候做好總結,往前看。但學新的東西要聯系舊的東西,這樣既能鞏固舊知識,也能使學習變得輕松。這也是為什麼我們學了後面的,再看前面學得容易了的原因。

繼續閱讀