JavaWeb筆記

六、MVC模式

? Model(模型)

職責:處理數據和業務邏輯。

  • 負責數據的存儲、讀取和操作。

  • 包含業務規則和邏輯。


? View(視圖)

職責:展示界面和接收用戶輸入。

  • 把數據以可視化的形式呈現給用戶。

  • 不處理業務邏輯,只負責顯示。


? Controller(控制器)

職責:協調模型與視圖,處理請求。

  • 接收用戶請求(如點擊按鈕、提交表單)。

  • 調用模型處理業務邏輯。

  • 控制流程并決定使用哪個視圖展示結果。

七、頁面提交方式

跳轉方式觸發方式是否能傳值傳遞值的方式聲明跳轉的方法/示例
超鏈接點擊URL參數(查詢字符串)<a href="targetPage.jsp?param1=value1?m2=value2">Link</a>
表單提交(自動或編程式)表單字段(GET方法:URL參數;POST方法:請求體)<form action="targetServlet" method="GET/POST">...</form>
Forward動作自動(服務器端)請求屬性(僅在同一個請求內有效)request.getRequestDispatcher("target.jsp").forward(request, response);
SendRedirect自動(客戶端重定向)URL參數 或 Session/sessionStorage等response.sendRedirect("targetPage.jsp")
RequestDispatcher自動(服務器端)請求屬性(forward())或直接包含內容(include()getServletContext().getRequestDispatcher("/target").include(request, response);

八、JSP的標簽

1. <%@ page %>:定義頁面相關的屬性
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"import="java.util.*, com.example.*"
%>
2. <%@ include %>:靜態包含其他文件的內容
<%@ include file="path/to/file.jsp" %>
3. <jsp:include>:動態地包含另一個資源
<jsp:include page="path/to/file.jsp"><jsp:param name="paramName" value="paramValue"/>
</jsp:include>
4. <jsp:forward>:轉發請求到另一個資源
<jsp:forward page="path/to/resource.jsp"><jsp:param name="paramName" value="paramValue"/>
</jsp:forward>
5. <jsp:param>:傳遞參數給<jsp:include><jsp:forward>
<jsp:param name="paramName" value="paramValue"/>
6. <jsp:useBean>:查找或實例化一個JavaBean
7. <jsp:setProperty>:設置JavaBean的屬性值
8. <jsp:getProperty>:獲取JavaBean的屬性值
<body><jsp:useBean id="user" class="com.example.User" scope="request"/><jsp:setProperty name="user" property="name" value="John Doe"/><jsp:setProperty name="user" property="age" value="30"/>
?<h1>User Information</h1><p>Name: <jsp:getProperty name="user" property="name"/></p><p>Age: <jsp:getProperty name="user" property="age"/></p>
</body>

九、過濾器(Filter)

作用:用于對客戶端請求和服務器響應進行預處理或后處理(比如可以省掉每個Servlet的字符編碼設置)

XML配置:同Servlet

<filter>

<filter-name>myFilter</filter-name>

<filter-class>com.example.MyFilter</filter-class>

</filter>

<filter-mapping>

<filter-name>myFilter</filter-name>

<url-pattern>/*</url-pattern>

使用通配符*,匹配所有的請求

</filter-mapping>

需要重寫三個最重要的 方法

十、監聽器(Listener)

作用:ServletContextListener監聽容器啟動和銷毀,還可以監聽會話或者請求只要實現不同接口

  • ServletContextListener:監聽Web應用的啟動(contextInitialized)和關閉(contextDestroyed)事件。

  • HttpSessionListener:監聽HttpSession的創建(sessionCreated)和銷毀(sessionDestroyed)事件。

  • ServletRequestListener:監聽ServletRequest的創建(requestInitialized)和銷毀(requestDestroyed)事件。

  • HttpSessionAttributeListener:監聽HttpSession中屬性的添加、移除或替換事件。

  • ServletContextAttributeListener:監聽ServletContext中屬性的添加、移除或替換事件。

實現相關接口:重寫一些用到的方法

xml配置

<listener>

<listener-class>com.example.MyContextListener</listener-class>

</listener>

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/908941.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/908941.shtml
英文地址,請注明出處:http://en.pswp.cn/news/908941.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

解決啟動SpringBoot是報錯Command line is too long的問題

文章目錄 錯誤全稱原因解決方法&#xff08;一圖到底&#xff09; 錯誤全稱 在啟動springBoot項目時&#xff0c;會報錯&#xff1a; Error running Application. Command line is too long. Shorten the command line via JAR manifest 原因 命令行太長的原因導致SpringBoot和…

DAY47打卡

DAY 47 注意力熱圖可視化 昨天代碼中注意力熱圖的部分順移至今天 知識點回顧&#xff1a;熱力圖&#xff08;代碼學習在day46天&#xff09; 作業&#xff1a;對比不同卷積層熱圖可視化的結果 通道注意力熱圖的代碼整體結構與核心功能 數據處理&#xff1a;對 CIFAR-10 數據集進…

Java在word中指定位置插入圖片。

Java使用&#xff08;Poi-tl&#xff09; 在word&#xff08;docx&#xff09;中指定位置插入圖片 Poi-tl 簡介Maven 依賴配置Poi-tl 實現原理與步驟1. 模板標簽規范2.完整實現代碼3.效果展示 Poi-tl 簡介 Poi-tl 是基于 Apache POI 的 Java 開源文檔處理庫&#xff0c;專注于…

遷移科技:破解紙箱拆垛場景的自動化升級密碼

一、當傳統拆垛遇上智能視覺&#xff1a;一場效率革命的必然選擇 在汽車制造基地的物流中轉區&#xff0c;每天有超過2萬件零部件紙箱需要完成拆垛分揀。傳統人工拆垛面臨三大挑戰&#xff1a; 效率瓶頸&#xff1a;熟練工人每小時處理量不超過200箱安全隱患&#xff1a;重型…

redis和redission的區別

Redis 和 Redisson 是兩個密切相關但又本質不同的技術&#xff0c;它們扮演著完全不同的角色&#xff1a; Redis: 內存數據庫/數據結構存儲 本質&#xff1a; 它是一個開源的、高性能的、基于內存的 鍵值存儲數據庫。它也可以將數據持久化到磁盤。 核心功能&#xff1a; 提供豐…

AIStarter 4.0 蘋果版體驗評測|輕松部署 ComfyUI 與 DeepSeek 的 AI 工具箱

最近在測試一款名為 AIStarter 4.0 的 AI 工具管理平臺&#xff0c;主要用于在 Mac 系統上快速部署各類開源 AI 項目&#xff0c;如 ComfyUI 和 DeepSeek &#xff0c;非常適合開發者、設計師及 AI 入門者使用。 通過簡單的拖拽操作即可完成安裝&#xff0c;支持普通下載與網盤…

ArcGIS Pro 3.4 二次開發 - 圖形圖層

環境:ArcGIS Pro SDK 3.4 + .NET 8 文章目錄 圖形圖層1.1 創建圖形圖層1.2 訪問GraphicsLayer1.3 復制圖形元素1.4 移除圖形元素2 創建圖形元素2.1 使用CIMGraphic創建點圖形元素2.2 使用CIMGraphic創建線圖元素2.3 使用 CIMGraphic 的多邊形圖形元素2.4 使用CIMGraphic創建多…

《廣度優先搜索》題集

1、模板題集 聚合一塊 2、課內題集 尋找圖中是否存在路徑 鑰匙和房間 受限條件下可到達節點的數目 3、課后題集 最少操作數 社交網絡新來的朋友 Ignatius and the Princess I Collect More Jewels Gap Nightmare Remainder Ferry Loading III 連連看 詭異的樓梯 Open the …

界面組件DevExpress WPF中文教程:Grid - 如何獲取行句柄?

DevExpress WPF擁有120個控件和庫&#xff0c;將幫助您交付滿足甚至超出企業需求的高性能業務應用程序。通過DevExpress WPF能創建有著強大互動功能的XAML基礎應用程序&#xff0c;這些應用程序專注于當代客戶的需求和構建未來新一代支持觸摸的解決方案。 無論是Office辦公軟件…

零跑汽車5月交付45067臺車,同比增長超148%

零跑汽車在5月交付新車45,067輛&#xff0c;同比大增148%&#xff0c;連續5個月實現單月交付量增長&#xff0c;穩居新勢力交付量第一位置。今年1-5月&#xff0c;零跑累計交付新車達173,658輛&#xff0c;展現出強勁的市場競爭力和產品實力。 根據Q1財報&#xff0c;零跑不僅營…

netty中的粘包問題詳解

一起來學netty 一、粘包問題的本質二、粘包問題的成因三、Netty中的解決方案1. 固定長度解碼器(FixedLengthFrameDecoder)2. 行分隔符解碼器(LineBasedFrameDecoder)3. 分隔符解碼器(DelimiterBasedFrameDecoder)4. 長度字段解碼器(LengthFieldBasedFrameDecoder)四、解…

【基礎算法】枚舉(普通枚舉、二進制枚舉)

文章目錄 一、普通枚舉1. 鋪地毯(1) 解題思路(2) 代碼實現 2. 回文日期(1) 解題思路思路一&#xff1a;暴力枚舉思路二&#xff1a;枚舉年份思路三&#xff1a;枚舉月日 (2) 代碼實現 3. 掃雷(2) 解題思路(2) 代碼實現 二、二進制枚舉1. 子集(1) 解題思路(2) 代碼實現 2. 費解的…

利用ngx_stream_return_module構建簡易 TCP/UDP 響應網關

一、模塊概述 ngx_stream_return_module 提供了一個極簡的指令&#xff1a; return <value>;在收到客戶端連接后&#xff0c;立即將 <value> 寫回并關閉連接。<value> 支持內嵌文本和內置變量&#xff08;如 $time_iso8601、$remote_addr 等&#xff09;&a…

Java如何權衡是使用無序的數組還是有序的數組

在 Java 中,選擇有序數組還是無序數組取決于具體場景的性能需求與操作特點。以下是關鍵權衡因素及決策指南: ?? 核心權衡維度 維度有序數組無序數組查詢性能二分查找 O(log n) ?線性掃描 O(n) ?插入/刪除需移位維護順序 O(n) ?直接操作尾部 O(1) ?內存開銷與無序數組相…

學習日記-day24-6.8

完成內容&#xff1a; 知識點&#xff1a; 1.網絡編程_TCP編程 ### 編寫客戶端1.創建Socket對象,指明服務端的ip以及端口號 2.調用socket中的getOutputStream,往服務端發送請求 3.調用socket中的getInputStream,讀取服務端響應回來的數據 4.關流public class Client {public…

JavaScript 核心對象深度解析:Math、Date 與 String

JavaScript 作為 Web 開發的核心語言&#xff0c;提供了豐富的內置對象來簡化編程工作。本文將深入探討三個重要的內置對象&#xff1a;Math、Date 和 String&#xff0c;通過詳細的代碼示例和綜合案例幫助你全面掌握它們的用法。 一、Math 對象 Math 對象提供了一系列靜態屬…

HarmonyOS開發:設備管理使用詳解

目錄 前言 設備管理概述 設備管理組成 1、電量信息 &#xff08;1&#xff09;導入模塊 &#xff08;2&#xff09;屬性信息 &#xff08;3&#xff09;常用屬性 &#xff08;4&#xff09;使用示例 2、設備信息 &#xff08;1&#xff09;導入模塊 &#xff08;2&a…

el-select下拉框 添加 el-checkbox 多選框

效果 vue <el-select v-model"value" multiple style"width: 100%" popper-class"select-popover-class" placeholder"請選擇試驗項目"><el-option v-for"item in options" :key"item.value" :value&qu…

Memory Repair (三)

Top-Level Verification and Pattern Generation 本節涵蓋 fuse box 編程、頂層 BISR&#xff08;內置自修復&#xff09;驗證以及生產測試 pattern 的生成 Fuse Box Programming 通過 BISR controller 對 fuse box 進行編程的兩種方法如下&#xff1a; ? 采用 Autonomous mod…

通過Wrangler CLI在worker中創建數據庫和表

官方使用文檔&#xff1a;Getting started Cloudflare D1 docs 創建數據庫 在命令行中執行完成之后&#xff0c;會在本地和遠程創建數據庫&#xff1a; npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到數據庫&#xff1a; 現在&#xff0c;您的Cloudfla…