撩課-Java每天5道面試題第19天

来源:https://www.cnblogs.com/gxq666/archive/2018/12/14/10117648.html
-Advertisement-
Play Games

126.Struts2中的攔截器有什麼用?列舉框架提供的攔截器名稱? 127.Struts2有哪些優點? 128.ActionContext和ValueStack什麼時候創建?是否是線程安全的? 129.一個請求在Struts2框架中的處理大概分為幾個步驟? 130.介紹一下Struts的Actio ...


126.Struts2中的攔截器有什麼用?列舉框架提供的攔截器名稱?

 1)攔截器是struts2核心組成部分,
它提供了一種機制,使得開發者
可以定義一個特定的功能模塊,
這個模塊會在Action執行之前或者之後執行
也可以在Action執行之前阻止Action執行。 

 2)常用的攔截器有: 

 chain:在不同請求之間將請求參數在不同名字件轉換,
請求內容不變 

 fileUpload:提供文件上傳。 

 ​i18n:記錄用戶選擇的區域環境 

 logger:輸出Action的名字

 params:將請求中的參數設置到Action中去。

 

127.Struts2有哪些優點?

1)在軟體設計上Struts2的應用
可以不依賴於Servlet API和struts API。 
Struts2的這種設計屬於無侵入式設計; 

 2)攔截器,
實現如參數攔截註入等功能;

 3)類型轉換器,
可以把特殊的請求參數轉換成需要的類型; 

 4)多種表現層技術,
如:JSP、freeMarker、Velocity等;

 5)Struts2的輸入校驗
可以對指定某個方法進行校驗;

 6)提供了全局範圍、
包範圍和Action範圍的
國際化資源文件管理實現 

 7) 實現MVC模式,結構清晰,
使開發者只關註業務邏輯的實現。
有豐富的tag可以用,
大提高了開發效率。(簡要)

 

128.ActionContext和ValueStack什麼時候創建?是否是線程安全的?

明確:
動作類是多例的,
每次動作訪問,
動作類都會實例化。
所以是線程安全的。
與Struts1的區別是,
struts1的動作類是單例的。

在每次動作執行前,
核心控制器StrutsPrepareAndExecuteFilter
都會創建一個ActionContext和ValueStack對象。
且每次動作訪問都會創建。

 這兩個對象存儲了整個動作
訪問期間用到的數據。
並且把數據綁定到了線程局部變數
ThreadLocal上了。
所以是線程安全的。

 

129.一個請求在Struts2框架中的處理大概分為幾個步驟?

1) 客戶端初始化一個
指向Servlet容器(例如Tomcat)的請求

2 )這個請求經過一系列的過濾器Filter
這些過濾器中有一個叫做
ActionContextCleanUp的可選過濾器,
這個過濾器對於Struts2和
其他框架的集成很有幫助,
例如:SiteMesh Plugin)

3 )接著FilterDispatcher被調用,
FilterDispatcher詢問ActionMapper
來決定這個請是否需要調用某個Action

4 )如果ActionMapper決定需要調用某個Action,
FilterDispatcher把請求的處理交給ActionProxy

5 )ActionProxy通過Configuration Manager
詢問框架的配置文件,
找到需要調用的Action類

6 )ActionProxy創建一個ActionInvocation的實例。

7 )ActionInvocation實例使用命名模式來調用,
在調用Action的過程前後,
涉及到相關攔截器(Intercepter)的調用。

 8 )一旦Action執行完畢,
ActionInvocation負責根據struts.xml中的配置
找到對應的返回結果。
返回結果通常是一個需要
被表示的JSP或者FreeMarker的模版。
在表示的過程中可以使用Struts2 框架中
繼承的標簽。
在這個過程中需要涉及到ActionMapper

 

130.介紹一下Struts的ActionServlet類

ActionServlet繼承自
javax.servlet.http.HttpServlet類,
其在Struts framework中扮演的角色
是中心控制器。
它提供一個中心位置來處理全部的終端請求。
控制器ActionServlet主要
負責將HTTP的客戶請求信息組裝後,
根據配置文件的指定描述,
轉發到適當的處理器。
按照Servelt的標準,
所有得Servlet必須在
web配置文件(web.xml)聲明。
同樣,ActoinServlet必須在
Web Application配置文件(web.xml)中描述
當用戶向伺服器端提交請求的時候,
實際上信息是首先發送到控制器ActionServlet,
一旦控制器獲得了請求,
其就會將請求信息傳交給一些輔助類(help classes)處理。
這些輔助類知道如何去處理與請求信息所對應的業務操作。
在Struts中,
這個輔助類就是org.apache.struts.action.Action。
通常開發者需要自己繼承Aciton類,
從而實現自己的Action實例。

 


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

-Advertisement-
Play Games
更多相關文章
  • 這裡是修真院前端小課堂,每篇分享文從 【背景介紹】【知識剖析】【常見問題】【解決方案】【編碼實戰】【擴展思考】【更多討論】【參考文獻】 八個方面深度解析前端知識/技能,本篇分享的是: 【常見的DOM操作有哪些】 1.背景介紹 什麼是DOM?簡單地說,DOM是一套對文檔的內容進行抽象和概念化的方法 在 ...
  • 這裡是修真院前端小課堂,每篇分享文從 【背景介紹】【知識剖析】【常見問題】【解決方案】【編碼實戰】【擴展思考】【更多討論】【參考文獻】 八個方面深度解析前端知識/技能,本篇分享的是: 【px、em、rem、%、vw、wh、vm等單位有什麼區別?】 1.背景介紹傳統的項目開發中,我們只會用到px、%、 ...
  • 最近在IE10下運行一個以前的做web系統發現了兩個小問題: 一、圖片上使用"alt"屬性來添加一些文字提示信息在IE10下無法正常顯示出來 上網查了一下原因:原來是現在一些較新的瀏覽器,比如在IE9、IE10使用"alt"屬性時,在圖片能夠正常顯示的情況下,在圖片中設置"alt"屬性的值將不會顯示 ...
  • 聲明 本篇內容梳理自以下幾個來源: "Github:smyhvae/web" "Bootstrap網站的 less 文檔" "Sass中文網" 感謝大佬們的分享。 正文 CSS預處理(less&Sass) CSS預處理 什麼是 CSS 預處理?為什麼要有 CSS 預處理? 這裡就講講這兩個問題,寫過 ...
  • 來源:http://www.fhadmin.org/webnewsdetail3.html 前臺:支持(5+1[時尚單頁風格])六套模版,可以在後臺切換 官網:www.fhadmin.org 系統介紹: 1.網站後臺採用主流的 SSM 框架 jsp JSTL,網站後臺採用freemaker靜態化模版 ...
  • 作者按:《每天一個設計模式》旨在初步領會設計模式的精髓,目前採用 和`python`兩種語言實現。誠然,每種設計模式都有多種實現方式,但此小冊只記錄最直截了當的實現方式 :) 原文地址是: "《每天一個設計模式之命令模式》" 歡迎關註個人技術博客: "godbmw.com" 。每周 1 篇原創技術分 ...
  • 迭代器模式,Iterator,java集合框架內置的一種模式,本文介紹了迭代器模式的起源含義,設計意圖,以及結構形態,並且給出了Java版本的迭代器模式的實現,迭代器模式分為內部迭代和外部迭代,Java集合框架使用的這種形式是比較好的一種方式。 ...
  • 一. Python程式中, 文件的處理步驟是什麼? 二. 文本打開時設置的模式有哪些? 分別代表什麼意思? 三. os模塊中提供的常用文件操作? 四. 代碼實現: 大文件拷貝操作 註意: 不能一次性讀取大文件內容, 容易造成記憶體峰值 五. 代碼實現: 假設一個文件夾中有很多不同格式的文件, 要求: ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...