基于MVC的软件自定义的实现

中国科技纵横 / 2018年09月09日 05:23

互联网+

基于MVC模式的油田开发分析系统的设计与实现

周绍景 华德志 应杰 潘宏斌 杨正元

摘 要:随着互联网的不断发展,软件平台也不断增加。平台用户不在局限于软件的使用效率,个性化服务也逐步变得重要。利用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.

1.环球科技网遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.环球科技网的原创文章,请转载时务必注明文章作者和"来源:环球科技网",不尊重原创的行为环球科技网或将追究责任;3.作者投稿可能会经环球科技网编辑修改或补充。