国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

J2EE 實戰開發EJB

2019-11-18 16:18:36
字體:
來源:轉載
供稿:網友

原標題:實戰J2EE開發購物網站之EJB篇
版權申明:本文所有內容均來自其作者馬宣(經典論壇IDmaxuan9),僅授權藍色理想,經典論壇。
作者:maxuan9
版權:maxuan9

EJB是什么想必不用我再多費唇舌,在這里我會教大家寫一個很簡單的EJB(僅僅在jsp中顯示在數據庫中類似菜單的記錄,當然更多的復雜操作,我們將會在以后繼續完善,請關注此貼),這樣更能讓大家看清楚,分析透徹,讓初學者更快的跨過這道坎,我們將寫一個CMP的實體BEAN,與數據庫打交道,而且寫一個model進行調用,還會寫一個sessionBEAN將操作封裝,為了取得和這個EJB的聯系進行操作,我們還必須寫一個javabean,為了顯示其操作結果,我們還得有一個JSP的頁面,雖然JSP也可以直接操作EJB,但這并不是推薦的辦法,除了安全、性能之外,在J2EE的體系中,JSP處于視圖層,它只需要請求或顯示最終結果,而將具體的動作和邏輯業務關系放到了EJB和javabean中。
在理清思想之后,我們需要組建這次的應用平臺,和起碼的應用工具。
(PS:這次不僅僅開發一個EJB,還要把它放到網絡應用中,可以算是最小型的J2EE體系,JSP將采用struts MVC的設計方式,請大家注意看)

數據庫平臺:MySQL (這次實列只建一張表,無需勞煩Oracle大架)
J2EE應用平臺:weblogic6.1SP2(本人最鐘愛的版本)
注:本文所采用的javabean和EJB的聯系交互僅限weblogic平臺。
struts 1.1:JSP的Framework MVC設計模式(請到GOOGL搜索下載,選擇合適的下載點很重要)
Jbuilder:EJB的設計編寫工具
struts-console-2.2:編寫struts-config.xml的好工具,到處搜搜吧,我忘了哪里下的!不過真是好用,極力推薦。
MYSQL.jar:MYSQL數據庫的JDBC驅動。

在將以上工具準備齊全之后,我們就可以天始動手了,MYSQL的配置,J2EE、weblogic環境的架設,請看置頂精華貼。
首先,我們先建一個mytest的數據庫,然后建一張myejb的表,在這張表里只有兩個字段:DlDm(大類代碼)、DlMc(大類名稱),將DlDm設為主鍵,類型為varchar,長度為4,DlMc類型為varchar,長度為50。以下是我用Navicat的截圖。

J2EE 實戰開發EJB(圖一)

  然后我們往里先插入一些數據,如下圖所示。

J2EE 實戰開發EJB(圖二)

  在建完數據庫之后,我們就要開始進行EJB的開發了,先建個lib的目錄,將一些要用的庫文件放到其中,首先就把mysql的JDBC驅動放進去吧。然后解壓下載的struts包,將lib目錄下的所有jar文件也放到這個目錄中,我所用的Struts是1.1b1。

接下來,我們將請出Jbuilder啦,用Jbuilder開發EJB,就像用DW寫網頁一樣方便快捷。首先我們還是將Jbuilde的庫配置一下,先建一個struts 1.1 lib的庫,把剛才我們放到lib目錄中的除mysql外的jar都添加進去,這就是將來開發編寫javabean要用到的啦!

J2EE 實戰開發EJB(圖三)

然后我們建一個mysql的庫,把mysql.jar添加進去。

J2EE 實戰開發EJB(圖四)

接著,我們需要在EnterPRise setup中設置Database Drivers,點ADD按鈕,將剛才的mysql庫加進去。

J2EE 實戰開發EJB(圖五)

在點OK以后,你需要重啟一下你的JBuilder。

好了,現在我們開始新建一個應用,這里我取名為myEJB,然后一路next,直到完成,在這里我們不忙先把Struts庫加進去。

J2EE 實戰開發EJB(圖六)


然后我們可以開始開發EJB啦,首先新建一個EJB Module,如下圖

J2EE 實戰開發EJB(圖七)

接著,我們為它取名為EJB,版本為2.0,在下面的輸出路徑中,我選擇了放到lib目錄中。

J2EE 實戰開發EJB(圖八)

在接下來,我們在下面的DataSources點右鍵,選取Import Schema From Database

J2EE 實戰開發EJB(圖九)

在出現的對話框中,按下圖所填寫即可,這里的Driver和URL是連接mysql的寫法,下面是連接MYSQL數據庫的用戶名和密碼,最下面的JNDI name我們命名為mywork,這里所寫的名字要與以后在配置weblogic中的名字相同。

J2EE 實戰開發EJB(圖十)

在連接成功之后,我們會看到下圖,點開mywork會出現剛才在MYSQL中建的表。

J2EE 實戰開發EJB(圖十一)

在myejb的表上點右鍵,在出現的菜單中選第一項Create CMP 2.0 Entity Bean,建立一個CMP的實體BEAN文件。

J2EE 實戰開發EJB(圖十二)

由于我們將EJB,和javabean都放到一個application中編輯,所以為了以后好區分,我們點擊在右視圖中的Myejb,在出來的菜單中選Classes and packages,在出現的對話框中我們加一個.maxuan.ejb,如下圖所示。

J2EE 實戰開發EJB(圖十三)

最后我們看到JBuilder已經為我們完成了基本的CMP實體BEAN文件。
接下來,我們需要先寫一個調用模型,新建一個CLASS,打包到myejb.maxuan.ejb.model中。

J2EE 實戰開發EJB(圖十四)

進入討論組討論。

下圖是這個文件的源代碼。MyejbMd


package myejb.maxuan.ejb.model;

import java.io.*;

public class MyejbMd implements Serializable {

public MyejbMd() {
}
public String dlDm;
public String dlMc;
public String action;
public String getDlDm() {
return dlDm;
}
public void setDlDm(String dlDm) {
this.dlDm = dlDm;
}
public String getDlMc() {
return dlMc;
}
public void setDlMc(String dlMc) {
this.dlMc = dlMc;
}
public String getAction() {
return action;
}
public void setAction(String action) {
this.action = action;
}
private void writeObject(ObjectOutputStream oos) throws IOException {
oos.defaultWriteObject();
}
private void readObject(ObjectInputStream ois) throws ClassNotFoundException, IOException {
ois.defaultReadObject();
}
}

然后我們需要編輯實體BEAN文件來引入模型和對數據庫的基本操作。
Myejb.java文件


package myejb.maxuan.ejb;

import javax.ejb.*;
import java.util.*;
import myejb.maxuan.ejb.model.*;

public interface Myejb extends javax.ejb.EJBLocalObject {
public String getDlDm();
public void setDlMc(String dlMc);
public String getDlMc();
public MyejbMd getDlMd();
public void setMyejbMd(MyejbMd dlMd);
}


MyejbBean.java文件


package myejb.maxuan.ejb;

import javax.ejb.*;
import myejb.maxuan.ejb.model.*;

abstract public class MyejbBean implements EntityBean {
EntityContext entityContext;
public java.lang.String ejbCreate(java.lang.String dlDm) throws CreateException {
setDlDm(dlDm);
return null;
}
public void ejbPostCreate(java.lang.String dlDm) throws CreateException {
/**@todo Complete this method*/
}
public java.lang.String ejbCreate(java.lang.String dlDm, java.lang.String dlMc) throws CreateException {
setDlDm(dlDm);
setDlMc(dlMc);
return null;
}
public void ejbPostCreate(java.lang.String dlDm, java.lang.String dlMc) throws CreateException {
/**@todo Complete this method*/
}
public void ejbRemove() throws RemoveException {
/**@todo Complete this method*/
}
public abstract void setDlDm(java.lang.String dlDm);
public abstract void setDlMc(java.lang.String dlMc);
public abstract java.lang.String getDlDm();
public abstract java.lang.String getDlMc();
public void ejbLoad() {
/**@todo Complete this method*/
}
public void ejbStore() {
/**@todo Complete this method*/
}
public void ejbActivate() {
/**@todo Complete this method*/
}
public void ejbPassivate() {
/**@todo Complete this method*/
}
public void unsetEntityContext() {
this.entityContext = null;
}
public void setEntityContext(EntityContext entityContext) {
this.entityContext = entityContext;
}
public myejb.maxuan.ejb.model.MyejbMd getDlMd() {
MyejbMd dlMd = new MyejbMd();
dlMd.setDlDm(getDlDm());
dlMd.setDlMc(getDlMc());
return dlMd;
}
public void setMyejbMd(MyejbMd dlMd){
setDlMc(dlMd.getDlMc());
}
}

接著我們要編輯最后的MyejbHome.java,雙擊左邊樹的EJB,在右邊的面板中選中Myejb后點右鍵,在出現的菜單中選ADD,選取下面的Findel方法,如下圖所示:

J2EE 實戰開發EJB(圖十五)

在接著出現的對話框中選擇填寫如下:

J2EE 實戰開發EJB(圖十六)

我們繼續編輯MyejbHome.java文件


package myejb.maxuan.ejb;
import javax.ejb.*;
import java.util.*;

public interface MyejbHome extends javax.ejb.EJBLocalHome {
public Myejb create(String dlDm) throws CreateException;
public Myejb create(String dlDm, String dlMc) throws CreateException;
public Collection findAll() throws FinderException;
public Myejb findByPrimaryKey(String dlDm) throws FinderException;
}

好了,實體BEAN文件我們已經寫完了,現在我們編譯一下,看有沒有什么錯誤。
新手提示:在引入模型之前,我們需要先編譯一下模型文件。
在接下來我們將寫一個SessionBean。

我們繼續來完成這個EJB,我們需要來寫一個SessionBean,創建方法與創建實體BEAN一樣,這里不在多說,只把它們的源碼貼出,請大家仔細看,理解其中的意義!
這里我將SessionBean命名為MyejbWeb
MyejbWeb.java


package myejb.maxuan.ejb;

import javax.ejb.*;
import java.util.*;
import java.rmi.*;
import java.sql.*;
import java.io.*;
import myejb.maxuan.ejb.model.*;

public interface MyejbWeb extends javax.ejb.EJBObject {
public ArrayList getDlList() throws RemoteException;
public MyejbMd getDl(String dlDm) throws RemoteException;
}


MyejbWebBean.java


package myejb.maxuan.ejb;

import javax.ejb.*;
import java.util.*;
import java.sql.*;
import java.sql.Date;
import java.io.InputStream;
import java.io.OutputStream;
import myejb.maxuan.ejb.model.*;

public class MyejbWebBean implements SessionBean {
SessionContext sessionContext;
public void ejbCreate() throws CreateException {
/**@todo Complete this method*/
}
public void ejbRemove() {
/**@todo Complete this method*/
}
public void ejbActivate() {
/**@todo Complete this method*/
}
public void ejbPassivate() {
/**@todo Complete this method*/
}
public void setSessionContext(SessionContext sessionContext) {
this.sessionContext = sessionContext;
}
public ArrayList getDlList(){
ArrayList dlList=new ArrayList();
try {
javax.naming.Context context = new javax.naming.InitialContext();
MyejbHome dlHome= (MyejbHome)context.lookup("Myejb");
Collection dlCntl = dlHome.findAll();
Iterator iterator = dlCntl.iterator();
while(iterator.hasNext()){
Myejb myEjb = (Myejb) iterator.next();
MyejbMd dlMd = myEjb.getDlMd();
dlList.add(dlMd);
}
}catch (Exception ex) {
throw new EJBException(ex);
}
return dlList;
}
public MyejbMd getDl(String dlDm){
MyejbMd dlMd=new MyejbMd();
try {
javax.naming.Context context = new javax.naming.InitialContext();
MyejbHome dlHome= (MyejbHome)context.lookup("Myejb");
try{
Myejb myEjb = dlHome.findByPrimaryKey(dlDm);
dlMd = myEjb.getDlMd();
}catch(FinderException fe){
dlMd=null;
}
}catch (Exception ex) {
throw new EJBException(ex);
}
return dlMd;
}
}

MyejbWebHome.java


package myejb.maxuan.ejb;

import javax.ejb.*;
import java.util.*;
import java.rmi.*;

public interface MyejbWebHome extends javax.ejb.EJBHome {
public MyejbWeb create() throws CreateException, RemoteException;
}

至此,我們的EJB部份已經完成,明天我們將繼續寫一個javabean來訪問這個EJB!同時我們也會引入struts,請大家留意!

PS:雖然這只是一個簡單的EJB網絡應用結構,但卻是建立J2EE大型應用的基礎,希望大家多多交流!!

進入討論組討論。

(出處:http://m.survivalescaperooms.com)



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 平舆县| 沧源| 托克逊县| 江陵县| 深圳市| 和政县| 河南省| 隆德县| 江永县| 尉犁县| 云安县| 津南区| 腾冲县| 札达县| 金堂县| 金昌市| 井冈山市| 尼勒克县| 海丰县| 阿荣旗| 昌宁县| 永泰县| 米易县| 定结县| 西吉县| 香格里拉县| 平邑县| 淮安市| 纳雍县| 忻州市| 呼和浩特市| 望奎县| 平谷区| 乌恰县| 涡阳县| 安龙县| 安龙县| 衡山县| 年辖:市辖区| 延津县| 巴东县|