自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

JSP設(shè)計(jì)模式淺析

開(kāi)發(fā) 后端
本文簡(jiǎn)要介紹了JSP設(shè)計(jì)模式的思路以及在JSP設(shè)計(jì)模式中的一些實(shí)例應(yīng)用,包括MVC、設(shè)計(jì)思路、Bean的設(shè)計(jì)等。

JSP設(shè)計(jì)模式介紹

記得初學(xué)JSP的時(shí)候,總喜歡把他和ASP,PHP去比較,也習(xí)慣于使用Asp的開(kāi)發(fā)模式去寫(xiě)JSP后來(lái)才發(fā)現(xiàn)這真是很傻的做法,其實(shí)JSP一出了來(lái)就已經(jīng)用MVC模式了。下面我就簡(jiǎn)要說(shuō)說(shuō)JSP設(shè)計(jì)使用MVC來(lái)設(shè)計(jì)。

JSP設(shè)計(jì)模式中MVC介紹

MVC其實(shí)是模、視圖、控制的縮寫(xiě),也就是說(shuō)在使用JSP時(shí),有相應(yīng)的文件去實(shí)現(xiàn)相應(yīng)的操作

通常JSP只負(fù)責(zé)view也就是只負(fù)責(zé)顯示頁(yè)面。業(yè)務(wù)邏輯等有bean(ejb)去實(shí)現(xiàn)。下面討論的是不使用ejb的情況下實(shí)現(xiàn)。如果使用ejb,ejb負(fù)責(zé)M.C通常會(huì)由servlet去實(shí)現(xiàn)?;蛘呤褂胹truts。

JSP設(shè)計(jì)模式的設(shè)計(jì)思路

當(dāng)你構(gòu)建一個(gè)Application時(shí)。你必須考慮界面的問(wèn)題,而界面修改是非常平常的。如果你在Jsp中實(shí)現(xiàn)所有的操作,一旦修改界面你麻煩大了。美工不懂JSP的,你必須自己去修改無(wú)數(shù)個(gè)文件,頭不要太大,而此時(shí)一般時(shí)間都很緊,使用MVC則可以減少你的一些麻煩。在設(shè)計(jì)時(shí)候Jsp只負(fù)責(zé)顯示頁(yè)面,也就是說(shuō)Jsp調(diào)用Bean(Struts,servlet)傳過(guò)來(lái)的數(shù)據(jù)然后顯示而B(niǎo)ean(Struts,servlet)負(fù)責(zé)收集JSP需要的數(shù)據(jù),用ArrayList(Arttibute)傳給JSP。假如需要提交表單,一般也直接提交給Struts,servlet,處理后以后再返回處理信息。而其中相應(yīng)的業(yè)務(wù)邏輯由Bean去實(shí)現(xiàn)。

JSP設(shè)計(jì)模式中Bean的設(shè)計(jì)

在我使用時(shí)候Bean通常有三類(lèi),分別在manager,entry,database目錄下面。

manager下面的bean做商業(yè)邏輯

entry下的bean就是封裝數(shù)據(jù),其實(shí)就是每個(gè)數(shù)據(jù)庫(kù)表對(duì)應(yīng)會(huì)有一個(gè)bean。Jsp得到的也全部是類(lèi)。

database下的bean就是操作數(shù)據(jù)庫(kù),執(zhí)行如insert,update,delete,load(查詢(xún)一條記錄),batchload(查詢(xún)多條記錄)。

他們之間的關(guān)系是entry負(fù)責(zé)封裝數(shù)據(jù),作為database的調(diào)用參數(shù),返回結(jié)果。   

manager調(diào)用database處理的結(jié)果。manager和Jsp通信。JSP得到的結(jié)果從manager來(lái), JSP需要做操作調(diào)用manager,即使是一個(gè)insert 在database存在這樣的方法但在manager中你還是需要再封裝一次。這樣做的目的是使結(jié)構(gòu)盡量簡(jiǎn)單。database只負(fù)責(zé)操作數(shù)據(jù)庫(kù)。manager只做邏輯(取相應(yīng)的數(shù)據(jù))處理相應(yīng)的邏輯,而entry則只把database取到的數(shù)據(jù)封裝,或則把頁(yè)面得到的參數(shù)封裝,做為參數(shù)傳給相應(yīng)的Bean.

JSP設(shè)計(jì)模式的設(shè)計(jì)實(shí)例

下面我把留言板作為實(shí)例來(lái)討論:

  1. entry/Guestbook.java(留言板對(duì)象)  
  2.  
  3. database/GuestbookMap.java(更新,刪除,修改留言板)  
  4.  
  5. manager/GuestbookManager.java(處理所有的事務(wù))  
  6.  
  7. 數(shù)據(jù)表結(jié)構(gòu)(postgresql)  
  8.  
  9. create sequence seq_guestbook increment 1 ;  
  10. /**序列號(hào)生成器**/ 
  11. create table guestbook(  
  12. id int8 default nextval('seq_guestbook'), /**主鍵**/ 
  13. title varchar(64),/**主題**/ 
  14. body text,/**內(nèi)容**/ 
  15. sayid int8,/**發(fā)言人**/ 
  16. toid int8,/**接受人**/ 
  17. saytime datetime default now(),/**留言時(shí)間**/ 
  18. newflg smallint default 1/**是否查看過(guò)**/ 
  19. );  
  20. Guestbook.java  
  21. =======================  
  22. import java.util.*;  
  23. public class Guestbook(){  
  24. private int id;  
  25. private String title;  
  26. private body title;  
  27. private int sayid;  
  28. private int sayid;  
  29. private Date saytime;  
  30. private short newflg;  
  31. public Guestbook(){  
  32. }  
  33. public int getId(){  
  34. return this.id;  
  35. }  
  36. public void setId(int _id){  
  37. this.id=_id;  
  38. }  
  39. ........  
  40. (全是get/set方法)  
  41. }  
  42. GuestbookMap.java  
  43. ==============================  
  44. import Guestbook;  
  45. public class GuestbookMap(){  
  46. public GuestbookMap(){  
  47. }  
  48. public Guestbook load(int id){  
  49. file://取到一條guestbook  
  50. }  
  51. file://sqlstr 查詢(xún)條件  
  52. file://orderstr 排序條件  
  53. file://rcdbegin 記錄開(kāi)始  
  54. file://rcdend 記錄結(jié)束  
  55. //  
  56. public ArrayList batchLoad(String sqlstr,String orderstr,int rcdbegin,int rcdend){  
  57. file://ArrayList 里面封裝了Guestbook  
  58. }  
  59. public void insert(Guestbook info){  
  60. }  
  61. public void update(Guestbook info){  
  62. }  
  63. public void delete(int id){  
  64. file://取到一條guestbook  
  65. }  
  66. public int getRcdNums(String sqlstr){  
  67. file://取記錄條數(shù)  
  68. }  
  69. }  
  70. GuestbookManager.java  

根據(jù)需要封裝需要的方法,這部分才是你要寫(xiě)的

上面的方式entry,database的文件可以自動(dòng)生成。需要寫(xiě)的就是GuestbookManager里面的方法,你也許會(huì)覺(jué)得工作量比你所有的操作都在JSP中大,但是這樣結(jié)構(gòu)非常清晰。還需要的就是寫(xiě)一個(gè)數(shù)據(jù)庫(kù)連接池,所有的數(shù)據(jù)庫(kù)操作都從一個(gè)地方取,每一次都去連接數(shù)據(jù)庫(kù)開(kāi)銷(xiāo)很大的。

【編輯推薦】

  1. 對(duì)JSP中的內(nèi)置對(duì)象簡(jiǎn)單概述
  2. JSP和Servlet中的幾個(gè)編碼的作用及原理
  3. 使用JSP include機(jī)制改進(jìn)外觀
  4. JSP編程應(yīng)注意的六個(gè)常見(jiàn)問(wèn)題
  5. JSP標(biāo)簽庫(kù)解析
責(zé)任編輯:仲衡 來(lái)源: 編程入門(mén)網(wǎng)
相關(guān)推薦

2009-07-07 16:39:40

JDK Observe

2009-07-06 13:52:56

編寫(xiě)JSP Tag

2024-01-09 09:06:13

2009-06-29 18:11:40

JSP設(shè)計(jì)模式

2010-07-14 09:01:07

架構(gòu)設(shè)計(jì)

2009-07-06 14:05:11

JSP服務(wù)器

2009-07-03 09:08:23

JSP標(biāo)記學(xué)習(xí)筆記

2009-07-03 09:08:23

JSP標(biāo)記學(xué)習(xí)筆記

2009-07-02 11:34:42

JSP指令JSP開(kāi)發(fā)

2009-04-29 09:06:18

C#設(shè)計(jì)模式Adapter

2009-07-14 10:47:47

MyEclipse J

2009-07-01 18:20:29

JSP的優(yōu)勢(shì)

2009-07-03 17:48:34

JSP頁(yè)面翻譯

2009-07-06 17:11:38

Servlet文件上傳

2009-06-16 15:20:48

ApplicationJSP程序

2009-07-06 12:49:33

JSP編譯器

2009-03-17 16:18:51

JspActionStruts

2009-07-02 10:51:21

腳本編程JSP開(kāi)發(fā)

2009-07-03 17:41:47

JavaBean Se

2009-07-06 17:34:38

JSP HTTP服務(wù)器
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)