欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

java登錄三層架構(gòu)代碼 Javaweb三層架構(gòu)

登陸界面的java代碼怎么寫(xiě)?

概述

創(chuàng)新互聯(lián),為您提供網(wǎng)站建設(shè)公司、成都網(wǎng)站制作、網(wǎng)站營(yíng)銷(xiāo)推廣、網(wǎng)站開(kāi)發(fā)設(shè)計(jì),對(duì)服務(wù)門(mén)簾等多個(gè)行業(yè)擁有豐富的網(wǎng)站建設(shè)及推廣經(jīng)驗(yàn)。創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司成立于2013年,提供專(zhuān)業(yè)網(wǎng)站制作報(bào)價(jià)服務(wù),我們深知市場(chǎng)的競(jìng)爭(zhēng)激烈,認(rèn)真對(duì)待每位客戶,為客戶提供賞心悅目的作品。 與客戶共同發(fā)展進(jìn)步,是我們永遠(yuǎn)的責(zé)任!

具體框架使用jframe,文本框組件:JTextField;密碼框組件:JPasswordField;標(biāo)簽組件:JLabel;復(fù)選框組件:JCheckBox;單選框組件:JRadioButton;按鈕組件JButton。

登錄界面:

代碼實(shí)例

import javax.swing.*;

import java.awt.*; ? //導(dǎo)入必要的包

public class denglu extends JFrame{

JTextField jTextField ;//定義文本框組件

JPasswordField jPasswordField;//定義密碼框組件

JLabel jLabel1,jLabel2;

JPanel jp1,jp2,jp3;

JButton jb1,jb2; //創(chuàng)建按鈕

public denglu(){

jTextField = new JTextField(12);

jPasswordField = new JPasswordField(13);

jLabel1 = new JLabel("用戶名");

jLabel2 = new JLabel("密碼");

jb1 = new JButton("確認(rèn)");

jb2 = new JButton("取消");

jp1 = new JPanel();

jp2 = new JPanel();

jp3 = new JPanel();

//設(shè)置布局

this.setLayout(new GridLayout(3,1));

jp1.add(jLabel1);

jp1.add(jTextField);//第一塊面板添加用戶名和文本框

jp2.add(jLabel2);

jp2.add(jPasswordField);//第二塊面板添加密碼和密碼輸入框

jp3.add(jb1);

jp3.add(jb2); //第三塊面板添加確認(rèn)和取消

// ? ? ? ?jp3.setLayout(new FlowLayout()); ?//因?yàn)镴Panel默認(rèn)布局方式為FlowLayout,所以可以注銷(xiāo)這段代碼.

this.add(jp1);

this.add(jp2);

this.add(jp3); ?//將三塊面板添加到登陸框上面

//設(shè)置顯示

this.setSize(300, 200);

//this.pack();

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

this.setVisible(true);

this.setTitle("登陸");

}

public static void main(String[] args){

new denglu();

}

}

拓展內(nèi)容

java swing包

Swing 是一個(gè)為Java設(shè)計(jì)的GUI工具包。

Swing是JAVA基礎(chǔ)類(lèi)的一部分。

Swing包括了圖形用戶界面(GUI)器件如:文本框,按鈕,分隔窗格和表。

Swing提供許多比AWT更好的屏幕顯示元素。它們用純Java寫(xiě)成,所以同Java本身一樣可以跨平臺(tái)運(yùn)行,這一點(diǎn)不像AWT。它們是JFC的一部分。它們支持可更換的面板和主題(各種操作系統(tǒng)默認(rèn)的特有主題),然而不是真的使用原生平臺(tái)提供的設(shè)備,而是僅僅在表面上模仿它們。這意味著你可以在任意平臺(tái)上使用JAVA支持的任意面板。輕量級(jí)組件的缺點(diǎn)則是執(zhí)行速度較慢,優(yōu)點(diǎn)就是可以在所有平臺(tái)上采用統(tǒng)一的行為。

概念解析:

JFrame?– java的GUI程序的基本思路是以JFrame為基礎(chǔ),它是屏幕上window的對(duì)象,能夠最大化、最小化、關(guān)閉。

JPanel?– Java圖形用戶界面(GUI)工具包swing中的面板容器類(lèi),包含在javax.swing 包中,可以進(jìn)行嵌套,功能是對(duì)窗體中具有相同邏輯功能的組件進(jìn)行組合,是一種輕量級(jí)容器,可以加入到JFrame窗體中。。

JLabel?– JLabel 對(duì)象可以顯示文本、圖像或同時(shí)顯示二者??梢酝ㄟ^(guò)設(shè)置垂直和水平對(duì)齊方式,指定標(biāo)簽顯示區(qū)中標(biāo)簽內(nèi)容在何處對(duì)齊。默認(rèn)情況下,標(biāo)簽在其顯示區(qū)內(nèi)垂直居中對(duì)齊。默認(rèn)情況下,只顯示文本的標(biāo)簽是開(kāi)始邊對(duì)齊;而只顯示圖像的標(biāo)簽則水平居中對(duì)齊。

JTextField?–一個(gè)輕量級(jí)組件,它允許編輯單行文本。

JPasswordField?– 允許我們輸入了一行字像輸入框,但隱藏星號(hào)(*) 或點(diǎn)創(chuàng)建密碼(密碼)

JButton?– JButton 類(lèi)的實(shí)例。用于創(chuàng)建按鈕類(lèi)似實(shí)例中的 "Login"。

簡(jiǎn)單的用戶登陸,C#三層架構(gòu)的代碼怎么寫(xiě)?

以一個(gè)驗(yàn)證登陸為例子

這里是界面層一般叫UIL

protected void Button1_Click(object sender, EventArgs e)

{

ListUser Users = BLL.GetUserInfo(txtUserName.Text,txtPassword.Text);

if(Users.Length 0)

{

Response.Write("登陸成功");

}

else

{

Response.Write("登陸失敗");

}

}

以下是邏輯層代碼,業(yè)務(wù)邏輯層一般叫BLL

public static ListUser GetUserInfo(string user,string password)

{

string newPassword = GetMD5Hash(password); //這里對(duì)密碼進(jìn)行加密處理,數(shù)據(jù)庫(kù)中存放的是經(jīng)過(guò)MD5加密后的密,業(yè)務(wù)邏輯層一般都是處理復(fù)雜的邏輯.例如加密邏輯

ListUser Users = DAL.GetUserInfo(user,newPassword);

return Users;

}

以下是數(shù)據(jù)訪問(wèn)層代碼,數(shù)據(jù)訪問(wèn)層一般叫DAL

public static ListUser GetUserInfo(string user,string password)

{

ListUser Users = new ListUser();

string sql = "select * from User where Password = '"+password+"' and User = '"+user+"'"; //寫(xiě)where子句的時(shí)候把Password放前面.因?yàn)镻assword經(jīng)過(guò)加密,所以可以防止SQL注入攻擊

SqlDataAdapter da = new SqlDataAdapter(sql,"這里是數(shù)據(jù)庫(kù)連接字符串");

DataSet ds = new DataSet();

da.Fill(ds);

for(int i=0;ids.Tables[0].Rows.Count;i++)

{

User user = new User(ds.Tables[0].Rows[i]["ID"].ToString(),ds.Tables[0].Rows[i]["User"].ToString(),ds.Tables[0].Rows[i]["Password"].ToString());

Users.Add(user);

}

return Users;

}

還會(huì)有一個(gè)Model層.叫做模板層.是數(shù)據(jù)表結(jié)構(gòu)的印射.Model層是共用層,其他三層都要用到.

比如數(shù)據(jù)庫(kù)中有張表User,里面有3個(gè)字段ID,User,Password

那么在模板層中應(yīng)該有一個(gè)類(lèi),數(shù)據(jù)庫(kù)中User表的一行對(duì)應(yīng)一個(gè)User對(duì)象,一張表對(duì)應(yīng)User對(duì)象的集合.

public class User

{

string ID;

string User;

string Password;

//重載構(gòu)造函數(shù)

User(string id,string user,string password)

{

this.ID=id;

this.User=user;

this.Password=password;

}

}

云南java培訓(xùn)學(xué)校告訴你三層架構(gòu)實(shí)現(xiàn)JavaWeb案例?

三層架構(gòu)一方面是為了解決應(yīng)用程序中代碼之間調(diào)用復(fù)雜,代碼職責(zé)不清的問(wèn)題;通過(guò)各層之間定義接口的形式,并將接口與實(shí)現(xiàn)分離,可以很容易的用不同的實(shí)現(xiàn)來(lái)替換原有的實(shí)現(xiàn),從而有效的降低層與層之間的依賴關(guān)系。這種方式不僅有利于整個(gè)團(tuán)隊(duì)理解整個(gè)應(yīng)用架構(gòu),降低后期維護(hù)成本,同時(shí)也有利于制定整個(gè)應(yīng)用程序架構(gòu)的標(biāo)準(zhǔn)。

另一方面三層架構(gòu)的出現(xiàn)從某種程度上解決了企業(yè)內(nèi)部如果有效的根據(jù)技能調(diào)配技術(shù)人員,提高生產(chǎn)效率的問(wèn)題,在大環(huán)境下,有效的分層能使不同職責(zé)的人各司其職,聚焦于個(gè)人專(zhuān)業(yè)技能的發(fā)展與培養(yǎng)上。

三層架構(gòu)的出現(xiàn)不僅標(biāo)準(zhǔn)化了復(fù)雜系統(tǒng)的邏輯劃分,更幫助企業(yè)解決如果有效的形成技術(shù)人員組織機(jī)構(gòu)的問(wèn)題,因此在很長(zhǎng)的一段時(shí)間內(nèi),它一直是軟件架構(gòu)設(shè)計(jì)的經(jīng)典模式之一。

優(yōu)勢(shì)

層次清晰,每個(gè)層次都提供了接口定義

很容易用新的實(shí)現(xiàn)替換原來(lái)的層次實(shí)現(xiàn)。例如對(duì)sql進(jìn)行性能優(yōu)化,并不會(huì)影響其他層的代碼結(jié)構(gòu)。有利于后期維護(hù)。

有利于實(shí)現(xiàn)切面編程,減輕業(yè)務(wù)的復(fù)雜程度,加快編碼效率。

每個(gè)層次的定位明晰,業(yè)務(wù)處理的內(nèi)容明確。依據(jù)層次,可以劃分不同的分工。開(kāi)發(fā)人員可以只關(guān)注整個(gè)結(jié)構(gòu)的其中某一層。

接口定義也提供了良好的可擴(kuò)展性。例如數(shù)據(jù)庫(kù)從mysql切換到oracle,只需要通過(guò)配置來(lái)切換。

降低了代碼之間,層與層的依賴關(guān)系

復(fù)用性:利于各層代碼邏輯的復(fù)用

安全性:接口設(shè)計(jì)需要符合對(duì)擴(kuò)展開(kāi)發(fā),對(duì)修改關(guān)閉的原則,增強(qiáng)了系統(tǒng)的安全性

各層次職責(zé)

表示層:是應(yīng)用的用戶接口部分,擔(dān)負(fù)著用戶與應(yīng)用的對(duì)話,交互功能。

業(yè)務(wù)邏輯層:主要是業(yè)務(wù)邏輯的處理,操作,是系統(tǒng)功能核心。

數(shù)據(jù)訪問(wèn)層:也稱(chēng)為是數(shù)據(jù)持久層,昆明電腦培訓(xùn)發(fā)現(xiàn)其功能主要是負(fù)責(zé)數(shù)據(jù)庫(kù)的訪問(wèn)。

java中 MVC 三層架構(gòu)

MVC模式是"Model-View-Controller"的縮寫(xiě),中文翻譯為"模式-視圖-控制器"。MVC應(yīng)用程序總是由這三個(gè)部分組成。Event(事件)導(dǎo)致Controller改變Model或View,或者同時(shí)改變兩者。只要Controller改變了Models的數(shù)據(jù)或者屬性,所有依賴的View都會(huì)自動(dòng)更新。類(lèi)似的,只要Controller改變了View,View會(huì)從潛在的Model中獲取數(shù)據(jù)來(lái)刷新自己。MVC模式最早是smalltalk語(yǔ)言研究團(tuán)提出的,應(yīng)用于用戶交互應(yīng)用程序中。smalltalk語(yǔ)言和java語(yǔ)言有很多相似性,都是面向?qū)ο笳Z(yǔ)言,很自然的SUN在petstore(寵物店)事例應(yīng)用程序中就推薦MVC模式作為開(kāi)發(fā)Web應(yīng)用的架構(gòu)模式。MVC模式是一種架構(gòu)模式,其實(shí)需要其他模式協(xié)作完成。在J2EE模式目錄中,通常采用service to worker模式實(shí)現(xiàn),而service to worker模式可由集中控制器模式,派遣器模式和Page Helper模式組成。而Struts只實(shí)現(xiàn)了MVC的View和Controller兩個(gè)部分,Model部分需要開(kāi)發(fā)者自己來(lái)實(shí)現(xiàn),Struts提供了抽象類(lèi)Action使開(kāi)發(fā)者能將Model應(yīng)用于Struts框架中。

MVC模式是一個(gè)復(fù)雜的架構(gòu)模式,其實(shí)現(xiàn)也顯得非常復(fù)雜。但是,我們已經(jīng)終結(jié)出了很多可靠的設(shè)計(jì)模式,多種設(shè)計(jì)模式結(jié)合在一起,使MVC模式的實(shí)現(xiàn)變得相對(duì)簡(jiǎn)單易行。Views可以看作一棵樹(shù),顯然可以用Composite Pattern來(lái)實(shí)現(xiàn)。Views和Models之間的關(guān)系可以用Observer Pattern體現(xiàn)。Controller控制Views的顯示,可以用Strategy Pattern實(shí)現(xiàn)。Model通常是一個(gè)調(diào)停者,可采用Mediator Pattern來(lái)實(shí)現(xiàn)。

現(xiàn)在讓我們來(lái)了解一下MVC三個(gè)部分在J2EE架構(gòu)中處于什么位置,這樣有助于我們理解MVC模式的實(shí)現(xiàn)。MVC與J2EE架構(gòu)的對(duì)應(yīng)關(guān)系是:View處于Web Tier或者說(shuō)是Client Tier,通常是JSP/Servlet,即頁(yè)面顯示部分。Controller也處于Web Tier,通常用Servlet來(lái)實(shí)現(xiàn),即頁(yè)面顯示的邏輯部分實(shí)現(xiàn)。Model處于Middle Tier,通常用服務(wù)端的javaBean或者EJB實(shí)現(xiàn),即業(yè)務(wù)邏輯部分的實(shí)現(xiàn)。

一、MVC設(shè)計(jì)思想

MVC英文即Model-View-Controller,即把一個(gè)應(yīng)用的輸入、處理、輸出流程按照Model、View、Controller的方式進(jìn)行分離,這樣一個(gè)應(yīng)用被分成三個(gè)層——模型層、視圖層、控制層。

視圖(View)代表用戶交互界面,對(duì)于Web應(yīng)用來(lái)說(shuō),可以概括為HTML界面,但有可能為XHTML、XML和Applet。隨著應(yīng)用的復(fù)雜性和規(guī)模性,界面的處理也變得具有挑戰(zhàn)性。一個(gè)應(yīng)用可能有很多不同的視圖,MVC設(shè)計(jì)模式對(duì)于視圖的處理僅限于視圖上數(shù)據(jù)的采集和處理,以及用戶的請(qǐng)求,而不包括在視圖上的業(yè)務(wù)流程的處理。業(yè)務(wù)流程的處理交予模型(Model)處理。比如一個(gè)訂單的視圖只接受來(lái)自模型的數(shù)據(jù)并顯示給用戶,以及將用戶界面的輸入數(shù)據(jù)和請(qǐng)求傳遞給控制和模型。

模型(Model):就是業(yè)務(wù)流程/狀態(tài)的處理以及業(yè)務(wù)規(guī)則的制定。業(yè)務(wù)流程的處理過(guò)程對(duì)其它層來(lái)說(shuō)是黑箱操作,模型接受視圖請(qǐng)求的數(shù)據(jù),并返回最終的處理結(jié)果。業(yè)務(wù)模型的設(shè)計(jì)可以說(shuō)是MVC最主要的核心。目前流行的EJB模型就是一個(gè)典型的應(yīng)用例子,它從應(yīng)用技術(shù)實(shí)現(xiàn)的角度對(duì)模型做了進(jìn)一步的劃分,以便充分利用現(xiàn)有的組件,但它不能作為應(yīng)用設(shè)計(jì)模型的框架。它僅僅告訴你按這種模型設(shè)計(jì)就可以利用某些技術(shù)組件,從而減少了技術(shù)上的困難。對(duì)一個(gè)開(kāi)發(fā)者來(lái)說(shuō),就可以專(zhuān)注于業(yè)務(wù)模型的設(shè)計(jì)。MVC設(shè)計(jì)模式告訴我們,把應(yīng)用的模型按一定的規(guī)則抽取出來(lái),抽取的層次很重要,這也是判斷開(kāi)發(fā)人員是否優(yōu)秀的設(shè)計(jì)依據(jù)。抽象與具體不能隔得太遠(yuǎn),也不能太近。MVC并沒(méi)有提供模型的設(shè)計(jì)方法,而只告訴你應(yīng)該組織管理這些模型,以便于模型的重構(gòu)和提高重用性。我們可以用對(duì)象編程來(lái)做比喻,MVC定義了一個(gè)頂級(jí)類(lèi),告訴它的子類(lèi)你只能做這些,但沒(méi)法限制你能做這些。這點(diǎn)對(duì)編程的開(kāi)發(fā)人員非常重要。

業(yè)務(wù)模型還有一個(gè)很重要的模型那就是數(shù)據(jù)模型。數(shù)據(jù)模型主要指實(shí)體對(duì)象的數(shù)據(jù) 保存(持續(xù)化)。比如將一張訂單保存到數(shù)據(jù)庫(kù),從數(shù)據(jù)庫(kù)獲取訂單。我們可以將這個(gè)模型單獨(dú)列出,所有有關(guān)數(shù)據(jù)庫(kù)的操作只限制在該模型中。

控制(Controller)可以理解為從用戶接收請(qǐng)求, 將模型與視圖匹配在一起,共同完成用戶的請(qǐng)求。劃分控制層的作用也很明顯,它清楚地告訴你,它就是一個(gè)分發(fā)器,選擇什么樣的模型,選擇什么樣的視圖,可以完成什么樣的用戶請(qǐng)求??刂茖硬⒉蛔鋈魏蔚臄?shù)據(jù)處理。例如,用戶點(diǎn)擊一個(gè)連接,控制層接受請(qǐng)求后, 并不處理業(yè)務(wù)信息,它只把用戶的信息傳遞給模型,告訴模型做什么,選擇符合要求的視圖返回給用戶。因此,一個(gè)模型可能對(duì)應(yīng)多個(gè)視圖,一個(gè)視圖可能對(duì)應(yīng)多個(gè)模型。

模型、視圖與控制器的分離,使得一個(gè)模型可以具有多個(gè)顯示視圖。如果用戶通過(guò)某個(gè)視圖的控制器改變了模型的數(shù)據(jù),所有其它依賴于這些數(shù)據(jù)的視圖都應(yīng)反映到這些變化。因此,無(wú)論何時(shí)發(fā)生了何種數(shù)據(jù)變化,控制器都會(huì)將變化通知所有的視圖,導(dǎo)致顯示的更新。這實(shí)際上是一種模型的變化-傳播機(jī)制。模型、視圖、控制器三者之間的關(guān)系和各自的主要功能,如圖1所示。

二、MVC設(shè)計(jì)模式的實(shí)現(xiàn)

ASP.NET提供了一個(gè)很好的實(shí)現(xiàn)這種經(jīng)典設(shè)計(jì)模式的類(lèi)似環(huán)境。開(kāi)發(fā)者通過(guò)在ASPX頁(yè)面中開(kāi)發(fā)用戶接口來(lái)實(shí)現(xiàn)視圖;控制器的功能在邏輯功能代碼(.cs)中實(shí)現(xiàn);模型通常對(duì)應(yīng)應(yīng)用系統(tǒng)的業(yè)務(wù)部分。在ASP.NET中實(shí)現(xiàn)這種設(shè)計(jì)而提供的一個(gè)多層系統(tǒng),較經(jīng)典的ASP結(jié)構(gòu)實(shí)現(xiàn)的系統(tǒng)來(lái)說(shuō)有明顯的優(yōu)點(diǎn)。將用戶顯示(視圖)從動(dòng)作(控制器)中分離出來(lái),提高了代碼的重用性。將數(shù)據(jù)(模型)從對(duì)其操作的動(dòng)作(控制器)分離出來(lái)可以讓你設(shè)計(jì)一個(gè)與后臺(tái)存儲(chǔ)數(shù)據(jù)無(wú)關(guān)的系統(tǒng)。就MVC結(jié)構(gòu)的本質(zhì)而言,它是一種解決耦合系統(tǒng)問(wèn)題的方法。

2.1 視圖

視圖是模型的表示,它提供用戶交互界面。使用多個(gè)包含單顯示頁(yè)面的用戶部件,復(fù)雜的Web頁(yè)面可以展示來(lái)自多個(gè)數(shù)據(jù)源的內(nèi)容,并且網(wǎng)頁(yè)人員,美工能獨(dú)自參與這些Web頁(yè)面的開(kāi)發(fā)和維護(hù)。

在ASP.NET下,視圖的實(shí)現(xiàn)很簡(jiǎn)單??梢韵耖_(kāi)發(fā)WINDOWS界面一樣直接在集成開(kāi)發(fā)環(huán)境下通過(guò)拖動(dòng)控件來(lái)完成頁(yè)面開(kāi)發(fā)本。本文中介紹每一個(gè)頁(yè)面都采用復(fù)合視圖的形式即:一個(gè)頁(yè)面由多個(gè)子視圖(用戶部件)組成;子視圖可以是最簡(jiǎn)單HTML 控件、服務(wù)器控件或多個(gè)控件嵌套構(gòu)而成的Web自定義控件。頁(yè)面都由模板定義,模板定義了頁(yè)面的布局,用戶部件的標(biāo)簽和數(shù)目,用戶指定一個(gè)模板,平臺(tái)根據(jù)這些信息自動(dòng)創(chuàng)建頁(yè)面。針對(duì)靜態(tài)的模板內(nèi)容,如頁(yè)面上的站點(diǎn)導(dǎo)航,菜單,友好鏈接,這些使用缺省的模板內(nèi)容配置;針對(duì)動(dòng)態(tài)的模板內(nèi)容(主要是業(yè)務(wù)內(nèi)容),由于用戶的請(qǐng)求不同,只能使用后期綁定,并且針對(duì)用戶的不同,用戶部件的顯示內(nèi)容進(jìn)行過(guò)濾。使用由用戶部件根據(jù)模板配置組成的組合頁(yè)面,它增強(qiáng)了可重用性,并原型化了站點(diǎn)的布局。

視圖部分大致處理流程如下:首先,頁(yè)面模板定義了頁(yè)面的布局;頁(yè)面配置文件定義視圖標(biāo)簽的具體內(nèi)容(用戶部件);然后,由頁(yè)面布局策略類(lèi)初始化并加載頁(yè)面;每個(gè)用戶部件根據(jù)它自己的配置進(jìn)行初始化,加載校驗(yàn)器并設(shè)置參數(shù),以及事件的委托等;用戶提交后,通過(guò)了表示層的校驗(yàn),用戶部件把數(shù)據(jù)自動(dòng)提交給業(yè)務(wù)實(shí)體即模型。

這一部分主要定義了WEB頁(yè)面基類(lèi)PageBase;頁(yè)面布局策略類(lèi)PageLayout,完成頁(yè)面布局,用于加載用戶部件到頁(yè)面;用戶部件基類(lèi)UserControlBase即用戶部件框架,用于動(dòng)態(tài)加載檢驗(yàn)部件,以及實(shí)現(xiàn)用戶部件的個(gè)性化。為了實(shí)現(xiàn)WEB應(yīng)用的靈活性,視圖部分也用到了許多配置文件例如:置文件有模板配置、頁(yè)面配置、路徑配置、驗(yàn)證配置等。

2.2 控制器

為了能夠控制和協(xié)調(diào)每個(gè)用戶跨越多個(gè)請(qǐng)求的處理,控制機(jī)制應(yīng)該以集中的方式進(jìn)行管理。因此,為了達(dá)到集中管理的目的引入了控制器。應(yīng)用程序的控制器集中從客戶端接收請(qǐng)求(典型情況下是一個(gè)運(yùn)行瀏覽器的用戶),決定執(zhí)行什么商業(yè)邏輯功能,然后將產(chǎn)生下一步用戶界面的責(zé)任委派給一個(gè)適當(dāng)?shù)囊晥D組件。

用控制器提供一個(gè)控制和處理請(qǐng)求的集中入口點(diǎn),它負(fù)責(zé)接收、截取并處理用戶請(qǐng)求;并將請(qǐng)求委托給分發(fā)者類(lèi),根據(jù)當(dāng)前狀態(tài)和業(yè)務(wù)操作的結(jié)果決定向客戶呈現(xiàn)的視圖。在這一部分主要定義了HttpReqDispatcher(分發(fā)者類(lèi))、HttpCapture(請(qǐng)求捕獲者類(lèi))、Controller(控制器類(lèi))等,它們相互配合來(lái)完成控制器的功能。請(qǐng)求捕獲者類(lèi)捕獲HTTP請(qǐng)求并轉(zhuǎn)發(fā)給控制器類(lèi)??刂破黝?lèi)是系統(tǒng)中處理所有請(qǐng)求的最初入口點(diǎn)??刂破魍瓿梢恍┍匾奶幚砗蟀颜?qǐng)求委托給分發(fā)者類(lèi);分發(fā)者類(lèi)分發(fā)者負(fù)責(zé)視圖的管理和導(dǎo)航,它管理將選擇哪個(gè)視圖提供給用戶,并提供給分發(fā)資源控制。在這一部分分別采用了分發(fā)者、策略、工廠方法、適配器等設(shè)計(jì)模式。

為了使請(qǐng)求捕獲者類(lèi)自動(dòng)捕獲用戶請(qǐng)求并進(jìn)行處理,ASP.NET 提供低級(jí)別的請(qǐng)求/響應(yīng) API,使開(kāi)發(fā)人員能夠使用 .NET 框架類(lèi)為傳入的 HTTP 請(qǐng)求提供服務(wù)。為此,必須創(chuàng)作支持 System.Web.IHTTPHandler 接口和實(shí)現(xiàn) ProcessRequest() 方法的類(lèi)即:請(qǐng)求捕獲者類(lèi),并在web.config 的 <httphandlers> 節(jié)中添加類(lèi)。ASP.NET 收到的每個(gè)傳入 HTTP 請(qǐng)求最終由實(shí)現(xiàn) IHTTPHandler 的類(lèi)的特定實(shí)例來(lái)處理。IHttpHandlerFactory 提供了處理 IHttpHandler 實(shí)例 URL 請(qǐng)求的實(shí)際解析的結(jié)構(gòu)。HTTP 處理程序和工廠在 ASP.NET 配置中聲明為 web.config 文件的一部分。ASP.NET 定義了一個(gè) <httphandlers> 配置節(jié),在其中可以添加和移除處理程序和工廠。子目錄繼承 HttpHandlerFactory 和 HttpHandler 的設(shè)置。 HTTP 處理程序和工廠是 ASP.NET 頁(yè)框架的主體。工廠將每個(gè)請(qǐng)求分配給一個(gè)處理程序,后者處理該請(qǐng)求。 例如,在全局 machine.config 文件中,ASP.NET 將所有對(duì) ASPx 文件的請(qǐng)求映射到 HttpCapture類(lèi):

<httphandlers>

...

...

</httphandlers>

2.3 模型

MVC系統(tǒng)中的模型從概念上可以分為兩類(lèi)――系統(tǒng)的內(nèi)部狀態(tài)和改變系統(tǒng)狀態(tài)的動(dòng)作。模型是你所有的商業(yè)邏輯代碼片段所在。本文為模型提供了業(yè)務(wù)實(shí)體對(duì)象和業(yè)務(wù)處理對(duì)象:所有的業(yè)務(wù)處理對(duì)象都是從ProcessBase類(lèi)派生的子類(lèi)。業(yè)務(wù)處理對(duì)象封裝了具體的處理邏輯,調(diào)用業(yè)務(wù)邏輯模型,并且把響應(yīng)提交到合適的視圖組件以產(chǎn)生響應(yīng)。業(yè)務(wù)實(shí)體對(duì)象可以通過(guò)定義屬性描述客戶端表單數(shù)據(jù)。所有業(yè)務(wù)實(shí)體對(duì)象都EntityBase派生子類(lèi)對(duì)象,業(yè)務(wù)處理對(duì)象可以直接對(duì)它進(jìn)行讀寫(xiě),而不再需要和request、response對(duì)象進(jìn)行數(shù)據(jù)交互。通過(guò)業(yè)務(wù)實(shí)體對(duì)象實(shí)現(xiàn)了對(duì)視圖和模型之間交互的支持。實(shí)現(xiàn)時(shí)把"做什么"(業(yè)務(wù)處理)和"如何做"(業(yè)務(wù)實(shí)體)分離。這樣可以實(shí)現(xiàn)業(yè)務(wù)邏輯的重用。由于各個(gè)應(yīng)用的具體業(yè)務(wù)是不同的,這里不再列舉其具體代碼實(shí)例。

三、MVC設(shè)計(jì)模式的擴(kuò)展

通過(guò)在ASP.NET中的MVC模式編寫(xiě)的,具有極其良好的可擴(kuò)展性。它可以輕松實(shí)現(xiàn)以下功能:

①實(shí)現(xiàn)一個(gè)模型的多個(gè)視圖;

②采用多個(gè)控制器;

③當(dāng)模型改變時(shí),所有視圖將自動(dòng)刷新;

④所有的控制器將相互獨(dú)立工作。

這就是MVC模式的好處,只需在以前的程序上稍作修改或增加新的類(lèi),即可輕松增加許多程序功能。以前開(kāi)發(fā)的許多類(lèi)可以重用,而程序結(jié)構(gòu)根本不再需要改變,各類(lèi)之間相互獨(dú)立,便于團(tuán)體開(kāi)發(fā),提高開(kāi)發(fā)效率。下面討論如何實(shí)現(xiàn)一個(gè)模型、兩個(gè)視圖和一個(gè)控制器的程序。其中模型類(lèi)及視圖類(lèi)根本不需要改變,與前面的完全一樣,這就是面向?qū)ο缶幊痰暮锰?。?duì)于控制器中的類(lèi),只需要增加另一個(gè)視圖,并與模型發(fā)生關(guān)聯(lián)即可。該模式下視圖、控制器、模型三者之間的示意圖如圖2所示。

同樣也可以實(shí)現(xiàn)其它形式的MVC例如:一個(gè)模型、兩個(gè)視圖和兩個(gè)控制器。從上面可以看出,通過(guò)MVC模式實(shí)現(xiàn)的應(yīng)用程序具有極其良好的可擴(kuò)展性,是ASP.NET面向?qū)ο缶幊痰奈磥?lái)方向。

四、MVC的優(yōu)點(diǎn)

大部分用過(guò)程語(yǔ)言比如ASP、PHP開(kāi)發(fā)出來(lái)的Web應(yīng)用,初始的開(kāi)發(fā)模板就是混合層的數(shù)據(jù)編程。例如,直接向數(shù)據(jù)庫(kù)發(fā)送請(qǐng)求并用HTML顯示,開(kāi)發(fā)速度往往比較快,但由于數(shù)據(jù)頁(yè)面的分離不是很直接,因而很難體現(xiàn)出業(yè)務(wù)模型的樣子或者模型的重用性。產(chǎn)品設(shè)計(jì)彈性力度很小,很難滿足用戶的變化性需求。MVC要求對(duì)應(yīng)用分層,雖然要花費(fèi)額外的工作,但產(chǎn)品的結(jié)構(gòu)清晰,產(chǎn)品的應(yīng)用通過(guò)模型可以得到更好地體現(xiàn)。

首先,最重要的是應(yīng)該有多個(gè)視圖對(duì)應(yīng)一個(gè)模型的能力。在目前用戶需求的快速變化下,可能有多種方式訪問(wèn)應(yīng)用的要求。例如,訂單模型可能有本系統(tǒng)的訂單,也有網(wǎng)上訂單,或者其他系統(tǒng)的訂單,但對(duì)于訂單的處理都是一樣,也就是說(shuō)訂單的處理是一致的。按MVC設(shè)計(jì)模式,一個(gè)訂單模型以及多個(gè)視圖即可解決問(wèn)題。這樣減少了代碼的復(fù)制,即減少了代碼的維護(hù)量,一旦模型發(fā)生改變,也易于維護(hù)。 其次,由于模型返回的數(shù)據(jù)不帶任何顯示格式,因而這些模型也可直接應(yīng)用于接口的使用。

再次,由于一個(gè)應(yīng)用被分離為三層,因此有時(shí)改變其中的一層就能滿足應(yīng)用的改變。一個(gè)應(yīng)用的業(yè)務(wù)流程或者業(yè)務(wù)規(guī)則的改變只需改動(dòng)MVC的模型層。

控制層的概念也很有效,由于它把不同的模型和不同的視圖組合在一起完成不同的請(qǐng)求,因此,控制層可以說(shuō)是包含了用戶請(qǐng)求權(quán)限的概念。

最后,它還有利于軟件工程化管理。由于不同的層各司其職,每一層不同的應(yīng)用具有某些相同的特征,有利于通過(guò)工程化、工具化產(chǎn)生管理程序代碼。

五、MVC的不足

MVC的不足體現(xiàn)在以下幾個(gè)方面:

(1)增加了系統(tǒng)結(jié)構(gòu)和實(shí)現(xiàn)的復(fù)雜性。對(duì)于簡(jiǎn)單的界面,嚴(yán)格遵循MVC,使模型、視圖與控制器分離,會(huì)增加結(jié)構(gòu)的復(fù)雜性,并可能產(chǎn)生過(guò)多的更新操作,降低運(yùn)行效率。

(2)視圖與控制器間的過(guò)于緊密的連接。視圖與控制器是相互分離,但確實(shí)聯(lián)系緊密的部件,視圖沒(méi)有控制器的存在,其應(yīng)用是很有限的,反之亦然,這樣就妨礙了他們的獨(dú)立重用。

(3)視圖對(duì)模型數(shù)據(jù)的低效率訪問(wèn)。依據(jù)模型操作接口的不同,視圖可能需要多次調(diào)用才能獲得足夠的顯示數(shù)據(jù)。對(duì)未變化數(shù)據(jù)的不必要的頻繁訪問(wèn),也將損害操作性能。

(4) 目前,一般高級(jí)的界面工具或構(gòu)造器不支持MVC模式。改造這些工具以適應(yīng)MVC需要和建立分離的部件的代價(jià)是很高的,從而造成使用MVC的困難。

JAVA語(yǔ)言編寫(xiě)的C/S三層架構(gòu)

c/s和b/s其實(shí)只是展現(xiàn)層不一樣,一個(gè)是胖客戶端,一個(gè)是網(wǎng)頁(yè),框架的話,我現(xiàn)在做的這個(gè)就是后臺(tái)用spring和hibernate,前臺(tái)用rcp

本文名稱(chēng):java登錄三層架構(gòu)代碼 Javaweb三層架構(gòu)
本文URL:http://chinadenli.net/article18/doddjgp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營(yíng)銷(xiāo)型網(wǎng)站建設(shè)、商城網(wǎng)站、服務(wù)器托管、手機(jī)網(wǎng)站建設(shè)、關(guān)鍵詞優(yōu)化、動(dòng)態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都app開(kāi)發(fā)公司