一、struts2完整流程的邏輯(整體的概述)
首先,用戶在地址欄中輸入你的項目訪問路徑,然後這個請求會發送到服務器,之後服務器發現在web.xml中配置了一個filter過濾器,並且這個過濾器需要對所有的訪問進行過濾,在struts搭建之中,首先就要配置一個過濾器,所以我們可以把這個struts看成是一個過濾器,用戶的所有請求都需要經過struts進行分配。當服務器接受到用戶請求之後就吧這個請求傳給struts,具體的處理是依靠 這個web.xml中配置的類,具體怎麼處理我們可以不要明白。之後接受到用戶的請求,struts.xml進行處理,action標簽中name屬性為用戶訪問你的項目時候輸入的指定名字,然class屬性是定義這個name請求需要進行處理的類,也就是action類,然method是指定使用這個類中的某一個方法。之後調用完這個方法。之後返回一個值,然後在struts.xml指定根據所返回的字符串進行跳轉頁面。
具體如下:
二、struts2搭建
1、導入相關的jar包:
①:首先從官網下載 struts2,官方下載:http://struts.apache.org/download.cgi#struts252,選擇相適合的版本即可。
②:解壓之後,找到文件夾lib,其中只有下面的包需要導入你的項目中:
2、web.xml配置文件:
①配置struts2需要使用的filter,使用org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter作為處理的類(filter-class)。
②具體寫法:
3、struts.xml配置文件:
①首先在src目錄下新建一個xml文件,即struts.xml配置文件
②然後在struts2.xml的配置文件頂部中聲明dtd規范,即文檔類型定義(document type definition),如下:
③其次,配置struts2環境:
具體寫法:
⑴.在struts標簽中定義一個package標簽,設置name和extends屬性,name屬性值為自定義的名字,extends值需要為“struts-defaul”;
⑵.在package標簽中定義一個action標簽,設置屬性name和class和method;
name屬性設置的是在URL中訪問項目的路徑名字;class設置的是業務邏輯處理的類(包名.類名);
method屬性設置的是需要進行訪問的這個類中的指定的方法(寫上方法名即可),如果沒有設置method屬性的值,那默認調用execute()。
⑶在action標簽中定義result標簽,設置name屬性;
屬性值為action標簽中method屬性中的方法的返回值(這些方法的返回值均為String);
result標簽之間為需要跳轉的頁面。
具體如下:
4、action處理類
①.定義一個class,並且繼承ActionSupport,在這個方法中定義一些成員變量和方法;
⑴.成員變量一般用來保存數據,或者是等待注入的實例(當spring和struts2結合使用時候,使用屬性注入的實例的方法),其中成員變量保存的數據可以是用戶請求傳過來的參數還可以是從數據庫中curd獲取到的集合、信息。
⑵.這個類中定義的方法的返回值都是String類型,返回的字符串和struts2.xml中的配置相匹配。
三、struts2簡單小結:
⑴、是一個用於web應用程序開發的框架,本質上相當於一個servlet。
⑵、struts2是由opensymphony開發的webwork2和struts1的結合。struts1是基於model2 (MVC)之上的進一步的完善。
⑶、struts2實現了不需要手動寫獲取參數(需要設置一個屬性,設置getter、setter方法);不需要手動寫跳轉代碼(在struts.xml配置文件中配置);並且實現了數據庫和JAVA類中的屬性類型轉換。
⑷、struts中的分包:
①action包:頁面的跳轉和參數的傳遞和接收。
②services包:業務邏輯處理。例如:對從數據庫中取出來的數據需進行進一步的判斷用戶注冊時長。
③dao包:對數據庫的curd操作。但是不對數據進行進一步的操作。
④entity包:存放實體類。
⑤util包:工具包,例如:數據庫連接。