bean的一種使用姿勢

2021-07-11 09:39:36 字數 4414 閱讀 6756

我們所使用的spring mvc框架的結構分為三層,control,service和dao層。其中,dao負責與資料庫進行互動;service處理業務邏輯;control負責與頁面互動。

我們的系統中,有很多**展現的內容,其中**還需要有查詢資料、分頁等頁務邏輯。

我找到以前的**,js向controller傳引數是這樣的:

function getquerycondition() 

}var serviceinfo = ;

return serviceinfo;

}

在controller裡面接收到引數是這樣的,其中還要進行非空的驗證判斷,分頁資料的處理等。
string starttime = request.getparameter("starttime");

string endtime = request.getparameter("endtime");

string person = request.getparameter("personid");

backtime = request.getparameter("backtime");

int pageno = integer.valueof(request.getparameter("page") == null ? "1" : request.getparameter("page"));

string pagesizearr = map.get("pagesize");

string attendancestate = request.getparameter("attendancestate");

string dormid = request.getparameter("dormid");

int pagesize = integer.valueof(pagesizearr == null ? "10" : (pagesizearr.length > 1 ? pagesizearr[1] : pagesizearr[0]));

//獲取到人員實體集合

string code = request.getparameter("code");

string name = request.getparameter("name");

string corporate = request.getparameter("corporate");

這樣呼叫service中的方法
personobjectlist = service.getnoswingperson(corporatelist, name, code, sdft.parse(backtime).gettime(), attendancestate, sdf.parse(starttime).gettime(), sdf.parse(endtime).gettime(), dormid, (pageno - 1) * pagesize, pagesize,daylong);
在service中又進行了一次處理,然後傳給dao層。
hashmap hm = new hashmap();

stringbuffer deptsb = new stringbuffer();

if (deptid != null && deptid.size() > 0)

deptsb.deletecharat(deptsb.length() - 1);

}hm.put("time1", time + right_time);

hm.put("state", state);

hm.put("starttime", starttime);

hm.put("endtime", endtime);

hm.put("deptidlist", deptsb.length() == 0 ? null : deptsb.tostring());

hm.put("personname", personname.equals("") ? null : "%" + personname + "%");

hm.put("dormid", "".equals(dormid) ? null : dormid);

hm.put("personcode", personcode.equals("") ? null : "%" + personcode + "%");

hm.put("days", days);

hm.put("start", start);

hm.put("size", size);

return dao.getnoswingperson(hm);

dao中怎麼使用就省略了。可以看到,其實controller和service層其實進行處理了兩次,而且由於存在討厭的空指標異常,還判斷了兩次空……

so urgly!

我把需要的條件封裝到兩個bean中,其中基類包括分頁等通用的處理,匯出類中包含一些個性化的設定,並進行了空指標異常判斷的處理等內容。

public class basecondition 

public void setsortname(string sortname)

public string getsortorder()

public void setsortorder(string sortorder)

public void setpage(int page)

public int getpage()

public void setpagesize(int pagesize)

public int getstart()

return start;

}public void setstart(int start)

public int getsize()

return size;

}public void setsize(int size)

}public class condition extends basecondition catch(exception e)

}public void setendtimestr(string endtimestr) catch(exception e)

}

public long getstarttime()

public void setstarttime(long starttime)

public long getendtime()

public void setendtime(long endtime)

public string getispresidium()

public void setispresidium(string ispresidium)

public string getrepresentativetype()

public void setrepresentativetype(string representativetype)

public string getmonitorid()

public void setmonitorid(string monitorid)

public string getsignway()

public void setsignway(string signway)

public string getcmid()

public void setcmid(string cmid)

public int gettotal()

public void settotal(int total)

public int getstatistype()

public void setstatistype(int statistype)

public int getissigninout()

public void setissigninout(int issigninout)

public string getdirection() else

}public string getstatistypecondition()

if(statistype == 2)

return " 1= 1 ";

}}

由於採用了spring框架, 我們的controller只需要這樣傳入實體就可以了

public @responsebody

string getattendstatis(condition condition)

而service也只需下傳給dao就可以了,當然,如果需要處理資料,在這裡處理一下

public listgetdetaillist(condition condion)

return list;

}

使用這種方式的主要優點

nc 管道符的一種反彈shell姿勢

shell的姿勢有很多,網上師傅們也有整理了各種文章,知識面有多廣,姿勢就有多猥瑣,我就目前常見的簡單說一下 bash nc php python telnet ruby等,具體的使用方法網上都有就不細說了,下面說個我遇到的認為不錯的 shell的方法,nc linux中的管道符 shell,嗯,據...

職場高階的10種姿勢,你是哪一種呢?

除了埋頭苦幹,你的職場晉公升之路還剩下哪些優勢?這個世界充滿假象,唯有痛苦從不說謊!職場如戰場,本就是優勝劣汰適者生存,只會埋頭苦幹的人,不過算是機械式運作的流水線工人,做得再多,再努力認真,也不過是生產力較高的的優秀的機械式員工。簡言之,誰敢指望一頭只會低頭幹活,不懂抬頭看路的老黃牛,有能力帶領團...

windows下使用openssl的一種方法

舉個例子,如使用sha1,開發時引用標頭檔案 include sha.h 工程屬性裡新增需要的標頭檔案路徑 c program files openssl 0.9.8i include c program files openssl 0.9.8i crypto c program files ope...