段永良,卜言彬,高 露
(中國(guó)傳媒大學(xué) 南廣學(xué)院,江蘇 南京 211172)
將廣播電視發(fā)射網(wǎng)的信號(hào)數(shù)據(jù)上傳至服務(wù)器,進(jìn)行有效存儲(chǔ)從而實(shí)現(xiàn)數(shù)據(jù)的妥善管理。根據(jù)所存儲(chǔ)的數(shù)據(jù)進(jìn)行對(duì)比,判斷其是否符合標(biāo)準(zhǔn)、是否存在干擾等等。
廣播電視發(fā)射網(wǎng)用于發(fā)射廣播電視信號(hào),信號(hào)數(shù)據(jù)應(yīng)該有專屬的工具來(lái)存儲(chǔ)并處理,因此,開發(fā)一個(gè)Web應(yīng)用類型的管理系統(tǒng)很有必要,通過(guò)這個(gè)應(yīng)用實(shí)現(xiàn)信號(hào)數(shù)據(jù)的完整封裝并分發(fā),從而使得廣播電視發(fā)射網(wǎng)信息管理走向智能、走向高效、走向簡(jiǎn)單直觀。
傳統(tǒng)的廣播電視發(fā)射網(wǎng)信號(hào)數(shù)據(jù)都由人工進(jìn)行管理,繁瑣復(fù)雜,開發(fā)Web應(yīng)用來(lái)管理這些數(shù)據(jù)會(huì)使過(guò)程簡(jiǎn)單,結(jié)果直觀。因?yàn)橛?jì)算機(jī)的界面適用于和人交互,所以設(shè)計(jì)的界面會(huì)顯得尤其人性化,直觀的同時(shí)能夠很快地進(jìn)行數(shù)據(jù)的分析處理。選擇開發(fā)JavaWeb應(yīng)用實(shí)現(xiàn)這個(gè)數(shù)據(jù)管理系統(tǒng)很容易讓人接受和理解,JavaWeb可采用的請(qǐng)求響應(yīng)式的數(shù)據(jù)查詢操作方式更顯完美。另外,運(yùn)用計(jì)算機(jī)的存儲(chǔ)管理使得管理過(guò)程更高效、更安全[1]。
廣播電視發(fā)射網(wǎng)信號(hào)數(shù)據(jù)管理系統(tǒng),基于B/S模式,以請(qǐng)求響應(yīng)式的方式,記錄廣播電視發(fā)射網(wǎng)信息、廣播電視發(fā)射臺(tái)信息、發(fā)射機(jī)信息、信號(hào)信息,對(duì)這些信息可進(jìn)行相應(yīng)的增加、刪除、修改、查詢操作,通過(guò)系統(tǒng)的管理,最終實(shí)現(xiàn)以下目標(biāo):對(duì)廣播電視發(fā)射網(wǎng)信息進(jìn)行增刪改查;對(duì)廣播電視發(fā)射臺(tái)信息進(jìn)行操作管理;對(duì)每個(gè)廣播電視發(fā)射臺(tái)下所對(duì)應(yīng)的發(fā)射機(jī)的信息進(jìn)行操作管理;對(duì)每臺(tái)發(fā)射機(jī)的發(fā)射的信號(hào)信息進(jìn)行操作管理;對(duì)用戶進(jìn)行管理。
廣播電視發(fā)射網(wǎng)工作人員:通過(guò)注冊(cè)獲得一個(gè)賬號(hào),以此賬號(hào)可以登錄到系統(tǒng)中,進(jìn)行數(shù)據(jù)的普通查詢操作等等。
系統(tǒng)管理員:登錄后進(jìn)入后臺(tái)管理界面,對(duì)廣播電視發(fā)射網(wǎng)工作人員進(jìn)行有效管理,對(duì)系統(tǒng)的數(shù)據(jù)信息進(jìn)行管理,實(shí)施刪除、修改、增加、查詢等。
主要介紹開發(fā)環(huán)境及主要技術(shù)、數(shù)據(jù)庫(kù)、廣播電視發(fā)射網(wǎng)模塊、廣播電視發(fā)射臺(tái)模塊、發(fā)射機(jī)模塊、信號(hào)模塊、用戶模塊、管理中心模塊[2]。
編輯器->Eclipse(Luna),數(shù)據(jù)庫(kù)->Oracle&&sqlDeveloper,語(yǔ)言->Jave,前端->Html5、JavaScript、jQuery,驗(yàn)證->Ajax,后端->三大框架SSH(Hibernate,Struts,Spring),三層架構(gòu)模式,面向接口編程,spring依賴注入等。
三大框架:Spring+Struts+Hibernate,Spring引入各個(gè)組件的對(duì)象并且進(jìn)行注入;Struts的作用相當(dāng)于servlet用于處理請(qǐng)求并實(shí)現(xiàn)頁(yè)面跳轉(zhuǎn),而Hibernate就是對(duì)數(shù)據(jù)庫(kù)的底層操作數(shù)據(jù)的增刪改查。
三層架構(gòu):從下往上依次是Dao數(shù)據(jù)層,Service業(yè)務(wù)邏輯層,MVC顯示層,通過(guò)這個(gè)模式實(shí)現(xiàn)整個(gè)項(xiàng)目的架構(gòu)搭建。這里的MVC是指model:JavasBean類,view:jsp/html,controller:控制器,這里就是struts,控制頁(yè)面的跳轉(zhuǎn)。
面向接口編程和依賴注入:這兩個(gè)技術(shù)都是Spring框架帶來(lái)的好處之一,Spring是個(gè)輕量級(jí)的框架,管理著對(duì)象的產(chǎn)生以及對(duì)象與對(duì)象之間的關(guān)系,對(duì)象的產(chǎn)生是注入的,并不關(guān)心對(duì)象是如何產(chǎn)生的,只要獲取對(duì)象即可;面向接口編程,使得重點(diǎn)都放在功能上,不用關(guān)心具體的實(shí)現(xiàn)類是哪一個(gè)[3]。
數(shù)據(jù)庫(kù)有6個(gè)表,每個(gè)表有表名、字段名、屬性。
廣播電視發(fā)射網(wǎng)信息表有6個(gè)字段,廣播電視發(fā)射臺(tái)信息表有4個(gè)字段,發(fā)射機(jī)信息表有4個(gè)字段,信號(hào)信息表有6個(gè)字段,用戶信息表有8個(gè)字段,管理員信息表有6個(gè)字段。數(shù)據(jù)庫(kù)用Oracle,Sys是數(shù)據(jù)庫(kù)的超級(jí)用戶,數(shù)據(jù)庫(kù)內(nèi)很多重要的東西(數(shù)據(jù)字典表、內(nèi)置包、靜態(tài)數(shù)據(jù)字典視圖等)都屬于這個(gè)用戶,sys用戶必須以sysdba身份登錄。
(1)數(shù)據(jù)模型建立
在model包中新建一個(gè)關(guān)于station廣播電視發(fā)射網(wǎng)(以下簡(jiǎn)稱發(fā)射網(wǎng))的類,其中包括發(fā)射網(wǎng)編號(hào)、名稱、地址經(jīng)、緯度,這些都是station類的屬性,然后使用相應(yīng)的get和set方法使用屬性,屬性定義為private私有類型,使得屬性只屬于類的各個(gè)對(duì)象,然后每產(chǎn)生一個(gè)對(duì)象就會(huì)在數(shù)據(jù)庫(kù)中形成相應(yīng)的一條數(shù)據(jù)記錄。因?yàn)槭褂肙RM技術(shù)來(lái)建表,所以對(duì)應(yīng)的類通過(guò)注解@Entity實(shí)體,形成表格數(shù)據(jù)形式,并注解@Table(name=”t_name”)形成表;另外,表格中每形成一條記錄都是使用id自增長(zhǎng)的格式,所以Id要注解為主鍵@Id,并且注解上:@GeneratedValue(stratgy=GeneratedType.AUTO)實(shí)現(xiàn)主鍵自增長(zhǎng)。
(2)框架配置
手動(dòng)創(chuàng)建dao層hibernate對(duì)象,配置一個(gè)hibernate.cfg.xml(這個(gè)配置文件起到初始化的作用),使得初始化類在插入對(duì)象時(shí)操作底層數(shù)據(jù)庫(kù),在后面的具體操作中就不會(huì)使用這個(gè)配置了,因?yàn)橐肓薙pring,所以這個(gè)配置會(huì)在Spring的配置文件中實(shí)現(xiàn)。
(3)開發(fā)過(guò)程
分為幾個(gè)小部分:發(fā)射網(wǎng)、廣播電視發(fā)射臺(tái)(以下簡(jiǎn)稱發(fā)射臺(tái))、廣播電視發(fā)射機(jī)(以下簡(jiǎn)稱發(fā)射機(jī))、廣播電視發(fā)射信號(hào)(以下簡(jiǎn)稱信號(hào)),分別對(duì)這幾個(gè)部分進(jìn)行對(duì)應(yīng)的技術(shù)實(shí)現(xiàn)。通過(guò)接收到發(fā)射網(wǎng)的信號(hào)數(shù)據(jù),確定發(fā)射網(wǎng)的編號(hào)、名稱、地理坐標(biāo),因此建表的時(shí)候需要對(duì)發(fā)射網(wǎng)這些屬性進(jìn)行描述,將這些屬性封裝到發(fā)射網(wǎng)對(duì)象中從而實(shí)現(xiàn)在數(shù)據(jù)庫(kù)的存儲(chǔ)、修改、刪除、添加。
項(xiàng)目中新建com.model的包,這個(gè)包專門用來(lái)存放基本類模型。新建一個(gè)發(fā)射網(wǎng)類Station.java,關(guān)于發(fā)射網(wǎng)的屬性:station_id序號(hào)、addressCode編號(hào)、addressName名稱、latitude經(jīng)度、logitude緯度,這些屬性只屬于發(fā)射網(wǎng)本身,設(shè)置為private類型,只能通過(guò)方法進(jìn)行使用,因此要給這些屬性添加getXX和setXX方法。然后,需要有空構(gòu)造函數(shù)和帶參數(shù)的構(gòu)造函數(shù),因?yàn)槊慨?dāng)要在數(shù)據(jù)庫(kù)中形成一條新紀(jì)錄都必須要構(gòu)造一個(gè)新對(duì)象。
(4)手動(dòng)建表并初始化
新建一個(gè)初始化包,建立一個(gè)InitStation類,因?yàn)楝F(xiàn)在是通過(guò)手動(dòng)操作hibernate,所以需要每一個(gè)過(guò)程都描述清楚,每次需要對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作的時(shí)候都要建立會(huì)話工廠,開啟事務(wù),打開事務(wù),然后進(jìn)行增刪改操作,最后執(zhí)行完后進(jìn)行事務(wù)關(guān)閉。
(5)引入Spring框架
經(jīng)過(guò)初始化后,數(shù)據(jù)庫(kù)可以成功連接,現(xiàn)在使用spring來(lái)引入Hibernate的操作對(duì)象,并由spring管理struts對(duì)象,控制邏輯的跳轉(zhuǎn)。使用Spring來(lái)管理生成對(duì)象并控制對(duì)象與對(duì)象之間的關(guān)系,對(duì)象的產(chǎn)生和屬性設(shè)置通過(guò)Spring的IOC(控制反轉(zhuǎn))和DI(依賴注入)實(shí)現(xiàn)。
(6)添加發(fā)射網(wǎng)
采用從前往后的開發(fā)模式,即從頁(yè)面->action->service->dao層。
新建add_station.jsp頁(yè)面,提交到stationAction中,并且指定為add方法,用的是post方法,表單中使用一系列的input控件標(biāo)簽,給每個(gè)控件一個(gè)name。
新建action包,建立一個(gè)StationAction.java類。該類繼承自ActionSupport類,這個(gè)action要處理前端提交過(guò)來(lái)的數(shù)據(jù)信息,用strut可以實(shí)現(xiàn)自動(dòng)獲取客戶端提交的請(qǐng)求對(duì)象數(shù)據(jù)。其實(shí)現(xiàn)過(guò)程是,根據(jù)約定大于配置的規(guī)則,前端頁(yè)面中配置的input標(biāo)簽的name,在action中設(shè)置name的屬性,根據(jù)需要給定set方法,用set方法將name的值設(shè)置到action中的屬性中去,get方法則用于后端將數(shù)據(jù)返回到頁(yè)面前端。
在StationAction中的類名上注解@Controller,@Scope,這是因?yàn)閟pring在托管struts的對(duì)象,注解這個(gè)后會(huì)在啟動(dòng)時(shí)掃描這個(gè)形成對(duì)應(yīng)的action對(duì)象。
添加屬性,屬性名和前端的input標(biāo)簽的name一致,并給出相應(yīng)的get和set方法。
添加add方法,這個(gè)方法名要對(duì)應(yīng)到前面提交的方法名參數(shù),在這個(gè)方法中有四個(gè)參數(shù),addressCode, addressName, latitude, logitude,這些參數(shù)同樣遵循約定大于配置,和model包中的station類的屬性名一致,最起碼類型是一致的,因?yàn)椋到y(tǒng)的宗旨就是通過(guò)操作對(duì)象來(lái)實(shí)現(xiàn)數(shù)據(jù)的增刪改查,所以添加實(shí)現(xiàn)的就是將前端提交的屬性通過(guò)set到對(duì)象中,將這個(gè)對(duì)象封裝起來(lái),從而將對(duì)象存放到數(shù)據(jù)庫(kù)中去形成一條記錄。
上述添加方法中用到了service層的service對(duì)象,因?yàn)閟ervice層是邏輯業(yè)務(wù)層,所有的轉(zhuǎn)換、業(yè)務(wù)邏輯運(yùn)算等等都是放在這一層的,就是通過(guò)在stationAction中引入對(duì)Service對(duì)象的調(diào)用,從而實(shí)現(xiàn)業(yè)務(wù)運(yùn)算,所以現(xiàn)在進(jìn)入到service層,新建service包,建立一個(gè)StationService.java類,在這個(gè)類中進(jìn)行一些業(yè)務(wù)邏輯的轉(zhuǎn)換。然而,因?yàn)樾枰趕ervice中建立action中對(duì)應(yīng)的多個(gè)方法,需要實(shí)現(xiàn)的功能就會(huì)很多,所以StationService實(shí)際上是個(gè)interface,即接口。
新建service接口的實(shí)現(xiàn)類,放在ServiceImpl包中,類名StationServiceImpl,并且要實(shí)現(xiàn)StationService接口。
上述用到的stationDao對(duì)象,是通過(guò)StationDao接口得到的,建立dao層的包,其中新建StationDao接口,因?yàn)檫@也是個(gè)接口,所以只需要在接口中添加上service實(shí)現(xiàn)時(shí)用到的方法即可。
建一個(gè)dao的實(shí)現(xiàn)類的包DaoImpl,新建一個(gè)StaionDao的實(shí)現(xiàn)類,StationDaoImpl類實(shí)現(xiàn)StationDao接口。再建立一個(gè)成功添加的頁(yè)面,添加一個(gè)successs即可。
(7)查詢Station并形成列表
同樣使用從前向后的開發(fā)模式,新建station_list.jsp頁(yè)面。以表格顯示出來(lái),表格中用一個(gè)iterator的遍歷,將action中封裝的list取出來(lái),這里用到了分頁(yè)技術(shù)。這里有個(gè)注意點(diǎn),因?yàn)楝F(xiàn)在取的是action中的對(duì)象值,而后臺(tái)的數(shù)據(jù)都是放在棧中的,取值的時(shí)候可以不用“#”,而如果是取頁(yè)面上下文的數(shù)據(jù)時(shí)必須要用“#”。
(8)刪除station數(shù)據(jù)
同樣使用從前向后的方式,因?yàn)樵谇懊媸褂煤竺娼M件中的對(duì)象或方法對(duì)象時(shí)會(huì)報(bào)錯(cuò),從而根據(jù)報(bào)錯(cuò)的這個(gè)機(jī)制在后面組件中對(duì)應(yīng)的地方添加方法的實(shí)現(xiàn)即可,這種顯示提示的方式給開發(fā)帶來(lái)了很大的便利。
(9)修改Station對(duì)象信息
和刪除的方法類似,不需要建頁(yè)面,在station_list.jsp中每條數(shù)據(jù)后面添加修改的超鏈接,超鏈接的請(qǐng)求是stationAction中的update方法。
一個(gè)發(fā)射網(wǎng)擁有多個(gè)發(fā)射臺(tái),其對(duì)應(yīng)關(guān)系是一對(duì)多的。發(fā)射臺(tái)和station之間存在著聯(lián)系,每一個(gè)發(fā)射臺(tái)對(duì)應(yīng)在特定的station下面,以station的id為參照線,按照這個(gè)參照線進(jìn)行發(fā)射臺(tái)的增、刪、改、查。另外,需要補(bǔ)充的是每個(gè)發(fā)射臺(tái)有自己的名稱,每個(gè)名稱對(duì)應(yīng)到一個(gè)編號(hào),于是根據(jù)這個(gè)編號(hào)可以比較方便地進(jìn)行查找發(fā)射臺(tái)的具體信息,因此,發(fā)射臺(tái)有名稱和編號(hào)兩個(gè)屬性以及一個(gè)id。
(1)創(chuàng)建發(fā)射臺(tái)模型
1)model包中建立Machine類模型;2)Mechine發(fā)射臺(tái)的初始化。
(2)添加發(fā)射臺(tái)
和添加發(fā)射網(wǎng)一樣采用從前到后的開發(fā)模式,點(diǎn)擊添加發(fā)射臺(tái),跳出添加頁(yè)面,add_machine.jsp(新建的頁(yè)面,通過(guò)表單形式,一系列的input,注意這時(shí)候會(huì)將父節(jié)點(diǎn)就是Station的id傳過(guò)來(lái),因此這個(gè)id必須被隱形的傳到action中,用input,只是設(shè)置成hidden類型了),輸入發(fā)射臺(tái)編碼和名稱即可提交,成功后到數(shù)據(jù)庫(kù)查詢。
(3)查看發(fā)射臺(tái)列表
1)添加查看超鏈接,連接到新頁(yè)面machine_list.jsp,并且將station_id傳過(guò)來(lái),即根據(jù)station來(lái)查找其下對(duì)應(yīng)的發(fā)射臺(tái);2)新頁(yè)面machine_list.jsp,即發(fā)射臺(tái)列表,頁(yè)面同樣是采用從action中獲取的page對(duì)象的list屬性得到machine的每一個(gè)屬性并顯示出來(lái);3)machineAction中添加getMachineList方法,同樣給出頁(yè)數(shù)和條數(shù),并將結(jié)果對(duì)象返回到前端中;4)MachineService接口中添加getAllStation方法,傳遞頁(yè)數(shù)和條數(shù);5)MachineDao中添加getAllStationCount和getMachineList方法;6)配置struts請(qǐng)求成功后的跳轉(zhuǎn)路徑,只需再配置一個(gè)result,給出跳轉(zhuǎn)的頁(yè)面machine_list.jsp。
(4)刪除發(fā)射臺(tái)
根據(jù)列表給出的每一條machine對(duì)應(yīng)的id,從而到后端數(shù)據(jù)庫(kù)中找到相應(yīng)的對(duì)象,然后進(jìn)行對(duì)象的刪除;MachinAction中添加delete方法,調(diào)用machineService方法形成對(duì)象后刪除;MachineService實(shí)現(xiàn)類中先將參數(shù)轉(zhuǎn)型,然后用dao層getMachineById找到對(duì)象進(jìn)行刪除;MachineDao接口中添加deleteMahchine和getMachineById方法;配置struts.xml,同樣是operate_ok.jsp頁(yè)面,在數(shù)據(jù)庫(kù)中查詢記錄被刪除即可。
(5)修改發(fā)射臺(tái)信息
修改信息的過(guò)程基本上同station發(fā)射網(wǎng)信息修改過(guò)程,其基本想法就是將原來(lái)的屬性數(shù)據(jù)傳遞到后端,根據(jù)給出的父節(jié)點(diǎn)machine_id將父對(duì)象找出來(lái),然后形成一個(gè)新的空的machine,將新的屬性set到machine中,并set一個(gè)新的station父對(duì)象給machine,然后在數(shù)據(jù)庫(kù)中把這個(gè)對(duì)象save到數(shù)據(jù)庫(kù)中。
一個(gè)發(fā)射臺(tái)內(nèi)擁有多臺(tái)發(fā)射機(jī)設(shè)備,這些發(fā)射機(jī)設(shè)備有各種屬性,被各個(gè)發(fā)射臺(tái)所關(guān)聯(lián),一個(gè)發(fā)射臺(tái)可以控制多臺(tái)發(fā)射機(jī)。
(1)建立sender模型類;(2)初始化sender;(3)添加設(shè)備:頁(yè)面中添加超鏈接,action中添加請(qǐng)求添加的方法add,并且action中要注解上@Controller;(4)刪除設(shè)備:同上述刪除發(fā)射臺(tái)一樣,前端傳來(lái)節(jié)點(diǎn)的id,根據(jù)這個(gè)id找出對(duì)應(yīng)的對(duì)象,然后刪除這個(gè)對(duì)象即可;(5)修改設(shè)備信息:將原來(lái)信息的值全都傳到后端,然后根據(jù)這個(gè)id找出對(duì)象,給對(duì)象重新設(shè)置屬性值,再將對(duì)象update到數(shù)據(jù)庫(kù)即可[4]。
這里的信號(hào)是指分布在廣播電視覆蓋區(qū)內(nèi)各測(cè)試點(diǎn)的接收信號(hào),信號(hào)強(qiáng)度即為覆蓋場(chǎng)強(qiáng)。對(duì)于信號(hào)模塊,開發(fā)過(guò)程與sender和machine原理一致,不同的是信號(hào)的參數(shù)會(huì)比較多,有場(chǎng)強(qiáng)、頻率、接收時(shí)間、類型(廣播、電視)。
(1)添加信號(hào)
1)建立信號(hào)模型:注解成Entity和Table,準(zhǔn)確地形成對(duì)應(yīng)的數(shù)據(jù)庫(kù)表格。配置hibernate.cfg.xml,掃到這個(gè)類形成表格。初始化時(shí),在id為61的Sender下建立一系列信號(hào),將id為61的sender取出來(lái)set到signal對(duì)象中,最后save,到數(shù)據(jù)庫(kù)中驗(yàn)證,找到記錄。2)添加信號(hào)功能:建立一個(gè)頁(yè)面,在其中輸入各種信號(hào)屬性數(shù)據(jù),然后提交,以表單的形式請(qǐng)求到SignalAction的add方法,add方法中會(huì)調(diào)用SignalServeice的add相應(yīng)的方式,并在SignalServiceImpl實(shí)現(xiàn)類中得以實(shí)現(xiàn),再對(duì)Dao層方法調(diào)用,實(shí)現(xiàn)save。
(2)獲取信號(hào)列表
獲取信號(hào)列表,同樣用的是page對(duì)象封裝一切的屬性,包括信號(hào)的list,在頁(yè)面中取出對(duì)應(yīng)的屬性值即可,action中添加請(qǐng)求的方法,然后在service中處理具體的請(qǐng)求過(guò)程,最后由dao層來(lái)進(jìn)行數(shù)據(jù)的分頁(yè)查詢與顯示:
(3)刪除信號(hào)
由前端提交過(guò)來(lái)的id,找出相應(yīng)id的signal對(duì)象,然后將這個(gè)對(duì)象從數(shù)據(jù)庫(kù)中刪除。
這個(gè)模塊是為發(fā)射網(wǎng)的用戶而設(shè)計(jì)的,主要設(shè)計(jì)了注冊(cè)和登錄功能。創(chuàng)建用戶的模型,用戶的action,service和dao,同樣要進(jìn)行初始化,驗(yàn)證連接是否正確。
(1)注冊(cè)
register_jsp注冊(cè)頁(yè)面,以表單方式進(jìn)行提交,提交至請(qǐng)求userAction的register方法,其實(shí),register就是在做用戶添加功能,在這部分關(guān)鍵是只要將屬性封裝到user對(duì)象中即可,然后dao層save對(duì)象[5]。
(2)登錄
用表單將用戶名和密碼提交至后臺(tái),根據(jù)這兩個(gè)信息到數(shù)據(jù)庫(kù)中查找是否有這個(gè)對(duì)象的存在,若有計(jì)數(shù)大于0,則登錄成功,如果沒有則說(shuō)明用戶不存在,因此要做的工作是重新注冊(cè)然后進(jìn)行登錄。
(3)查詢信息
通過(guò)首頁(yè)的導(dǎo)航欄選擇進(jìn)入查詢程序,可以查看發(fā)射網(wǎng)、發(fā)射臺(tái)、發(fā)射機(jī)、信號(hào)等具體的信息,還能夠通過(guò)條件進(jìn)行查詢。
(4)退出
退出時(shí),只需要將對(duì)應(yīng)鏈接到的請(qǐng)求方法中session失效即可。
每個(gè)模塊的管理是建立在上述模塊每個(gè)功能實(shí)現(xiàn)的基礎(chǔ)上,在后臺(tái)通過(guò)將這些模塊的增、刪、改、查進(jìn)行組合。
(1)各模塊管理
各模塊信息添加、刪除、修改、查詢,通過(guò)上述模塊的各種操作來(lái)實(shí)現(xiàn)。
(2)用戶管理
對(duì)用戶進(jìn)行添加、刪除、查詢、列表。
傳統(tǒng)的設(shè)計(jì)思路是先建立數(shù)據(jù)存儲(chǔ)的表格,建立數(shù)據(jù)對(duì)象的類模型,通過(guò)前端提交過(guò)的客戶端請(qǐng)求,調(diào)用業(yè)務(wù)處理邏輯,從而實(shí)現(xiàn)對(duì)數(shù)據(jù)的增、刪、改、查;而該系統(tǒng)中使用三大框架SSH構(gòu)建了整個(gè)流程,省略了先建表的過(guò)程,顯得非常清晰,易于讓人接受。其實(shí),不管是用上述兩種方式的哪一種方式進(jìn)行開發(fā),其實(shí)質(zhì)都是一個(gè)就是根據(jù)屬性來(lái)封裝對(duì)象,只不過(guò)前者是對(duì)數(shù)據(jù)操作,后者是對(duì)對(duì)象操作,這是兩者最根本的區(qū)別[6]。使用三大框架、三層架構(gòu)、面向接口編程和依賴注入技術(shù)構(gòu)建廣播電視發(fā)射網(wǎng)信息管理系統(tǒng),簡(jiǎn)單、方便、實(shí)用。系統(tǒng)運(yùn)行正常,數(shù)據(jù)精確,方便快捷,穩(wěn)定可靠,省時(shí)省力,具有很高的推廣價(jià)值。