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
| <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>? </html>? |
?
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>?????? ? </web-app>? |
?
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開始讓我思考。學習不能總是看以前學得不扎實。學得時候做好總結,往前看。但學新的東西要聯系舊的東西,這樣既能鞏固舊知識,也能使學習變得輕松。這也是為什么我們學了后面的,再看前面學得容易了的原因。
?
?
注明Servlet入門理解摘自博客地址:http://blog.csdn.net/wangyajin333/article/details/39937163
?
總結
以上是生活随笔為你收集整理的servlet的理解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 经典文章解释apache与tomcat!
- 下一篇: 很好的大数据名词解释,收藏