用Eclipse開發(fā)java web應用程序.ppt
《用Eclipse開發(fā)java web應用程序.ppt》由會員分享,可在線閱讀,更多相關《用Eclipse開發(fā)java web應用程序.ppt(36頁珍藏版)》請在裝配圖網(wǎng)上搜索。
第2講基于Servlet+JavaBean+Jsp開發(fā)應用的過程,第2講基于Servlet+JavaBean+Jsp開發(fā)應用的過程,本講主要介紹主流的javaweb編程技術、設計模式和框架,以及如何利用Eclipese開發(fā)Web應用程序。要點:1、JavaWeb編程的主要組件技術;2、MVC設計模式;3、用Eclipse構建一個基于MVC模式的JavaWeb的應用程序。目的:掌握如何用Eclipse構建一個基于MVC模式的JavaWEB的應用程序。,,2.1javaweb編程的主要組件技術,HtmljspServletJavabeanJdbcXmlTomcatMySQL,,2.2MVC設計模式,今天,我們見到的絕大部分應用,都是基于B/S(瀏覽器/服務器)架構的,其中的服務器就是Web服務器??梢?,Web應用是目前廣泛使用的應用模式。Web程序開發(fā)方法的發(fā)展:JSP的Model1JSP的Model2MVC,,1Model1和Model2,對于Java的動態(tài)Web編程技術而言,則經(jīng)歷了Model1和Model2時代。Model1:Model1就是JSP大行其道的時代,在Model1模式下,整個Web應用幾乎全部由JSP頁面組成,JSP頁面接收處理客戶端請求,對請求處理后直接做出響應。用少量的JavaBean來處理數(shù)據(jù)庫連接、數(shù)據(jù)庫訪問等操作。Model2:Model2下JSP不再承擔控制器的責任,它僅僅是表現(xiàn)層角色,僅僅用于將結果呈現(xiàn)給用戶,JSP頁面的請求與Servlet(控制器)交互,而Servlet負責與后臺的JavaBean通信。在Model2模式下,模型(Model)由JavaBean充當,視圖(View)由JSP頁面充當,而控制器(Controller)則由Servlet充當。,,Model1的程序流程:,,,特點:由JSP頁面組成,JSP頁面接收處理客戶端請求,對請求處理后直接做出響應。用少量的JavaBean來處理數(shù)據(jù)庫連接、數(shù)據(jù)庫訪問等操作,,Model2的程序流程:基本上是MVC結構,特點:Model2下JSP不再承擔控制器的責任,它僅僅是表現(xiàn)層角色,僅僅用于將結果呈現(xiàn)給用戶,JSP頁面的請求與Servlet(控制器)交互,而Servlet負責與后臺的JavaBean通信。在Model2模式下,模型(Model)由JavaBean充當,視圖(View)由JSP頁面充當,而控制器(Controller)則由Servlet充當。,,2Model1和Model2的比較,對于非常小型的Web站點,如果后期的更新、維護工作不是特別大,可以使用Model1的模式來開發(fā)應用,而不是使用Model2的模式。雖然Model2提供了更好的可擴展性及可維護性,但增加了前期開發(fā)成本。從某種程度上講,Model2為了降低系統(tǒng)后期維護的復雜度,卻導致前期開發(fā)的更高復雜度。,,3MVC思想,MVC并不是Java語言所特有的設計思想,也并不是Web應用所特有的思想,它是所有面向?qū)ο蟪绦蛟O計語言都應該遵守的規(guī)范。MVC思想將一個應用分成三個基本部分:Model(模型)、View(視圖)和Controller(控制器),這三個部分以最少的耦合協(xié)同工作,從而提高應用的可擴展性及可維護性。,,MVC,MVC:M(model)是指數(shù)據(jù)模型,V(View)是指用戶界面,C(Control)則是控制器。使用MVC的目的是將M和V的實現(xiàn)代碼分離,從而使同一個程序可以使用不同的表現(xiàn)形式。模型、視圖與控制器的分離,使得一個模型可以具有多個顯示視圖。如果用戶通過某個視圖的控制器改變了模型的數(shù)據(jù),所有其它依賴于這些數(shù)據(jù)的視圖都應反映到這些變化。因此,無論何時發(fā)生了何種數(shù)據(jù)變化,控制器都會將變化通知所有的視圖,導致顯示的更新。這實際上是一種模型的變化-傳播機制。模型、視圖、控制器3者之間的關系和各自的主要功能。,,MVC的組成部分,視圖(View)代表用戶交互界面,對于Web應用來說就是HTML界面。模型(Model):就是業(yè)務流程/狀態(tài)的處理以及業(yè)務規(guī)則的制定??刂疲–ontroller):可以理解為一個分發(fā)器,他來決定選擇什么樣的模型,選擇什么樣的視圖,可以完成什么樣的用戶請求,控制層并不做任何的數(shù)據(jù)處理。,,MVC帶來的好處,MVC從根本上強制性的將它們分開,最大程度上實現(xiàn)了程序代碼與網(wǎng)頁的分離。數(shù)據(jù)和業(yè)務規(guī)則從表示層分開,所以可以最大化的重用代碼。,,MVC的特點,,MVC特點:多個視圖可以對應一個模型。按MVC設計模式,一個模型對應多個視圖,可以減少代碼的復制及代碼的維護量,一旦模型發(fā)生改變,也易于維護。模型返回的數(shù)據(jù)與顯示邏輯分離。模型數(shù)據(jù)可以應用任何的顯示技術,例如,使用JSP頁面、Velocity模板或者直接產(chǎn)生Excel文檔等。應用被分隔為三層,降低了各層之間的耦合,提供了應用的可擴展性??刂茖拥母拍钜埠苡行?,由于它把不同的模型和不同的視圖組合在一起,完成不同的請求。因此,控制層可以說是包含了用戶請求權限的概念。MVC更符合軟件工程化管理的精神。不同的層各司其職,每一層的組件具有相同的特征,有利于通過工程化和工具化產(chǎn)生管理程序代碼。,,4常用的MVC框架,Struts:----包括struts1和struts2兩個。JSF:JSF是一個標準,目前,JSF是作為JEE5.0的一個組成部分,與JEE5.0一起發(fā)布JSF的行為方法在POJO中實現(xiàn),JSF的ManagedBean無需繼承任何特別的類。因此,無需在表單和模型對象之間實現(xiàn)多余的控制器層。JSF中沒有控制器對象,控制器行為通過模型對象實現(xiàn)。JSF的事件框架可以細化到表單中每個字段。JSF依然是基于JSP/Servlet的,仍然是JSP/Servlet架構,因而學習曲線相對簡單,,2.3用Eclipse構建一個基于MVC模式的JavaWeb應用程序,題目要求:(1)技術要求:按照MVC設計模式,利用JSP、Servlet及JavaBean構建一個簡單的登錄系統(tǒng)。(2)系統(tǒng)功能要求:當用戶在登錄頁面上填寫用戶名和密碼并提交后,系統(tǒng)檢查該用戶是否已經(jīng)注冊,若注冊,系統(tǒng)進入主頁面,否則,進入注冊頁面。系統(tǒng)的工作流程見下圖。,,(2)控制器-1LoginServlet,(1)登錄頁面Login.jsp,(5)數(shù)據(jù)組件userdoadb_op,(6)數(shù)據(jù)庫MySQL,進行驗證,不符合格式,返回注冊頁面,重新注冊,并提示出錯情況,注冊成功,進入登錄頁面,未注冊,,,,,,登錄系統(tǒng)的工作流程,(3)提示:登錄成功Main.jsp(過20秒后再自動進入注冊頁面),(4)進入注冊頁面Register.jsp,,(7)控制器-2RegisterServlet,,(8)提示:注冊失敗Register_err.jsp(過20秒后再自動進入注冊頁面),,,(9)注冊成功Register_succ.jsp(過20秒后再自動進入注冊頁面),,,已注冊,或者,,密碼錯誤,(10)進入主頁面Main2.jsp,,構建系統(tǒng)的處理步驟,(1)數(shù)據(jù)庫設計:構建數(shù)據(jù)庫表T_UserInfo(2)在Eclipse中創(chuàng)建一個項目:Login_Proj(3)構建視圖組件:登錄頁面(login.jsp)、主頁面(main.jsp)、注冊頁面(register.jsp),注冊失敗(Register_err.jsp),注冊成功(Register_succ.jsp)(4)構建控制層組件:一個servlet(LoginServlet.java)---->實現(xiàn)登錄的控制一個servlet(RegisterServlet.Java)-?實現(xiàn)注冊的驗證控制(5)構建業(yè)務邏輯層組件(模型組件):一個JavaBean:user,doa,db_op(6)部署該程序到服務器Tomcat中,然后運行。,,(1)數(shù)據(jù)庫設計:構建數(shù)據(jù)庫表T_UserInfo,利用MySQL數(shù)據(jù)庫,創(chuàng)建數(shù)據(jù)庫:user創(chuàng)建表及其結構:T_UserInfo,數(shù)據(jù)表結構T_UserInfo,注意,該數(shù)據(jù)庫所存放的位置,,(2)在Eclipse中創(chuàng)建一個項目:Login_Proj,按Eclipse建立工程的提示,建立Web工程,工程的名稱為:Login_Proj。,,(3)構建視圖組件:--登錄頁面(login.jsp),選中工程“Login_Proj”,擊右鍵,選“新建”,按Eclipse的提示,建立jsp,名稱為:Login。修改默認jsp內(nèi)容,達到我們所要求的編碼。,,login.jsp的代碼,登錄頁面用戶名:密,,(3)構建視圖組件--主頁面(main.jsp),選中工程“Login_Proj”,擊右鍵,選“新建”,按Eclipse的提示,建立jsp,名稱為:main.jsp。修改默認jsp內(nèi)容,達到我們所要求的編碼。,,main.jsp代碼,主頁面,你成功登錄,20秒后自動進入主頁面!,,類似可以建立其它的頁面:系統(tǒng)頁面main2.jsp注冊頁面register.jsp注冊失敗提示頁面Register_err.jsp注冊成功提示頁面Register_succ.jsp,,構建控制層組件(第4步)建立數(shù)據(jù)JavaBean—用戶(user);建立連接數(shù)據(jù)庫的JavaBean—(doa)建立實現(xiàn)對用戶數(shù)據(jù)庫進行操作的java類--db_op.java,4.1建立數(shù)據(jù)JavaBean—用戶(user),packageJavaBean;publicclassuser{privateStringusername;privateStringpassword;publicStringgetUsername(){returnusername;}publicvoidsetUsername(Stringusername){this.username=username;}publicStringgetPassword(){returnpassword;}publicvoidsetPassword(Stringpassword){this.password=password;}},,4.2建立連接數(shù)據(jù)庫的JavaBean—(doa),packageJavaBean;publicclassdoa{privateStringdb_username;privateStringdb_password;privateStringdb_driver;privateStringdb_connection;publicStringgetDb_username(){returndb_username;}publicvoidsetDb_username(Stringdb_username){this.db_username=db_username;}publicStringgetDb_password(){returndb_password;}publicvoidsetDb_password(Stringdb_password){this.db_password=db_password;}publicStringgetDb_driver(){returndb_driver;}publicvoidsetDb_driver(Stringdb_driver){this.db_driver=db_driver;}publicStringgetDb_connection(){returndb_connection;}publicvoidsetDb_connection(Stringdb_connection){this.db_connection=db_connection;}},,4.3在JavaBean—(doa)的基礎上,建立實現(xiàn)對用戶數(shù)據(jù)庫進行操作的java類---db_op.java,publicclassdb_op{publicConnectiondb_getConnection(){Connectionconn=null;Stringdb_username=null;Stringdb_password=null;Stringdb_driver=null;Stringdb_connection=null;Propertiespro=newProperties();Filefile=newFile("H:\\web_15\\Login_Proj\\src\\db.properties");try{pro.load(newFileInputStream(file));}catch(Exceptione){e.printStackTrace();}db_username=pro.getProperty("db_username","");db_password=pro.getProperty("db_password","");db_driver=pro.getProperty("db_driver",db_driver);db_connection=pro.getProperty("db_connection",db_connection);try{Class.forName(db_driver).newInstance();conn=DriverManager.getConnection(db_connection,db_username,db_password);returnconn;}catch(Exceptione){System.out.println(e);returnnull;}},實現(xiàn)數(shù)據(jù)庫的連接,,publicbooleanselect_1(useru){//查詢用戶是否已經(jīng)注冊Connectionconn=null;ResultSetrs=null;Statementps=null;Stringxm=u.getUsername();Stringpass=u.getPassword();conn=db_getConnection();Strings1="select*fromT_userInfowhereusername="+xm+"andpassword="+pass+"";try{ps=conn.createStatement();rs=ps.executeQuery(s1);if(rs.next()){rs.close();ps.close();conn.close();returntrue;}else{rs.close();ps.close();conn.close();returnfalse;}}catch(SQLExceptione){returnfalse;}},publicbooleanselect_2(Stringu){//在注冊時,查詢是否有重名的用戶已經(jīng)注冊Connectionconn=null;ResultSetrs=null;Statementps=null;conn=db_getConnection();Strings1="select*fromT_userInfowhereusername="+u+"";try{ps=conn.createStatement();rs=ps.executeQuery(s1);if(rs.next()){rs.close();ps.close();conn.close();returntrue;}else{rs.close();ps.close();conn.close();returnfalse;}}catch(SQLExceptione){returnfalse;}},publicvoidappend(useru){//注冊時,添加注冊用戶信息Connectionconn=null;Statementps=null;conn=db_getConnection();Stringxm=u.getUsername();Stringpass=u.getPassword();Strings1="insertintoT_userInfo(username,password)values("+xm+","+pass+")";try{ps=conn.createStatement();ps.executeUpdate(s1);ps.close();conn.close();}catch(SQLExceptione){System.out.println(e);}}},(5)構建控制層組件(第5步):5.1一個servlet(LoginServlet.java)---->實現(xiàn)登錄的控制5.2一個servlet(RegisterServlet.Java)?實現(xiàn)注冊的驗證控制5.3web.xml配置文件的解讀,5.2構建控制層組件:一個servlet(registerServlet.java,publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{Stringxm=(String)request.getParameter("username");Stringmm=(String)request.getParameter("password");Stringmm2=(String)request.getParameter("repassword");Stringtype_err="";db_opb=newdb_op();if(b.select_2(xm)){type_err=xm+":該用戶已經(jīng)注冊!";HttpSessions=request.getSession(true);s.setAttribute("type_err",type_err);response.sendRedirect("Register_err.jsp");}elseif(!mm.equals(mm2)){type_err="兩次密碼不一致錯!";HttpSessions=request.getSession(true);s.setAttribute("type_err",type_err);response.sendRedirect("Register_err.jsp");}else{HttpSessions=request.getSession(true);s.setAttribute("username",xm);s.setAttribute("password",mm);useru=newuser();u.setUsername(xm);u.setPassword(mm);db_opd=newdb_op();d.append(u);response.sendRedirect("Register_succ.jsp");}},,5.1構建控制層組件:一個servlet(LoginServlet.java),publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{useru=newuser();Stringxm="";Stringps="";xm=request.getParameter("username");ps=request.getParameter("password");u.setUsername(xm);u.setPassword(ps);HttpSessions=request.getSession(true);s.setAttribute("username",xm);db_opd=newdb_op();booleantf=d.select_1(u);if(tf){response.sendRedirect("main2.jsp");}else{response.sendRedirect("register2.jsp");}},,5.3web.xml配置文件的解讀和配置,,提示:必須要學會自己修改和配置,這對于我們了解servlet的工作原理和實用有著重要的作用。,JavaWeb應用通過一個基于XML的發(fā)布描述符文件來配置其發(fā)布信息,這個文件名為web.xml,它存放于WEB-INF子目錄下。在web.xml文件中可主要包含如下配置信息:(1)Servlet的定義。(2)Servlet的初始化參數(shù)。(3)Servlet以及JSP的映射。(4)Filter的定義。(5)安全域配置參數(shù)。(6)welcome文件清單。(7)資源引用。(8)環(huán)境變量的定義。,(6)部署該程序到服務器Tomcat中,然后運行另外,必須對系統(tǒng)進行測試和調(diào)試,,總結,該程序的設計關鍵:(1)了解系統(tǒng)流程,給出系統(tǒng)分析,并給出圖形描述;(2)數(shù)據(jù)庫模型的設計:為了使對數(shù)據(jù)庫的操作,具有通用性,采用屬性文件,存放數(shù)據(jù)庫連接的有關信息,通過對數(shù)據(jù)文件的讀,獲取該信息,實現(xiàn)連接;(3)網(wǎng)頁之間是如何傳遞信息的?(4)jsp網(wǎng)頁與servlet之間是如何傳遞信息的:信息由jsp?servlet如何實現(xiàn);信息由servlet?jsp如何實現(xiàn);(5)應該自己逐步設計,絕不能找一個類似的程序修該一下。,,- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設計者僅對作品中獨創(chuàng)性部分享有著作權。
- 關 鍵 詞:
- 用Eclipse開發(fā)java web應用程序 Eclipse 開發(fā) java web 應用程序
裝配圖網(wǎng)所有資源均是用戶自行上傳分享,僅供網(wǎng)友學習交流,未經(jīng)上傳用戶書面授權,請勿作他用。
鏈接地址:http://m.jqnhouse.com/p-3447453.html