周紹景 華德志 應杰 潘宏斌 楊正元
摘 要:隨著互聯網的不斷發展,軟件平臺也不斷增加。平臺用戶不在局限于軟件的使用效率,個性化服務也逐步變得重要。利用JSP開發技術和SQL Server數據庫技術設計實現的軟件自定義系統,更好地為用戶提供了個性化服務。
關鍵詞:軟件平臺;個性化服務;前端自定義
中圖分類號:TP311.52 文獻標識碼:A 文章編號:1671-2064(2018)15-0023-02
目前軟件平臺的大幅增加,用戶對平臺的要求不僅是平臺應用的穩定性和實用性,還希望有選擇性。實現軟件應用的自定義可增加平臺多樣性[1],使用戶擁有“個性化”服務[2]。用戶能夠根據喜好添加或刪除軟件應用進行自定義。
1 需求分析
軟件自定義是用戶根據個人喜好添加或刪除軟件服務模塊的過程。
1.1 視圖需求
自定義界面視圖需要根據用戶對個人應用的修改而變化。站點利用Cookie儲存數據[3],JS獲取Cookie中數據對頁面做出相應改變。用戶方面的視圖需求包括非注冊用戶視圖與注冊用戶視圖兩個方面,二者的區別在于非注冊用戶只能將數據儲存到Cookie中來獲取,而注冊用戶既能將數據儲存到Cookie中獲取,也能將數據儲存到服務器中獲取。管理員與注冊用戶相同,修改應用插件數據既能儲存到Cookie中獲取[4],也能儲存到服務端獲取。
1.2 功能需求
非注冊用戶訪問站點進行應用的自定義時,通過Cookie存儲游客的自定義數據,而登陸用戶訪問站點自定義應用時將自定義數據儲存到服務端,同時將數據同時存儲到Cookie中以便記錄用戶偏好設置以及二次使用,業務流程如圖1所示。
2 軟件自定義實現
2.1 視圖實現
根據試圖需求,首先創建存儲應用數據的Cookie,主要代碼:
Cookie cookies[]=request.getCookies()
Cookie c=null
for(int i=0;i c=cookies[i] if(c!=null){ if(("cn").equals(c.getName())){ pageContext.setAttribute("SavedUserName",c.getValue())}} 創建Cookie并儲存修改數據后,使用JS代碼獲取Cookie中的數據,并對數據進行操作,修改個人應用頁面信息,主要代碼: n=request.getParameter("n") d=request.getParameter("d"); dr=request.getParameter("dr"); if(!"".equals(n) &&!"".equals(d) &&!"".equals(dr) && request.getParameter("RmbUser")!= null){ Cookie nc=new Cookie("anc",n); Cookie dc=new Cookie("adc",d); Cookie drc=new Cookie("adrc",dr); cookie.setMaxAge(365*24*60*60); response.addCookie(anc); response.addCookie(adc); response.addCookie(adrc);} 而注冊用戶和管理員不僅需要從Cookie中獲取值,還需要從服務器端獲取值,所以在JSP頁面還需要利用Session獲取服務器端的值,實現表達式:<%=session. getAttribute("fl") %>。 2.2 功能實現 功能的實現與視圖的實現類似,同樣,用戶分為非注冊用戶和注冊用戶。非注冊用戶體驗應用的添加與刪除,利用Cookie存儲修改數據,不能將數據儲存到服務器端,主要代碼: function getCookie(sn){ if (document.cookie.length>0){c_start=document.cookie.indexOf(sn + "=") if (c_start!=-1){ c_start=c_start + c_name.length+1 c_end=document.cookie.indexOf(";",c_start)if (c_end==-1) c_end=document.cookie.length return unescape(document.cookie.substring(c_start,c_end))} }return ""} function setCookie(sc,value,expiredays){ exdate=new Date() exdate.setDate(exdate.getDate()+expiredays) document.cookie=c_n+ "=" +escape(value)+((expiredays==null) ? "" : ;expires="+exdate.toGMTString())} function checkCookie(){sname=getCookie('sname');servicedescribe=getCookie('sdescribe')
if (sname!=null&&sname;!=""&&sdescribe;!=null && sdescribe!="")
{alert('添加成功!')}else{alert('添加失??!')}}}
注冊用戶將修改的信息提交服務端保存,以便下次登陸使用,主要代碼:
管理員主要負責應用插件的管理(添加或刪除服務插件),修改插件的數據存儲到Cookie與服務端,Cookie主要代碼參考用戶功能實現,服務器端的主要代碼:
if (method.equals("S_p")) {
int id=request.getParameter("id");;
String SName = request.getParameter("SName");
String SDescribe = request.getParameter("SDescribe");
String SAddress = request.getParameter("SAddress");
int i = db.insertRecord("INSERT INTO S_p (id,SName,SDescribe,SAddress)
VALUES ('"+id+"','"+SName+"','"+SDescribe+"','"+SAddress+"')");
if (i == 0) {
String temp = ec.S("select * from S_p");
HttpSession session = request.getSession();
session.setAttribute("rs", temp);
response.sendRedirect("S_plug-in.jsp");} else {
String temp = ec.SL("select * from Service");
HttpSession session = request.getSession();
session.setAttribute("rs", temp);
response.sendRedirect("S_plug-in.jsp");}
用戶(非注冊用戶與注冊用戶)身份的測試用例,注冊登錄站點,對個人應用進行添加或刪除,管理員登錄站點,對所有應用插件進行增刪查改等操作,檢測基本功能的可用性、正確性,在Windows、Android、iOS系統及不同的瀏覽器應用環境下的軟件定義均實現預期,通過多組自定義測試用例進行測試,測試符合預期,測試統計結果如圖2所示。
3 結語
經過實現、測試、投入使用,取得較為顯著的成果,但諸多待改進的工作,如算法設計、故障恢復策略等還需要進一步的研究。
參考文獻
[1]楊曉燕,姜遇姬.Java應用程序自定義交互方法的開發[J].浙江萬里學院學報,2006,(05):19-21.
[2]曾春,邢春曉,周立柱.個性化服務技術綜述[J].軟件學報,2002,(10):1952-1961.
[3]劉海雄,陽富民,胡貫榮.嵌入式瀏覽器中Cookie技術的實現[J].計算機工程與設計,2003,(06):39-41+45.
[4]姜昌華.插件技術及其應用[J].計算機應用與軟件,2003,(10):10-11+67.