[JSP ] javabean的static問題
我有一個java bean程式:GotBirthYear.java
package mybean;
import java.io.*;
public class GotBirthYear
{
public GotBirthYear() {}
public int getYear(int age)
{
int BirthYear=2009-age;
return BirthYear;
}
}
用一個MyBirthYear.jsp去呼叫此GotBirthYear.java,我的寫法是這樣:
<%-- *************** MyBirthYear.jsp **************** --%>
<%@ page language="java"
contentType="text/html; charset=Big5"
import="mybean.GotBirthYear"
%>
<HTML>
<BODY>
<B>您的出生年份為:</B><%=GotBirthYear.getYear(27) %>
</BODY>
</HTML>
執行http://localhost:8080/howjsp/MyBirthYear.jsp後出現如下錯誤:
HTTP Status 500 -
--------------------------------------------------------------------------------
type Exception report
message
descripti on The server encountered an internal error () that prevented it
from fulfilling this request.
exception
org.apache.jasper.JasperException: Unable to compile class for JSP
An error occurred at line: -1 in the jsp file: null
Generated servlet error:
[javac] Since fork is true, ignoring compiler setting.
[javac] Compiling 1 source file
[javac] Since fork is true, ignoring compiler setting.
[javac] C:\Program Files\Apache Group\Tomcat 4.1\work\Standalone\localhost\
howjsp\MyBirthYear_jsp.java:48: non-static method getYear(int)
cannot be referenced from a static context
[javac] out.print(GotBirthYear.getYear(27) );
[javac] ^
[javac] 1 error
請問這個錯誤是什麼意思??
如果我把java bean:GotBirthYear.java修改成:
package mybean;
import java.io.*;
public class GotBirthYear
{
public GotBirthYear() {}
public static int getYear(int age)
^^^^^^
{
int BirthYear=2009-age;
return BirthYear;
}
}
再用MyBirthYear.jsp去呼叫此java bean即執行成功!
或者GotBirthYear不變(不加static),
我改變MyBirthYear.jsp去呼叫java bean的方法為<jsp:useBean id=........>,
不使用import,也是執行成功!
<%-- *************** MyBirthYear.jsp **************** --%>
<%@ page language="java"
contentType="text/html; charset=Big5"
%>
<jsp:useBean id="gotBirthYear" scope="page" class="mybean.GotBirthYear"/>
<HTML>
<BODY>
<B>您的出生年份為:</B><%=gotBirthYear.getYear(27) %>
</BODY>
</HTML>
請問,為什麼會這樣...static對java bean有什麼影響,
static與呼叫bean的方式(import及<jsp:useBean...)有什麼不同和意義?
另外,javabean呼叫方式是不是有二種,import或<jsp:useBean...>擇一呼叫即可?
公用程式,一般的class(如下),似乎也可以用<jsp:useBean...>或import匯入?
//================ Conv.java ===============
package myutil;
import java.io.*;
public class Conv
{
public static String toHexString(String s)
{
String str="";
for (int j=0; j<s.length(); i++)
{
int ch=(int)s.charAt(j);
str=str+Integer.toHexString(ch)+" ";
}
return str;
}
}
這樣javabean的寫法規定是不是不一定要完全有,
如:無傳值建構子,getXXX().setXXX()之類的規則,
因為如上的一般class也可以用<jsp:useBean...>來匯入不是嗎?
謝謝!
※ 編輯: kucom 來自: 59.104.56.95 (03/06 09:05)
推
03/06 09:26, , 1F
03/06 09:26, 1F
推
03/06 09:36, , 2F
03/06 09:36, 2F
→
03/06 09:38, , 3F
03/06 09:38, 3F
推
03/06 09:40, , 4F
03/06 09:40, 4F
推
03/06 10:29, , 5F
03/06 10:29, 5F