首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

C#/.NET 轉 Java Web 學習筆記:Servlet、集合、IO、JSP 與 JSTL 核心知識圖譜

     編輯:Java 綜合教學

轉型背景與心法

從 .NET 三年經驗轉型 Java Web,核心差異在於:生態開放性(Maven/Gradle vs NuGet)、運行時模型(JVM vs CLR)、Web 標準(Servlet/JSP vs ASP.NET Core)。建立「對比學習」心智模型,加速知識遷移。

Servlet 核心體系

生命週期三階段

  1. 初始化:init(),單例創建,僅一次
  2. 服務:service() → 分發 doGet/doPost,多線程並發
  3. 銷毀:destroy(),容器關閉時調用

單例多線程模型

  • Servlet 實例唯一,請求線程共享實例變量 → 線程不安全
  • 局部變量線程私有 → 線程安全
  • 避免在 Servlet 中定義可變實例字段

Java 基礎核心補充

多線程兩大實現

// 1. 實現 Runnable(推薦,支援共享資源)
class Task implements Runnable {
    public void run() { /* 邏輯 */ }
}
new Thread(new Task(), "T1").start();

// 2. 繼承 Thread
class MyThread extends Thread {
    public void run() { /* 邏輯 */ }
}
new MyThread("T2").start();

同步機制

// 同步代碼塊(鎖對象必須相同)
synchronized(sharedObj) { /* 臨界區 */ }

// 同步方法(隱式鎖 this)
synchronized void sellTicket() { /* 邏輯 */ }

IO 四大流體系

類別字節流字符流
輸入InputStreamReader
輸出OutputStreamWriter
文件實現FileInput/OutputStreamFileReader/Writer
緩衝增強BufferedInput/OutputStreamBufferedReader/Writer
適用場景二進制(圖片、視頻)文本(中文支援更好)

集合框架核心結構

  • Collection → List(有序、可重複:ArrayList/LinkedList/Vector) / Set(唯一:HashSet/TreeSet)
  • Map → HashMap/TreeMap/Hashtable/ConcurrentHashMap
  • ArrayList:查詢快、增刪慢;LinkedList:增刪快、查詢慢
  • Vector/Hashtable:同步但性能差,推薦 Collections.synchronizedXxx 或 Concurrent 包

JSP 九大內置對象與 JSTL/EL

內置對象速查

對象類型用途
requestHttpServletRequest請求參數/屬性
responseHttpServletResponse響應控制
sessionHttpSession會話狀態
applicationServletContext全局共享
outJspWriter頁面輸出
configServletConfig初始化參數
pageContextPageContext頁面上下文
pageObject當前頁面實例
exceptionThrowable錯誤頁面專用

JSTL 核心標簽庫

<%@ taglib prefix="c" uri="https://java.sun.com/jsp/jstl/core" %>

<!-- 變量操作 -->
<c:set var="name" value="Java" scope="request"/>
<c:out value="${name}"/>

<!-- 流程控制 -->
<c:if test="${user.vip}">VIP專享</c:if>
<c:choose>
    <c:when test="${score>=90}">優秀</c:when>
    <c:otherwise>加油</c:otherwise>
</c:choose>

<!-- 循環 -->
<c:forEach items="${list}" var="item" varStatus="status">
    ${status.index}: ${item.name}
</c:forEach>

EL 表達式優勢

  • 自動處理 null(不拋 NPE,輸出空串)
  • 支持 ${map.key}、${list[0]}、${bean.prop} 統一訪問
  • 內置 11 大隱含對象(param、header、cookie、initParam 等)

學習路線圖建議

  1. Java 語法差異(泛型、註解、Lambda、Stream)
  2. Servlet/JSP 原理與容器(Tomcat/Jetty)
  3. Spring 生態(Core、MVC、Boot、Cloud)
  4. ORM 框架(MyBatis、JPA/Hibernate)
  5. 中間件(Redis、MQ、ZK、Nginx)
  6. 微服務與容器化(Docker、K8s)

.NET 經驗是寶貴資產,OOP、設計模式、數據庫、架構思維通用;擁抱 Java 生態開放性,善用 Maven 中央倉庫、開源社區,轉型必成!

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved