本文目錄一覽:
- 1、在JSP中調用JAVA類和使用JavaBean有什麼區別
- 2、編寫一個猜數字的程序,當客戶訪問伺服器上的Guess.jsp時,隨機分配給客戶一個1-100之間的數字,然後將這
- 3、JSP 中的JavaBean問題 大神請進 編寫一個JavaBean,該JavaBean有一個屬性n,屬
- 4、用JSP編寫一個猜數遊戲程序
- 5、jsp與javaBean的關係??
- 6、在jsp中使用JavaBean連接資料庫
在JSP中調用JAVA類和使用JavaBean有什麼區別
可以像使用一般的類一樣使用JavaBean,Bean只是一種特殊的類。特殊在可以通過jsp:useBean /調用JavaBean而其他類,可以和一般java中一樣使用. Bean的參數中還可以指定範圍, jsp:useBean scope=”application” /該Bean在伺服器的JVM中將只有一個實例. Bean是和WebServer相關的,不同的頁面可以通過Bean 交互.而在一個頁面中的類,就沒有這個功能,除非通過session,那又是另外一回事了.
bean其時也是class文件,只是普通的java文件沒有什麼限制,如果按bean的規範來製作class文件,那他就是一個bean。而按bean的規範來製作就相當是一個組件,換句話說bean就是組件技術。
為了確保一個java類成為javabean,有以下四個簡單的也是必須的規範:
這個類是可序列化的,即必須實現java.io.Serializable介面。
這個類必須帶有一個無參數的構造方法。
若成員變數名為XXX,那麼要有方法getXXX(),用來獲取屬性;setXXX(),用來修改屬性;對於Boolean類型的成員變數,可用is代替get和set類中的方法的訪問。屬性都必須是public的。類中如果有構造方法,那麼這個構造方法也是public的,並且無參數。
這個類包含所有必需的事件處理方法。
JavaBean和Servlet的不同 :
Type1: 一般的JavaBean中,只有屬性聲明和該屬性對應的setXxx和getXxx方法,(一般不建議)不包含業務邏輯;這種JavaBean可以簡單地理解為「數據對象」即可。
Type2: 還有一種JavaBean,其內包含業務處理邏輯,用於處理特定的業務數據;一般使用上面所述的「數據對象」(當然也可能不使用)。
Servlet主要是用來:接收請求、封裝『Type1』的JavaBean、調用『Type2』的JavaBean的相應業務邏輯方法、向客戶端發出響應。
以上是Struts 1.x所使用的模式:ActionForm 就是 Type1的JavaBean,ActionBean就是Type2的JavaBean,ActionServlet即是上面所述的Servlet。 Struts 2.x則是使用 Type1 + Type2的方式(數據對象和業務處理)和Servlet相結合的方式(實際上就是Webwork的方式)。
javaBean和Servlet有什麼區別?
什麼時候用javaBaen?
什麼時候用Servlet,什麼時候二者結合使用?
javabean無非就是裡面有些set和get方法
servlet用來處理一些邏輯層
javabean說籠統點是實現
javabean、servlet、jsp分別對應M(odel)、C(ontroller)、V(iew)
舉例: servlet查詢資料庫—–javabean保存查詢結果—–jsp顯示查詢結果
javabean就是一個普通的Java類,裡面為屬性增加了getter和setter並提供默認構造。可以在多層架構的各層存在。想用它作什麼都行。
而Servlet是展示層的東西……應當只在展示層存在。常作為MVC中的控制器。
一般說的Mvc模式,Servlet主要充當了C的作用。
javabean和servlet是兩回事.因為javabean是一個組件,可以用在任何地方,當然就可以用在servlet里了
按照Sun的定義,所謂的JavaEE應用,是由兩大部分組成:(1)組件,表示業務邏輯、表現邏輯,這部分由開發人員完成;(2)標準的系統服務,由JavaEE平台,亦即容器來提供,這個範圍之外的都不屬於JavaEE應用的範疇。而Servlet,作為JavaEE應用表現邏輯的組件之一,當然是JavaEE應用的一部分。而JavaBean,產生的年代早於J2EE,其技術用途更為廣泛不限於JavaEE使用,按照sun的定義,不屬於JavaEE技術範圍。
其實真正大規模使用JavaBean組件技術的是在Swing中,wing中的所有控制項包括JButton,JTree等用的都是JavanBean技術,這些控制項的基本編程模型正是大名鼎鼎的MVC模型,不信找出Swing API來,好好研究一下JTree、JTable,就知道什麼是真正的JavaBean了。
而Servlet是只能在JavaEE容器中存活的特殊Java類,就像是魚缸里的魚,沒有容器Servlet是不能生存的。而JavaBean則可以脫離JavaEE環境單獨存在,按照Sun的說法,既可以用在客戶端,也可以用在伺服器端。
所謂的POJO,就是EJB把E字去掉,剩下的JB就是JavaBean,換句話說,JavaBean在J2EE里,甚至可以充當某些EJB完成的任務,用途遠大於Servlet。最後的區別,就是 JavaBean的主要用途在於管理JavaEE應用各個層之間的數據流,所以在一些框架中(如Struts)有FormBean和ActionBean的說法,其本質都是為了管理數據。相信如果把上述幾點搞清,區分Servlet和JavaBean應當不會很困難的。
JSP和Servlet到底在應用上有什麼區別?
簡單的說,SUN首先發展出Servlet,其功能比較強勁,體系設計也很先進,只是,它輸出HTML語句還是採用了老的CGI方式,是一句一句輸出,所以,編寫和修改HTML非常不方便。 後來SUN推出了類似於ASP的鑲嵌型的JSP,把JSP TAG鑲嵌到HTML語句中,這樣,就大大簡化和方便了網頁的設計和修改。
新型的網路語言如ASP,PHP,JSP都是鑲嵌型的SCRIPT語言。 從網路三層結構的角度看,一個網路項目最少分三層:data layer,business layer, presentation layer。當然也可以更複雜。
Servlet用來寫business layer是很強大的,但是對於寫presentation layer就很不方便。JSP則主要是為了方便寫presentation layer而設計的。當然也可以寫business layer。
寫慣了ASP,PHP,CGI的朋友,經常會不自覺的把presentation layer和business layer混在一起,就像把資料庫處理信息放到JSP中。其實,它應該放在business layer中。根據SUN自己的推薦,JSP中應該僅僅存放與presentation layer有關的東西,也就是說,只放輸出HTML網頁的部份。而所有的數據計算,數據分析,資料庫聯結處理,統統是屬於business layer,應該放在JavaBean中。通過JSP調用JavaBean,實現兩層的整合。
實際上,微軟前不久推出的DNA技術,簡單說,就是ASP+COM/DCOM技術。與JSP+BEANS完全類似,所有的presentation layer由ASP完成,所有的business layer由COM/DCOM完成。通過調用,實現整合。
為什麼要採用這些組件技術呢?因為單純的ASP/JSP語言是非常低效率執行的,如果出現大量用戶點擊,純SCRIPT語言很快就到達了他的功能上限,而組件技術就能大幅度提高功能上限,加快執行速度。
另外一方面,純SCRIPT語言將presentation layer和business layer混在一起,造成修改不方便,並且代碼不能重複利用。如果想修改一個地方,經常會牽涉到十幾頁CODE,採用組件技術就只改組件就可以了
綜上所述,Servlet是一個早期的不完善的產品,寫business layer很好,寫presentation layer就很臭,並且兩層混雜。
所以,推出JSP+Bean,用JSP寫presentation layer,用Bean寫business layer。SUN自己的意思也是將來用JSP替代Servlet。
可是,這不是說,學了Servlet沒用,實際上,還是應該從Servlet入門,再上JSP,再上JSP+BEAN。
強調的是:學了JSP,不會用JavaBean並進行整合,等於沒學。大家多花點力氣在JSP+Bean上。
我們可以看到,當ASP+COM和JSP+Bean都採用組件技術後,所有的組件都是先進行編譯,並駐留內存,然後快速執行。所以,大家經常吹的Servlet/JSP先編譯駐內存後執行的速度優勢就沒有了。
反之,ASP+COM+IIS+NT緊密整合,應該會有較大的速度優勢呈現。而且,ASP+COM+IIS+NT開發效率非常高,雖然BUG很多。
那麼,為什麼還用JSP+Bean?
因為JAVA實在前途遠大。微軟分拆後,操作系統將群雄並起,應用軟體的開發商必定要找一個通用開發語言進行開發,JAVA一統天下的時機就到了。如果微軟分拆順利,從中分出的應用軟體公司將成為JAVA的新領導者。
目前的JAVA大頭SUN和IBM都死氣沉沉,令人失望。希望新公司能注入新活力。不過,新公司很有可能和舊SUN展開JAVA標準大戰,雙方各自製定標準,影響JAVA誇平台。
另外,現在的機器速度越來越快,JAVA的速度劣勢很快就可以被克服。javabean可以作為模型+控制,也可以單做模型,也可以只用來做數據傳遞(JSP發送數據到Bean,BeanN執行execute,操作資料庫,反之也可)
如果還沒學到其它框架,如HIBERNATE,SPRING,STRUTS等。那javabean的作用是用來作數據的裝載,這種bean我稱為數據bean,比如從資料庫上查詢出的記錄可以保存在數據bean中。
javabean的另一外作用是用來處理一些業務邏輯,比如可以在javabean中用JDBC去訪問資料庫,從而從資料庫中載入信息到數據bean中,也可以從資料庫中刪除、保存數據等。
而Servlet的作用主要是用來控制頁面的跳轉,比如說從login.jsp發一個請求到Servlet中,Servlet調用業務bean的方法去查詢資料庫是否有此密碼和用戶名,如果正確Servlet就可以用request或者response對象的方法跳轉到想要的頁面。
JSP開發的兩種模式
模式一:JSP+JavaBeans
這就是指JSP+JavaBean技術。在模式一中,JSP頁面獨自響應請求並將處理結果返回客戶。所有的數據通過Bean來處理JSP實現頁面的表現。模式一技術也實現了頁面的表現–和頁面的商業邏輯相分離。
大量使用模式形式,常常會導致頁面被嵌入大量的腳本語言或JAVA代碼。當需要處理的商業邏輯很複雜時,這種情況會變得非常糟糕。大量的代碼會使整個頁面變得非常複雜。對於前端界面設計人員來說,這簡直不可想像。
這種情況在大項目中最為常見,這也造成了代碼的開發和維護出現困難,造成了不必要的資源浪費,在任何項目中,這樣的模式總會導致多多少少的定義不清的響應和項目管理的困難。
綜上所訴,模式一不能滿足大型項目的需要,但是可以較好的滿足小型應用,在簡單的應用中可以考慮模式一。
模式二:JSP+Servlet+JavaBeans
Servlets技術是一種採用JAVA技術來實現CGI功能的一種術。Servlets技術是運行在WEB伺服器上,用來生成WEB頁面。Servlets技術非常適用於伺服器端的處理和編程,並且Servlet會長期駐留在他們所處的位置。
但是在實際的項目開發過程中,頁面設計者可以方便地使用普通HTML工具來開發JSP頁面Servlet卻更適合於後端開發者使用,開發Servlet需要的是JAVA集成開發環境,也就是說Servlet技術更需要編程人員。
模式二技術結合了JSP和Servlet技術充分體現了兩者的技術優點。在此模式中通過JSP來表現頁面。通過Servlet來完成大量的事務處理。Servlet充當一個控制者的角色,並負責向客戶發送請求。Servlet創建JSP所需要的Bean和對象,然後根據用戶的請求行為,決定將哪個JSP頁面發送給客戶。
從開發的觀點,模式二具有更清晰的頁面表現,清楚的開發者角色劃分,可以充分利用開發小組的界面設計人員,這些優勢在大型項目開發中表現的尤為突出,使用這一模式,可以充分發揮每個開發者各自的特長,界面設計人員可以充分發揮自己的表現力,設計出優美的界面表現形式,設計人員可以充分發揮自己的商務處理思維,來實現項目中的業務處理。在大型項目中,模式二更被採用。
Servlet是一種獨立於平台和協議的位於Web伺服器內部的伺服器端的Java應用程序,與傳統的從命令行啟動的Java應用程序不同,Servlet由Web伺服器進行載入,該Web伺服器必須包含支持Servlet的Java虛擬機。
Java的Servlet與JSP(JavaServerPages)的比較:
JavaServerPages(JSP)是一種實現普通靜態HTML和動態HTML混合編碼的技術,JSP並沒有增加任何本質上不能用Servlet實現的功能。但是,在 JSP中編寫靜態HTML更加方便,不必再用println語句來輸出每一行HTML代碼。更重要的是,藉助內容和外觀的分離,頁面製作中不同性質的任務可以方便地分開:比如,由頁面設計者進行HTML設計,同時留出供Servlet程序員插入動態內容的空間。
JSP動態Web內容可能是動態Web內容的一項偉大的技術,並可將內容和表示presentation相分離,那為什麼servlets仍然有必要和JSP同時實施?
其實servlets的實用性並不是一個問題。它們在伺服器端處理方面的表現非常優秀,而且,由於它們引人注目的安裝方式而繼續存在著。事實上,可以將 JSP看作一種servlets的高級抽象,它以Servlet2.1的API擴展的形式來實現。
注意:不應該不加選擇地使用servlets;它們可能並不適用於每個人。例如,當一個頁面設計者可以很簡單地使用方便的HTML或XML工具來編寫 JSP頁面時,servlets可能更適合那些在後端的開發者,因為他們經常使用某種IDE來編寫。這是一種通常需要較高編程經驗的處理工作。
當發布servlets時,甚至開發者都不得不小心確保在presentation和內容之間不存在緊密結合。通常可以通過增加一個第三方發行包如 htmlKona來做到這一點。但即使可以做到這一點,雖然可以通過簡單的屏幕上的調整提供一些靈活性,仍無法保證在presentation自身格式上的變化。例如,如果你的presentation從HTML改變到DHTML,將仍然需要確保發行包和新的格式相一致,在最壞的case–scenario中,如果一個發行包無法得到,你將結束在動態web的內容中對presentation使用手寫代碼。所以,解決方法是什麼呢?
方法之一就是同時使用JSP和servlet技術來建立應用系統。
編寫一個猜數字的程序,當客戶訪問伺服器上的Guess.jsp時,隨機分配給客戶一個1-100之間的數字,然後將這
很簡單。在JSP中是可以嵌套JAVA代碼的,如
%
Random r = new Random();
int answer= r.nextInt(100);
request.getSession.setAttribute(“answer”,answer);
%
保存隨機數到session,判斷,
request.getParameter(“guessNumber”).equals(request.getSession.getAttribute(“answer”))
根據結果跳轉到不同的頁面,返回用個js技術,這個網上很多,就不說了。
JSP 中的JavaBean問題 大神請進 編寫一個JavaBean,該JavaBean有一個屬性n,屬
如果你的框架是用Spring,完全可以把方法定義成getSum(),然後jsp中寫bean.sum,Spring會自動調用這個bean的getSum(),如果是其他框架或者原生Servlet,可以寫個很蠢的方法就是,在該javaBean中添加一個屬性叫sum,然後setN()中調用sum(),並將返回的值設置為sum
用JSP編寫一個猜數遊戲程序
在一個頁面上幫你搞定了。。。你自己看看然後再分把
%@ page language=”java” contentType=”text/html; charset=UTF-8″
pageEncoding=”UTF-8″%
!DOCTYPE html PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” “”
html
head
meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″
title這是一個猜數字的小遊戲/title
/head
body
center
%
//保存隨機數
int num=-1;
//猜測的次數
int flg=0;
//如果用戶是第一次進入則生成隨機數
if(session.isNew())
{
//生成0-100之間的隨機數
num=(int)(Math.random()*101);
//將隨機數保存在session中
session.setAttribute(“num”,num);
}
else
{
num=Integer.parseInt(session.getAttribute(“num”).toString());
}
//次數累加
if(request.getParameter(“number”)!=null)
flg=Integer.parseInt(session.getAttribute(“flg”).toString())+1;
System.out.println(flg);
//保存猜測的次數
session.setAttribute(“flg”,flg);
%
form action=”” method=”post”
請輸入所要猜測的數字:
input type=”text” name=”number”
input type=”submit” value=”提交”
/form
%
if(request.getParameter(“number”)!=null)
{
//獲得用戶所猜測的數字
int num1=-1;
num1=Integer.parseInt(request.getParameter(“number”));
if(num1num)
out.println(“你猜的數太大了!br”);
if(num1num)
out.println(“你猜的數太小了!br”);
if(num1==num)
out.println(“恭喜你猜對了!br”);
out.println(“你已經猜了”+flg+”次”);
}
%
/center
/body
/html
jsp與javaBean的關係??
沒有關係 但是jsp表單中的數據可以傳給javaBean jsp 也可以顯示javaBean中定義的屬性值
JavaBean 是一種JAVA語言寫成的可重用組件。為寫成JavaBean,類必須是具體的和公共的,並且具有無參數的構造器。JavaBean 通過提供符合一致性設計模式的公共方法將內部域暴露成員屬性。
JavaBean可分為兩種:一種是有用戶界面(UI,User Interface)的JavaBean;還有一種是沒有用戶界面,主要負責處理事務(如數據運算,操縱資料庫)的JavaBean。JSP通常訪問的是後一種JavaBean。
在jsp中使用JavaBean連接資料庫
這個是連接access的javaBean,首先配置access數據源,數據源名稱設為info.mdb,此文件放在test文件夾下,編譯後將生成的infoBean.class放在claeese下的test文件夾下即可。用access寫個資料庫info.mdb裡面寫個表student,兩個欄位id name。
package test;
import java.sql.*;
public class infoBean{
private String ab=”sun.jdbc.odbc.JdbcOdbcDriver”;
private String ac=”JDBC:odbc:info.mdb”;
Connection conn=null;
ResultSet rs=null;
Statement stmt;
public infoBean(){
try{
Class.forName(ab);}
catch(java.lang.ClassNotFoundException e){
System.out.println(“infoBean():”+e.getMessage());}
}
public ResultSet executeQuery(String sql){
rs=null;
try{
conn=DriverManager.getConnection(ac);
stmt=conn.createStatement();
rs = stmt.executeQuery(sql);}
catch(SQLException ex){
System.err.println(“aq.executeQuery:”+ex.getMessage());}
return rs;
}
public void executeUpdate(String sql)
{stmt=null;
rs=null;
try{
conn=DriverManager.getConnection(ac);
stmt=conn.createStatement();
stmt.executeUpdate(sql);
stmt.close();
conn.close();}
catch(SQLException e1)
{System.err.println(“executeUpdate:” + e1.getMessage()); }
}
public void closeStmt()
{
try{
stmt.close();
}
catch (SQLException e2)
{
e2.printStackTrace();
}
}
public void closeConn()
{
try{
conn.close();
}
catch (SQLException e3)
{
e3.printStackTrace();
}
}
}
在jsp頁面中引用時,顯示資料庫內容:
%@ page contentType=”text/html;charset=GB2312″ import=”java.sql.*” %
jsp:useBean id=”inBean” class=”test.infoBean” scope=”page”/htmlhead/headbodytable
trth11/thth11/th/tr
%
ResultSet rs=inBean.executeQuery(“SELECT * FROM student”);
while rs.next(){
%
trtd%=rs.getString(1)%/tdtd%=rs.getString(2)%/td/tr
%}%
/table/body/html
在jsp中刪除,
%@ page contentType=”text/html;charset=GB2312″ import=”java.sql.*” %
jsp:useBean id=”inBean” class=”test.infoBean” scope=”page”/htmlhead/headbody
%
String id=request.getParameter(“id”);
inBean.executeUpdate(“Delete from student where id='”+id+”‘”);
%
/body/html
其中id是上一個頁面傳過來的;
jsp中修改:
%@ page contentType=”text/html;charset=GB2312″ import=”java.sql.*” %
jsp:useBean id=”inBean” class=”test.infoBean” scope=”page”/htmlhead/headbody
%
String id=request.getParameter(“id”);
String name=request.getParameter(“name”);
inBean.executeUpdate(“update student set name='”+name+”‘ where id='”+id+”‘”);
%
/body/html
我還有javaBean連接mysql,sql server的例子,也有關於javaBean完整簡單的小項目,你要的話,給郵箱,發給你
原創文章,作者:XWXO,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/137671.html