2012-11-19 53 views
1

實際上,我的任務是在同一個包中創建javabean類並將它們用於JSP(java服務器頁面)。無法使用包中的一個java類的方法轉換到第二個類中

以下是我正在做的事情。

套餐名稱:mypack * 一等名:UserBean.java *(包含所有getter和setter方法) 二等名:Databean.java(包含方法與數據庫進行交互)
d:\ java: jdk1.5和tomcat,都在這個文件夾中。

UserBean.java:我想使用此類的setter和getter方法來設置和獲取值。我想要使​​用這個類的方法來與MS Access數據庫進行交互,如讀取,更新,刪除等。對於這些操作,我想實例化UserBean類對象到DataBean類中,以設置和獲取DataBean的值類。

我如何編譯?

d:\ java的\ mypack>設定路徑= d:\ java的\ JDK1.5 \ BIN
d:\ java的\ mypack>的javac UserBean.java

但是,當我實例化的UserBean DataBean類中的類的對象,我得到了我已經提到的錯誤。

d:\ java的\ mypack> javac的DataBean.java
這裏我得到上面的錯誤消息

來解決這個問題,我修改了編譯線一點點:

d :\ java的\ mypack> javac的-classpath .. DataBean.java
這個工程,併成功地生成的類文件

現在,這兩個類都編譯成功。現在還有另一個問題,並在下面進行介紹。

package mypack; 
**//UserBean.java** 
public class UserBean{ 
     String username; //an attribute of UserBean Class 
     String password; //an attribute of UserBean Class 

public UserBean(){} //Default Constructor of UserBean Class 
public void setUsername(String username){ this.username = username; }//setter  method 
     public String getUsername(){return username; } //getter method 
} 

package mypack; 
**//DataBean.java** 
public class DataBean{ 
     UserBean user = new UserBean(); //Instantiating UserBean class object in 
     //DataBean class 
     String username;  //an attribute of DataBean Class 

     public DataBean(){} //Default Constructor of UserBean Class 
     public String getUsernameTwo(){return user.getUsername(); } //gettter method 
} 

在JSP頁面中,我實例化兩個對象

<%@ page import="java.sql.*, mypack.*"%> //importing packages 
<html> 
<body> 
<% 
UserBean u = new UserBean(); *//UserBean class object u has been instantiated* 
DataBean d = new DataBean(); //DataBean class object d has been instantiated 

u.setUsername("John"); //username has been set as john 
out.println(u.getUsername()); //gets the string john, and prints it successfully 
(prints: John) 

out.println(d.getUsernameTwo()); //Does'nt print John, but prints null 
           //**(it should print john too but it doesnt)** 
%> 
</body> 
</html> 
+0

您能否澄清一下問題? – iikkoo

+0

** @ Mikael Hallne **我有兩堂課。 ** UserBean.java和DataBean.java **。它應該工作的方式,我的意思是,如果我在** UserBean類**中設置值,我應該可以通過實例化** UserBean Class object ** **中的** DataBean類**來獲取該特定值DataBean Clas **。我應該能夠使用來自DataBean類**的** UserBean類的所有方法。我的兩個班都在同一個包中。我正在這樣做,以使其與JSP一起工作。 –

回答

4

方法getUsernameTwo()返回已在DataBean的構造函數中創建的UserBean的用戶名。此UserBean實例與您在JSP中實例化的實例不是相同的UserBean對象。

這就像打開兩個瓶子,在其中一個瓶子裏放一個信息,然後在另一個瓶子裏面看,希望找到你放在第一個瓶子裏的信息。它不適用於瓶子,也不適用於Java對象,因爲Java對象有點像真實對象。

有一兩件事你可以做的是讓使用公司Databeans在其cnstructor通過了的UserBean:

public class DataBean{ 
    private UserBean user;  

    public DataBean(UserBean user) { 
     this.user = user; 
    } 

    public String getUsernameTwo() { 
     return user.getUsername(); 
    } 
} 

而在你的JSP:

<% 
UserBean u = new UserBean(); 
DataBean d = new DataBean(u); 

u.setUsername("John"); 
out.println(u.getUsername()); 
out.println(d.getUsernameTwo()); 
%> 

好像你還沒有掌握基本的OO概念呢。在使用JSP之前,我會建議首先開始有關基本Java和OO的教程。

+0

將竊取該示例。謝謝:P – thedan

+0

** @ JB Nizet **你能爲我做兩個小例子。那會很棒 –

+0

** @ JB Nizet **我是Java和Jsp的新手。這是我想要做的。這裏是一個鏈接http://javux.com/JavuxDocs/Tutorials/JavaBeansJSPs_JT39.html –

-2

的問題是,在公司Databeans類創建的UserBean的另一個instace,就是不與你在jsp創建一個相同頁。

在課堂上儘量公司Databeans此:

UserBean user = (UserBean)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("u"); 

「U」 - 是您要使用的UserBean實例。

+0

我做了兩個類的所有字符串類型的屬性私人,但仍然無法正常工作。我的意思是編譯成功,但d.getUsernameTwo()仍然顯示爲空。 –

+1

OP甚至沒有使用JSF,也沒有在會話中放置任何東西。 –

+0

** @ cristi **請問你可以爲我做兩個小例子。這將是偉大的 –

相關問題