[JSP ] javabean的static問題

看板java作者 (kucom)時間17年前 (2009/03/06 09:01), 編輯推噓4(401)
留言5則, 1人參與, 最新討論串1/1
我有一個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
- What are Java beans? What are getters and setters?
03/06 09:36, 2F

03/06 09:38, , 3F
- What are static methods, and when should they be used?
03/06 09:38, 3F

03/06 09:40, , 4F
- How does JSP work? What do the <% and <%= tags do?
03/06 09:40, 4F

03/06 10:29, , 5F
- Why is iteratively concatenating Strings inefficient?
03/06 10:29, 5F
文章代碼(AID): #19i7O6vz (java)