Servlet 和 JSP 概述

来源:http://www.cnblogs.com/arvinzhang/archive/2016/01/03/5097245.html
-Advertisement-
Play Games

說到Java web開發,就不得不提Servlet 和 JSP。這兩者是java web開發技術。雖然現在有這麼多的web框架,公司中很少會用這兩個技術來直接開發項目,但是理解了這兩個技術,一則會讓你對web的基礎知識要很深的瞭解,二則學其他的相比來說要更好理解點。一、Servlet1. 什麼是se...


說到Java web開發,就不得不提Servlet 和 JSP。這兩者是java web開發技術。雖然現在有這麼多的web框架,公司中很少會用這兩個技術來直接開發項目,但是理解了這兩個技術,一則會讓你對web的基礎知識要很深的瞭解,二則學其他的相比來說要更好理解點。

一、Servlet

1. 什麼是servlet?

servlet是運行在Web伺服器上的java程式。是一個中間層,負責連接來自Web瀏覽器或其他Http請求和Http伺服器上的資料庫或應用程式。

2. Servlet的作用是什麼?

a. 讀取用戶發送的顯示數據和瀏覽器發送的隱式請求數據。

顯示數據一般是頁面上輸入的表單數據。

隱式數據即Http信息,如cookie, 瀏覽器能夠識別的的媒體類型或壓縮模式等。

b. 生成結果。

這裡會做業務邏輯的處理,如訪問資料庫或其他複雜操作。也會生成需要直接返回給瀏覽器的結果及Html內容。

c. 向客戶發送顯示數據和隱式的Http響應數據。

顯示數據即用戶能夠看到的結果。

Http響應數據,如cookie設置及緩存參數。客戶端瀏覽器會讀取並處理這些信息。

3. Servlet例子

這個例子只是為了讓讀者對Servlet有個瞭解,沒有給出其他配置,故不能直接運行,後邊會有詳細介紹。

package demo0103;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class ServletOverview extends HttpServlet{
    public void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException{
        
        String contentType = "text/html";
        response.setContentType(contentType);
        PrintWriter writer = response.getWriter();
        String docType = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n";
        String html = "<html>\n" +
                  "<head>\n" +  
                    "<title>Hello World</title>\n" +
                  "</head>\n" + 
                  "<body>\n" + 
                      "<h1>Hello World</h1>\n" +
                  "</body>\n" +
                  "</html>\n";
        writer.println(docType + html);
    }
}
View Code

 顯示運行結果:

 

 

二、JSP

1. 什麼是JSP?

JSP(全稱Java Server Pages)是由Sun Microsystems公司倡導和許多公司參與共同創建的一種使軟體開發者可以響應客戶端請求,而動態生成HTML、XML或其他格式文檔的Web網頁的技術標準。

2. JSP的作用?

JSP可以完成Servlet所能完成的功能。

簡單來說,可以將Servlet看作是含有HTML的java程式。將JSP看作是含有java代碼的HTML的頁面。

3. JSP例子

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Hello World</title>
</head>
<body>
    <h1>Hello World</h1>
</body>
</html>
View Code

顯示結果:

 

Servlet可以完成JSP所能完成的功能,同樣JSP也可以完成Servlet所能完成的功能。如何選擇呢?

為了方便性、易用性和可維護性,二則結合是最好的處理方式。

對於業務邏輯的任務,servlet是最好的選擇。

對於顯示的任務,JSP是最好的選擇。

後面要講到的MVC模式是對二者主應用的很好詮釋。

 

以上只是自己的理解,如果有不妥之處,還望指出。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 移動開發者面臨的技術挑戰 初創期 創意->客戶端開發->服務端開發->測試 技術選型: 開發語言 技術框架 雲計算 圖片 資料庫 緩存 中間件 大數據計算 架構穩定:有靈活性和可擴展性,架構清晰,新人可以快速上手。 上升期 運維挑戰: ü 部署發佈不成為難點 ü 加機器,怎麼加? ü 數據的備...
  • 意圖 0 適用性 1 結構 2 實現 3 效果 4 參考 5意圖使多個對象都有機會處理請求,從而避免請求的發送者和接受者之間的耦合關係。將這些對象連成一條鏈,並沿著這條鏈傳遞該請求,直到有一個對象處理它為止。適用性在以下條件下使用:有多個對象可以處理一個請求,哪個對象處理該請求運行時刻...
  • 怎樣寫出高逼格的計算器(用上封裝、繼承、多態) -- 簡單工廠模式
  • 回到目錄Lind.DDD.Repositories.EF以下簡稱Repositories.EF,之所以把它從Lind.DDD中拿出來,完全出於可插拔的考慮,讓大家都能休會到IoC的魅力,用到哪種方法持久化,就將那個DLL放到應用程式中,完全不需要把所有持久化方式耦合到一個項目里,這也是遵循了OCP的...
  • 回到目錄Lind.DDD.Domain位於Lind.DDD核心項目中,它主要面向領域實體而設計,由一個IEntity的標識介面,EntityBase基類和N個Entity實體類組成,其中IEntity主要用來標識,在倉儲操作時,用它來表明操作的實體範圍和約束;EntityBase定義了幾個公用的屬性...
  • hi懶癌是最可怕的癌了吧,在即將迎來本命年時,給自己定下每天必乾的幾件成習慣的事情,望不再鴿!!php是我一直在學習的東西,但總以為php簡單,難點在需要掌握大量的相關知識,其實並不完全對,php也是有演算法好吧,php也值得認真對待,既然決定學了,拿點樣子出來啊,是男人吧。1、PHP一、PHP基.....
  • 1 package com.test; 2 3 import java.io.File; 4 import java.io.FileInputStream; 5 import java.io.FileNotFoundException; 6 import java.io.FileOutputSt.....
  • 數組與指針閱讀如下代碼,為何出錯。 1 int main() { 2 char a[] = { "I am a bad boy" }; 3 char * pA = new char[ sizeof( a ) ]; 4 pA = a; 5 6 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...