1. 程式人生 > >【Struts2(四)】控制器&其他OGNL標籤&攔截器

【Struts2(四)】控制器&其他OGNL標籤&攔截器

1.2 Struts2的攔截器

1.2.1 攔截器概述

1.2.1.1 什麼是攔截器

Interceptor:攔截器,起到攔截Action的作用。

      Filter:過濾器,過濾從客戶端向伺服器傳送的請求。

      Interceptor:攔截器,攔截是客戶端對Action的訪問。更細粒度化的攔截。(攔截Action中的具體的方法)。

Struts2框架核心的功能都是依賴攔截器實現。

1.2.1.2 Struts2的執行流程

客戶端向伺服器傳送一個Action的請求,執行核心過濾器(doFilter)方法。在這個方法中,呼叫executeAction()方法,在這個方法內部呼叫dispatcher.serviceAction();在這個方法內部建立一個Action代理,最終執行的是Action代理中的execute(),在代理中執行的execute方法中呼叫ActionInvocation的invoke方法。在這個方法內部遞迴執行一組攔截器(完成部分功能),如果沒有下一個攔截器,就會執行目標Action,根據Action的返回的結果進行頁面跳轉。

1.2.2 攔截器入門

1.2.2.1 搭建Struts2的環境

1.2.2.2 編寫攔截器類

編寫一個類實現Interceptor介面或者繼承AbstractInterceptor類。

1.2.2.3 對攔截器進行配置

定義攔截器進行配置

定義一個攔截器棧的方式

1.3 CRM的許可權攔截器

1.3.1 實現使用者登入的功能

1.3.1.1 建立表和實體

建立表

CREATE TABLE `sys_user` (
  `user_id` bigint(32) NOT NULL AUTO_INCREMENT COMMENT '使用者id',
  `user_code` varchar(32) NOT NULL COMMENT '使用者賬號',
  `user_name` varchar(64) NOT NULL COMMENT '使用者名稱稱',
  `user_password` varchar(32) NOT NULL COMMENT '使用者密碼',
  `user_state` char(1) NOT NULL COMMENT '1:正常,0:暫停',
  PRIMARY KEY (`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

建立實體

1.3.1.2 提交資料到Action

1.3.1.3 Action —> Service —> DAO

編寫Service

 編寫DAO

1.3.1.4 根據結果進行頁面跳轉

1.3.2 實現許可權攔截器

1.3.2.1 編寫許可權攔截器

1.3.2.2 配置攔截器

 

 1.4 Struts2的標籤庫

1.4.1 通用標籤庫

1.4.1.1 判斷標籤

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

<s:iterator>

其他常用的標籤

      <s:property/>

      <s:debug/>

      <s:date />----在頁面上進行日期格式化。

1.4.2 UI標籤庫(方便資料回顯)