您好,登錄后才能下訂單哦!
這篇文章主要講解了“JSP有什么作用”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“JSP有什么作用”吧!
在SUN公司剛開始做java web方面的設計的時候,他們設計了servlet來作為服務器應用處理請求和響應,通過動態輸出HTML代碼的方式來向用戶范圍HTML頁面,如下圖所示:
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
response.setContentType("text/html");
// Hello
PrintWriter out = response.getWriter();
out.println("<html><body>");
out.println("<h2>W3Cschool618有課程優惠啦快來看看吧</h2>");
out.println("</body></html>");
}
但是這種方法并不合理。首先,做過前端開發的小伙伴都知道,一個前端頁面動輒幾百行代碼,如果像上圖一樣進行輸出,后端程序員就得一直復制黏貼這些前端代碼,一個doGet()
方法里面將會有很多這樣的代碼,影響代碼的整潔,容易擾亂程序員的邏輯,而且有些符號會被java編譯器錯誤識別,這樣的錯誤需要花費時間去調教(比如HTML文本中有雙引號會導致字符串輸出提前結束,后面的代碼編譯器編譯不了,會拋出一堆錯誤)。這種在java代碼里寫html代碼的方式飽受程序員詬病,恰逢PHP和ASP.Net的出現,他們使用更簡單的方式來輸出HTML代碼(在HTML代碼中嵌入響應語言來引入動態數據),很多程序員因此轉而使用這兩種語言,java也因此流失了一部分程序員。
SUN公司在看到了PHP等語言的成功經歷后也搞了一個類似的技術,就是接下來要介紹的JSP。JSP的設計理念與servlet截然相反,servlet是在java代碼中輸出HTML頁面,而JSP則是在HTML代碼中嵌入java代碼。使用JSP之后web開發者就不用將HTML頁面復制到servlet了,這樣既減少了servlet的代碼量,使代碼更加簡潔易懂,而且也不用擔心html中的符號被Java編譯器錯誤識別了(下方代碼應為.jsp
后綴)。
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" import="java.util.*" %>
<!DOCTYPE html>
<html>
<head>
<title>JSP - Hello World</title>
</head>
<body>
<h2> <% out.println("Hello World!");%>
</h2>
<br/>
<h3>學習jsp,就到java億速云</h3>
</body>
</html>
相比于PHP而言,JSP可謂是背靠java這種大山,因為JSP在編譯時會被編譯成servlet,所以本質上它也是servlet,是解決了servlet的HTML輸出的servlet。因為是servlet,所以在性能上比PHP這種動態類型語言更加優秀,也具有更高的易用性。
隨著Ajax的提出,使用Ajax來進行靜態頁面的動態數據渲染逐漸成為主流。因為不管是PHP還是servlet,他們生成頁面的速度永遠沒有靜態的Apache服務器派發靜態頁面的速度快,而一個頁面往往需要渲染的數據只有一小部分,這時候聰明的開發者提出了一種新想法:先讓Apache服務器派發一個靜態的頁面,然后這個靜態頁面通過Ajax請求向服務器獲取這部分需要渲染的數據,然后在瀏覽器進行渲染。以往服務器要生成一整個HTML頁面,現在只需要生成這部分數據并以指定格式返回即可,大大減小了服務器的壓力。然后很多小伙伴們會發現,返回指定格式的數據用servlet就能輕易做到,而HTML靜態頁面直接用html文件存放在靜態的Apache服務器上,JSP需要做的工作,沒有了。沒錯,這種操作促進了前后端的分離,也導致了JSP的衰落。
感謝各位的閱讀,以上就是“JSP有什么作用”的內容了,經過本文的學習后,相信大家對JSP有什么作用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。