日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

struts2 jsp跳转action 404_Struts2 学习笔记(三)

發(fā)布時(shí)間:2023/12/19 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 struts2 jsp跳转action 404_Struts2 学习笔记(三) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1. Struts2的攔截器

1.1 攔截器概述

1.1.1 什么是攔截器

  • Interceptor:攔截器,起到攔截Action的作用;
    • Filter:過濾器,過濾從客戶端向服務(wù)器發(fā)送的請求;
    • Interceptor:攔截器,攔截是客戶端對(duì)Action的訪問。更細(xì)粒度化的攔截。
  • Struts2框架核心的功能都是依賴攔截器實(shí)現(xiàn)的;

1.1.2 Struts2的執(zhí)行流程

客戶端向服務(wù)器發(fā)送一個(gè)Action的請求,執(zhí)行核心過濾器(doFilter)方法。在這個(gè)方法中,調(diào)用executeAction()方法,在這個(gè)方法內(nèi)部調(diào)用dispatcher.serviceAction();在這個(gè)方法內(nèi)部創(chuàng)建一個(gè)Action代理,最終執(zhí)行的是Action代理中的execute(),在代理中執(zhí)行的execute方法中調(diào)用ActionInvocation的invoke方法。在這個(gè)方法內(nèi)部遞歸執(zhí)行一組攔截器(完成部分功能),如果沒有下一個(gè)攔截器,就會(huì)執(zhí)行目標(biāo)Action,根據(jù)Action的返回的結(jié)果進(jìn)行頁面跳轉(zhuǎn)。

Struts2攔截器是可插拔的,攔截器是AOP的一種實(shí)現(xiàn)。Struts2攔截器棧就是將攔截器按照一定的順序連接成一條鏈。在訪問被攔截的方法或字段時(shí),Struts2攔截器鏈中的攔截器就會(huì)按照其之前的順序被調(diào)用。

1.2 攔截器入門

1.2.1 搭建Struts2的環(huán)境

1.2.2 編寫攔截器類

編寫一個(gè)類實(shí)現(xiàn)Interceptor接口或者繼承AbstractInterceptor類。

  • Interceptor接口的定義代碼:
public interface Interceptor extends Serializable{void init();// init方法在攔截器被創(chuàng)建之后會(huì)立即被調(diào)用,它在攔截器的生命周期內(nèi)只被調(diào)用一次,可以在該方法中對(duì)相關(guān)資源進(jìn)行初始化;void destory();// destory方法在實(shí)例銷毀之前被調(diào)用,將調(diào)用該方法用來釋放和攔截器相關(guān)的資源,也只被調(diào)用一次;String intercept(ActionInvocation invocation) throws Exception;// 用來添加真正的攔截工作的代碼。它返回一個(gè)字符串作為邏輯視圖。系統(tǒng)根據(jù)返回的字符串跳轉(zhuǎn)到對(duì)應(yīng)的視圖資源。// 該方法的ActionInvocation參數(shù)包含了被攔截的Action的引用,可以通過該參數(shù)的invoke()方法,將控制權(quán)轉(zhuǎn)給下一個(gè)攔截器或者轉(zhuǎn)給Action的execute()方法 }
  • AbstractInterceptor類的定義代碼:
public abstract class AbstractInterceptor implements Interceptor{// 空實(shí)現(xiàn)public void init(){}// 空實(shí)現(xiàn)public void destory() {}public abstract String intercept(ActionInvocation invocation) throws Exception; }
  • 實(shí)例
public class InterceptorDemo1 extends AbstractInterceptor{@Overridepublic String intercept(ActionInvocation invocation) throws Exception{System.out.println("InterceptorDemo1執(zhí)行了...");String obj = invocation.invoke();System.out.println("InterceptorDemo1執(zhí)行結(jié)束了...");} }

1.2.2 對(duì)攔截器進(jìn)行配置

  • 定義攔截器進(jìn)行配置

要想讓攔截器起作用,首先需要對(duì)它進(jìn)行配置,攔截器的配置是在struts.xml文件中完成的,它通常以<interceptor>標(biāo)簽開頭,以</interceptor>標(biāo)簽結(jié)束,定義攔截器的語法如下:

name屬性用來指定攔截器的名稱,class屬性用于指定攔截器的實(shí)現(xiàn)類,有時(shí)在定義攔截器時(shí)需要傳入?yún)?shù),這時(shí)候需要指定<param>標(biāo)簽。name屬性用來指定參數(shù)的名稱,paramValue表示參數(shù)的值。

  • 定義一個(gè)攔截器棧的方式

在實(shí)際開發(fā)過程中,經(jīng)常需要在Action執(zhí)行前同時(shí)執(zhí)行多個(gè)攔截動(dòng)作,這是可以把多個(gè)攔截器組成一個(gè)攔截器棧。在使用時(shí),可以將棧內(nèi)的多個(gè)攔截器當(dāng)成一個(gè)整體來引用。當(dāng)攔截器被附加到一個(gè)Action上時(shí),在執(zhí)行Action之前必須先執(zhí)行攔截器棧中的每一個(gè)攔截器。

2. Struts2的標(biāo)簽庫

對(duì)于一個(gè)MVC框架而言,重點(diǎn)是實(shí)現(xiàn)兩個(gè)部分:業(yè)務(wù)邏輯控制器部分和視圖頁面部分。Struts22作為一個(gè)優(yōu)秀的MVC框架,也把重點(diǎn)放在這兩個(gè)部分。控制器主要由Action來提供支持。而視圖則是由大量的標(biāo)簽來提供支持。

2.1 Struts2標(biāo)簽庫概述

2.1.1 Struts2標(biāo)簽庫概述

在JavaWeb中,Struts2標(biāo)簽庫是一個(gè)比較完善,而且功能強(qiáng)大的標(biāo)簽庫,它將所有標(biāo)簽都統(tǒng)一到一個(gè)標(biāo)簽庫中,從而簡化了標(biāo)簽的使用。它還提供主題和模板的支持,極大地簡化了視圖頁面的代碼編寫,同時(shí)它還提供Ajax的支持,大大豐富了視圖的表現(xiàn)效果。

2.1.2 Struts2標(biāo)簽庫的分類

普通標(biāo)簽主要是在頁面生成時(shí),控制執(zhí)行的流程;UI標(biāo)簽則是以豐富而可復(fù)用的HTML文件來顯示數(shù)據(jù)。普通標(biāo)簽又分為控制標(biāo)簽和數(shù)據(jù)標(biāo)簽,控制標(biāo)簽用來完成條件邏輯、循環(huán)邏輯的控制,也可用來做集合的操作。數(shù)據(jù)標(biāo)簽用來輸出后臺(tái)的數(shù)據(jù)和完成其他數(shù)據(jù)訪問功能。UI標(biāo)簽則分為表單標(biāo)簽、非表單標(biāo)簽和Ajax標(biāo)簽。表單標(biāo)簽主要用來生成HTML頁面中的表單元素,非表標(biāo)簽主要用來生成HTML的div標(biāo)簽及輸出Action中封裝的信息等,Ajax標(biāo)簽主要用來提供Ajax技術(shù)支持。

2.2 Struts2標(biāo)簽的使用

Struts2標(biāo)簽庫被定義在struts.tags.tld文件中。要是用struts標(biāo)簽庫,一般只要在JSP文件中使用taglib指令導(dǎo)入Struts2標(biāo)簽庫:

<%@ taglib profix="s" uri="/struts-tags" %>

2.2.1 控制標(biāo)簽

  • <s:if>、<s:elseif>、 <s:else>

  • <s:iterator>

2.2.2 數(shù)據(jù)標(biāo)簽

  • <s:property>

該標(biāo)簽用于輸出指定的值,通常輸出的是value屬性指定的值。

  • id:可選屬性,指定該元素的標(biāo)識(shí);
  • default:可選屬性,如果要輸出的屬性為null,則顯示default屬性的指定值;
  • escape:可選屬性,指定是否忽略HTML代碼;
  • value:可選屬性,制定需要輸出的屬性值,如果沒有指定該屬性,則默認(rèn)輸出ValueStack棧頂?shù)闹怠?/li>
    • <s:a>標(biāo)簽

    標(biāo)簽用于構(gòu)造HTML頁面中的超鏈接。

    屬性 | 是否必須 | 類型 | 描述 -- | -- | -- | -- action | 否 | String | 指定超鏈接Action地址 href | 否 | String | 超鏈接地址 namespace | 否 | String | 指定Action地址 id | 否 | String | 指定其id method | 否 | String | 指定Action調(diào)用方法

    <s:a href="連接地址"></s:a> <s:a namespace="" action="">superp1peng.xyz</s:a>
    • <s:debug>標(biāo)簽

    該標(biāo)簽用于在調(diào)試程序時(shí)輸出更多的調(diào)試信息,主要輸出ValueStack和StackContext中的信息。

    2.2.3 Struts2的模板的使用

    Struts2的UI標(biāo)簽都是基于模板的。常見的主題有四種:simple、XHTML、css_xhtml、Ajax。通常,通過設(shè)置struts.ui.theme,來改變默認(rèn)主題。

    struts.xml文件中: <constant name="struts.ui.theme" value="simple" /> 或者struts.properties struts.ui.theme = simple

    2.2.4 Struts2的表單標(biāo)簽

    • 表單標(biāo)簽的公共屬性:

    • <s:form>標(biāo)簽

    標(biāo)簽用來呈現(xiàn)HTML語言中的表單元素,其中一般還會(huì)包括其他表單元素,textfield,radio等;

    • <s:submit>標(biāo)簽

    • 其他一些標(biāo)簽
    <s:textfield> <s:textarea><s:password><s:radio><s:checkboxlist><s:select><s:hidden><s:reset>

    總結(jié)

    以上是生活随笔為你收集整理的struts2 jsp跳转action 404_Struts2 学习笔记(三)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。