撩課-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
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...