桂電Java-EE期末復習重點資料_第1頁
桂電Java-EE期末復習重點資料_第2頁
桂電Java-EE期末復習重點資料_第3頁
桂電Java-EE期末復習重點資料_第4頁
桂電Java-EE期末復習重點資料_第5頁
已閱讀5頁,還剩31頁未讀 繼續免費閱讀

付費下載

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

桂林電子科技大學2015JAVAEE期末復習重點資料(考題全部在里面了,學弟學妹們就能幫你們到這里了!!!)填空題:(30分)第一章概述JavaEE為滿足開發多層體系結構的企業級應用的需求,提出“組件-容器”的編程思想。JavaEE應用的基本軟件單元是JavaEE組件。基本軟件單元的運行環境被稱為容器.兩層體系結構應用程序分為客戶層和服務器層.所謂的企業級應用程序,并不是特指為企業開發的應用軟件,而是泛指那些為大型組織部門創建的應用程序。在三層分布式企業應用程序中,包括客戶層、應用服務器層、數據服務器層三層。JavaEE客戶端組件既可以是一個Web瀏覽器、一個Applet,也可以是一個應用程序。JavaEEweb組件包括servlet和JSP。JavaEE有兩種類型的EJB組件:會話Bean和消息驅動Bean。JavaEE6提供的組件主要包括三類:客戶端組件、Web組件、業務組件。第三章servletServlet組件在進行重定向時,需要使用ServletResponse接口的方法是sendRedirect()。httpServletRequest提供了兩個方法用于從請求中解析出上傳的文件:PartgetPart(Stringname)和Collection<part>getParts()。一個Servlet的配置參數保存在ServletConfig_對象中,這個配置對象(能/不能)不能被其他Servlet訪問。Servlet支持兩種格式的輸入/輸出流:字符輸入輸出流和字節輸入輸出流。MIME的全稱是多媒體Internet郵件擴展(MultimediaInternetMailExtension),ServletResponse中響應正文的默認MIME類型為text/plain,而HttpServetResponse中的響應正文的默認MIME類型為text/html。PDF文件的MIME類型是application/pdf,MicrosoftWord文檔的類型是application/msword。在Servlet中設置MIME類型應使用HttpServletResponse對象的方法setContentType()。所有的Servlet都必須實現下面的兩個接口之一:HttpServlet和GenericServlet。HTTP協議是一種無狀態協議,服務器不記錄關于客戶的任何信息。在Web程序設計中,客戶端以表單方式向服務器提交數據是最常見的方法。表單數據的提交方法有兩種:Get和Post。常見會話跟蹤技術有cookie、URL重寫和隱藏表單域。第四章JSPJSP顯式注釋的語法形式:<!-注釋->;JSP隱式注釋的語法形式:<%--注釋--%>。JSP內置對象的作用范圍有四種page,request,session,application。JSP的include動作組件的語法形式:<jsp:incluepage=”文件名”flush=”true”/>。JSP的forward動作組件的語法形式:<jsp:forwardpage=”網頁名稱”/>。JSP的param動作組件的語法形式:<jsp:paramname=”參數名稱”,value=”值”/>。JSP頁面中聲明變量的基本格式是:<%!變量聲明%>。JSP頁面除了普通HTML代碼之外,還主要有如下三種成分:腳本元素、指令、動作。表達式語言EL提供兩種不同的存取器:點運算符”.”和方括號”[]”。JSP的默認字符編碼是ISO-8859-1。第五章JavaBean在JSP頁面中,與JavaBean有關的標記有三個:<jsp:useBean>、<jsp:setProperty>、<jsp:getProperty>。JavaBean的生命周期范圍有四種是:page、request、session、application。JavaBean在標記<jsp:useBean>中利用Scope屬性聲明JavaBean的生命周期范圍。<jsp:getProperty>用法的一般形式:<jsp:getPropertyname=”beanId”property=”propertyName”>。<jsp:setProperty>用法的一般形式:<jsp:setPropertyname=”beanId”property=”propertyName”value=”propertyValue”>。當JavaBean的某個屬性為null時,使用表達式語言獲得的信息是空字符串還是null對象?答案是空字符串。JSP能夠利用表達式語言訪問JavaBean的屬性,(也能/不能)不能利用表達式語言設置JavaBean的屬性。第六章JSFJSF是一個基于MVC架構的框架,其中模型角色由ManagedBean承擔,實現具體的業務邏輯,視圖角色由XHTML頁面承擔,實現信息展示和與用戶的交互,控制角色由JSF框架承擔,實現具體的控制邏輯。在JSF應用中,當接收到客戶端的JSF請求后,是由JSF框架中的核心控制組件FacesServlet對請求進行統一處理。JSF2.0提供了定義和訪問資源的標準機制,它包含兩個JSF標記訪問資源:<h:outputScript>,<h:outputStylesheet>.JSF提供了兩種類型的導航組件:按鈕和鏈接。在JSF框架下,視圖都是以xhtml的形式存在,它們采用Facelets作為視圖定義語言。JSF框架的導航組件中,鏈接標記有三種:<h:mandLink>、<h:link>、<h:outputLink>JSF在轉換和驗證時都有可能會產生錯誤信息,這些錯誤信息可以通過標記<h:message>顯示出來,而這些預定義的錯誤信息有時是沒有本地化的,為了對這些消息進行本地化設置,可以修改屬性converterMessage、validatorMessage、requiredMessage,讓這些屬性指向本地化資源即可。CDI的全稱是ContextsandDependencyInjection,CDIBean是JavaEE6規范的一項重大功能特性之一,提供了一種更加強大的托管Bean模型。與ManagedBean不同的是,這種托管Bean是由JavaEE應用服務器來管理和控制的。JSF中立即事件類型通過設置組件的immediate屬性來設置,它會將提前進行事件處理操作而無須等到調用應用階段。JSF的核心標記庫有四種:core或f:、html或h:、facelets或ui:、positeponents或posite:。JSF框架中的每個視圖都有一個唯一的String類型的標識,稱為ViewID。(或視圖ID)JSF的視圖組件都是__xhtml________文件,可以通過表達式語言直接引用ManagedBean的屬性和方法。第七章JDBC利用JDBC訪問數據庫過程中,主要涉及三種資源:對數據庫的連接對象Connection,SQL語句對象,訪問結果集對象。給定具體的JDBCURL,獲取數據庫連接的方法是調用DriverManager對象的getConnection方法來獲取一個代表數據庫連接的java.sql.connection對象。ResultSet具有三個獲取流的方法:getBinaryStream、getAsciiStream、getUnicodeStream.JDBC支持三種類型的Statement對象:Statement,PreparedStatement,CallableStatement。JDBCURL的格式是:jdbc:子協議:數據庫定位器.第八章JPAJPA操作的基本單元稱為Entity(或實體),它其實是一個普通的Java對象,通常對應數據庫中的一個表。在聲明復合主鍵時,需要的兩個注解是:@Embeddable、@EmbeddedId。JPA提供了注解@GenerateValue來自動生成主鍵。注解@GenerateValue支持四種主鍵生成策略:Table、Sequence、Identity、Auto。在JPA中,注解@Transient表示的含義是:其標注的屬性不需要持久化。在JPA中,如果使用了java.util.Date類型,則必須額外標注@Temporal注解說明轉化成java.sql包中的哪種類型。在JPA中,持久化上下文有兩種類型,它們是事務范圍的持久化上下文,擴展范圍的持久化上下文。在JPA中,新增一個實體,調用EntityManage的方法是persist(),查詢時調用的方法是find(),該方法的兩個參數是Entity類型,Entity的ID。命名參數的格式是“:+參數名”,位置參數的格式是“?+位置編號”。在JPQL中,為了支持使用數據庫本地支持的SQL語句,提供了一種稱為本地查詢的方式,該查詢方式也分為動態查詢和命名查詢兩種類型。ORM全稱是Object/RelationMapping。Entity中的char[],Character或String類型的屬性通常映射為CLOB(CharacterLargeObjects)類型的字段,而Entity中的byte[],Byte[]或實現了serializable接口的對象通常映射為BLOB(BinaryLargeObject)類型的字段。JPA支持兩種類型的加載方式:主動加載和被動加載。(--EAGERandLAZY??)第九章EJBEJB組件分為兩種類型:會話Bean,消息驅動Bean。在EJB3.1規范中,EJB組件的實現可以僅僅是一個POJO,其全稱是PlainOldJavaObject,簡單的原始Java對象。它不繼承任何類型,也不需要任何實現接口。會話Bean分為三種類型:有狀態會話Bean,無狀態會話Bean,單例Bean。單例Bean可以采用兩種并發管理方式,一種是由容器托管,另一種是由Bean自身來實現的。EJB組件通過以下四種機制與容器交互:回調方法,EJBContext,JNDI,上下文和依賴注入。名詞解釋(望了解,不在出題范圍)JNDIJDBCJTAJAASJCACDIJMSJSFJPAJavaEE企業級應用程序servletJSPJPQL簡答題(30分,6題*5分)第一章概述三層體系結構的優點有哪些?p2安全性高:中間件服務器層隔離了客戶端程序對數據服務器的直接訪問,保護信息的安全易維護:業務規則變化后,客戶端程序基本不做改動快速響應:通過中間件服務器層的負載均衡以及緩存數據能力系統擴展靈活兩層體系結構的缺點有哪些?p2-3與上一題相反(1)安全性低:客戶端程序與數據庫服務器直接連接,容易被人入侵數據庫(2)部署困難:客戶端的應用邏輯導致客戶端程序肥大(3)耗費系統資源:每個客戶端程序都要直接連接到數據庫服務器,導致系統性能下降。簡述JavaEE的“組件-容器”編程思想。(P5,有兩點,與填空題第1題互斥)容器為組件提供必需的底層基礎功能,容器提供的底層基礎功能被稱為服務,組件通過調用容器的標準服務來與外界交互,為滿足企業級應用靈活部署,組件與容器之間必須既松散耦合,又能夠強有力地交互。JavaEE體系結構的優點?p11,4點獨立于硬件配置和操作系統堅持面向對象的設計原則靈活性、可移植性和互操作性輕松的企業信息系統集成第三章ServletServlet的基本工作流程?p21:6點(1)客戶端將請求發送到服務器。(2)服務器上的Web容器實例化(裝入)Servlet,并為Servlet進程創建線程。(3)Web容器將請求信息發送到Servlet。(4)Servlet創建一個響應,并將其返回到Web容器。(5)Web容器將響應發回客戶機。(6)服務器關閉或Servlet空閑時間超過一定限度時,調用destory()方法退出。在創建Web應用程序時,通過Servlet上下文可以實現哪些功能?p61,4點(1)訪問Web應用程序資源(2)在Servlet上下文屬性中保存Web應用程序信息(3)獲取初始化參數信息(4)提供日志支持。HttpServletResponse的sendRedirect方法與RequestDispatcher的forward方法有什么區別?p68:3點操作本質上:前者是完全的跳轉,瀏覽器將會得到跳轉的地址,瀏覽器中顯示出轉向后的地址;后者是容器中控制權的轉向,瀏覽器中地址欄不會顯示出轉向后的地址。性能上:前者是結束第一次請求,由瀏覽器發出一個新的請求;后者仍舊是在同一請求處理過程中,因此,更加高效。后者的局限在于只能轉向到web應用內部的資源,而在有些情況下,需要跳轉到其他服務器上的某個資源,則必須使用前者的sendRedirect。Filter的主要用途是什么?p69:3點(不再出題范圍)第四章JSP列舉JSP的5個內置對象,并做簡要說明。JSP供提供九種內置對象:Request代表的是來自客戶端的請求Response代表的是對客戶端的響應Out代表了向客戶端發送數據的對象Session代表服務器與客戶端所建立的會話Application負責提供應用程序在服務器中運行時的一些全局信息Config提供一些配置信息,封裝初始化參數和一些方法pagecontext代表的是當前頁面運行的一些屬性page代表了正在運行的由JSP文件產生的類對象exception。代表了JSP文件運行時所產生的例外對象答:request、response、out、session、application、config、pageContext、page、exception(任選5個,并用一句話說明)<jsp:forward>與response.sendRedirect()實現重定位有何不同?p114sendRedirect()是向瀏覽器發送一個特殊的Header,然后由瀏覽器來做轉向,轉到指定的頁面,瀏覽器地址欄可看到地址變化Jsp:forward是直接在服務器端進行重定位簡述JSP內置對象的作用范圍。P122第五章JavaBean什么樣的Java類是一個JavaBean?p129:3點對于數據類型“protype”的每個可讀屬性,Bean必須有下面簽名的一個方法:publicproptypegetProperty(){}對于數據類型“protype”的每個可寫屬性,Bean必須有下面簽名的一個方法:publicsetProperty(proptypex){}定義一個不帶任何參數的構造函數。JSP如何與JavaBean結合?二者如何傳遞消息?(與填空題28題同一知識點)JSP可以使用三個標記<jsp:useBean>、<jsp:setProperty>、<jsp:getProperty>與JavaBean進行結合,還可以使用表達式語言訪問JavaBean的屬性。JSP可以使用腳本、標記、表達式訪問JavaBean的屬性,還可以通過腳本、標記、request對象的參數設置JavaBean的屬性。<jsp:forward>與response.sendRedirect()實現重定位有何不同?p114頁第六章JSF什么是JSF?它有哪些優點?答:JSF(JavaServerFaces)是一種用于構建JavaEEWeb應用表現層的框架標準,提供了一種以組件為中心的事件驅動的用戶界面構建方法。(2)優點在于:(3分)(1)JSF是JavaEE規范推薦的表現層框架標準(2)JSF吸收了流行框架的標準(3)便于與其他JavaEE技術集成描述ManagedBean的生命周期。P153(5點,每個1分)生命周期范圍對應注解對應JavaBean的生命周期范圍作用域Application@ApplicationScopedApplication整個應用Session@SessionScopedSession整個會話View@ViewScoped整個視圖Request@RequestScopedRequest整個請求None臨時答:(1)Application:@ApplicationScoped,整個應用(2)…(按上述方式列出)描述JSF的常規流程的6個階段,并簡要說明。P172恢復視圖(Restoreview)應用請求值(Applyrequests)獲取每個組件的當前狀態。處理校驗(Processvalidations)校驗每個組件的當前狀態是否合法更新模型值(Updatemodelvalues)UI組件的狀態與業務邏輯組件調用應用程序(Invokeapplication)進行消息事件處理顯示響應(Renderresponse)簡要說明JSF標記庫?p161表6-2(每個標記庫:標記庫名稱、前綴和簡要說明)標記庫名稱前綴命名空間說明Coref:/jsf/core對組件進行屬性設置和功能綁定Htmlh:/jsf/html生成HTML標記faceletsui:/jsf/facelets頁面模板標記positeponentposite:/jsf/posite生成復合組件JSF與JSP支持表達式語言的區別是什么?p165,3點(考題)使用的分隔符不同:JSF-#JSP-$作用的方向不同:JSP只是訪問并輸出變量的和Bean的值,JSF既可以輸出,也可以更新隱式對象不同:facesContext和view是專門針對JSF,其他大部分隱式變量相同。列舉JSF對請求處理的6個階段。P172列舉JSF框架中Bean驗證框架的5個內置注解。P204MinMaxSizeNotNullNullFutureLastPatternJSF框架支持哪四種事件類型?P204,4個要點即可ValueChange事件:輸入值變更事件Action事件:按鈕事件Phase事件:JSF請求處理階段事件System事件:JSF應用系統事件Ajax與傳統的web工作模型有何區別?p220,兩點傳統的web工作模型實際上是一種請求-響應模型,是一種同步通信方式,即用戶提交請求并等待服務器返回響應后的更新頁面。Ajax是一種異步通信模式,Ajax采用客戶端腳本與web服務器通信,客戶端不需要等待服務器的響應,不必采用導致中斷交互的完整頁面刷新,就可以動態地更新web頁面。第七章JDBC畫出JDBC訪問數據庫層次結構?p226圖7-6簡述JDBC工作原理。P226頁,3句話(這題是我自己找的答案,不知是否正確,by麥龍)JDBC通過提供一個抽象的數據庫接口,使得程序開發人員在編程時可以不用綁定在特定數據庫廠商的API上,大大增加了應用程序的可移植性。什么是數據源?什么是連接池?二者之間的關系?答:數據源存儲了所有建立數據庫連接的信息。(1分)連接池是JDBC為第三方應用服務器提供的一個由數據庫廠家實現的管理標準接口,緩存一定數量的數據庫鏈接資源對象。(2分)所有連接池和數據源的實現信息都存儲在JNDI中。連接池一定以數據源的形式提供服務。但是數據源并不依賴連接池。數據源保存的實例可以直接通過JDBC來訪問數據庫。(2分)列舉ResultSet的光標5個屬性。P239ResultSet.TYPE_FORWORD_ONLYResultSet.TYPE_SCROLL_INSENSITIVEResultSet.TYPE_SCROLL_SENSITIVEResultSet.CONCUR_READ_ONLYResultSet.CONCUR_UPDATABLE第8章JPA描述命名查詢與動態查詢的區別?創建一個動態查詢,使用方法EntityManager的createQuery(),它有一個字符串參數,表示一個JPQL查詢。而命名查詢是靜態查詢,由嵌入到@NamedQuery注解或等價XML描述中的元數據表示。與動態查詢相比,命名查詢執行效率更高。因為持久化提供器在應用程序啟動時將JPQL字符串翻譯為SQL,而不是在運行時進行轉換。論述Entity的狀態和生命周期變化?P282-283簡述JPA中提供的三種不同的策略實現繼承映射?p273(與填空題)Single-table策略Joined-subclass策略Table-per-concrete-class策略簡述JPA主鍵自動生成的四種策略?P261(與填空題55題是同一知識點)(1)Table策略在這種策略下,JPA實現使用關系型數據庫中的一個表(Table)來生成主鍵。這種策略可移植性比較好,所有的關系型數據庫都支持這種策略。(2)Sequence策略一些數據庫例如Oralce,提供一種內置的叫做“序列”(sequence)的機制來生成主鍵。但是不是所有數據庫都支持序列機制。(3)Identity策略一些數據庫,用一個Identity列(即自動增長列)來生成主鍵。由于是采用自動增長列,因此,Entity中作為主鍵映射的屬性的有效類型只能是BIGINT、INT和SMALLINT。(4)Auto策略它是JPA實現的默認主鍵生成策略。使用AUTO策略就是將主鍵生成的策略交給JPA實現來決定,由它從Table策略,Sequence策略和Identity策略三種策略中選擇合適的主鍵生成策略。不同的JPA實現使用不同的策略,例如在GalssfishServer中的JPA默認實現EclipseLink使用的是Table策略。第9章EJB簡述EJB與容器交互的四種機制?p298(與填空題69同一知識點)回調方法EJBContextNDI上下文和依賴注入畫出有狀態會話Bean的生命周期示意圖。(p314)畫出無狀態會話Bean的生命周期示意圖。(p303)簡述EJB的部署描述信息。(p301)部署描述信息有一個預先定義的格式,所有符合JavaEE規范的EJB組件都可以使用此格式來描述自身信息,而所有符合JavaEE規范的服務器必須知道如何讀取此格式。這種格式在XML文檔類型定義(DTD)中指定。部署描述信息描述了EJB的類型及接口方法和EJB實現類的名稱。它還指定了EJB中每個方法的事務性屬性、哪些安全性角色可以訪問每個方法。部署描述信息在jar必須以特定名稱META-INF/ejb-jar.xml保存。閱讀程序,補充空白區域代碼。(20分,10分*2)參考后面第六點編程題(20分,10分*2)如何編寫JPA的幾種映射關系:一對一;一對多;多對多。(降低要求,掌握缺省形式的編寫即可,定制形式暫不要求掌握)舉例:每個教師可以講授多門課程,每門課程可由多個教師來講授。教師實體Teacher具有工號、姓名、性別、年齡、講授課程,課程實體Course具有課號、課程名、學分、授課教師。請按JPA規范定義實體類Teacher、Course。編程:@EntitypublicclassTeacher{@IdString學號;String姓名;int年齡;String性別;String郵箱地址;Stringxx號碼;List<Course>所選課程;//自動形成多對多映射//….}@EntitypublicclassCourse{@Id String課號;String課程名;int學分;List<Teacher>teacher;//….}有狀態會話Bean與無狀態會話Bean的編寫舉例:編寫一個無狀態會話Bean,統計一行文本(用一個字符串表示)中單詞的個數,要求:編寫Bean的實現文件、接口文件、企業客戶端類的main方法。(提示:字符串分解可采用正則表達式”[\\s\\d\\p{Punct}]+”)編程:@StatelesspublicclassWordCountBeanimplementsWordCountRemote{ publicintcount(Strings){Stringregex=”[\\s\\d\\p{Punct}]+”;Stringwords[]=s.splits(regex);System.out.println(“單詞個數:”+words.length());}}@RemotePublicinterfaceWordCountRemote{intcount(Strings);}publicclassMain{@EJBprivatestaticWordCountRemotecounter;publicstaticvoidmain(String[]args){System.out.println(counter.count(“hello,everyone!!”));}}重點編程考察(閱讀程序,填空)購物車源代碼(Servlet版):shopcart.html<html><head><title>購物車</title><metacharset="GBK"></head><body><formmethod=POSTaction=CartServlet>①<br>請查找想要添加或者移除的產品<br>產品列表:<SELECTNAME="item"><OPTION>NOKIA7310<OPTION>《LoveActually》CD<OPTION>新概念英語4<OPTION>護眼寶臺燈<OPTION>JSPPrograming<OPTION>GRE紅寶書<OPTION>《ListenToThis》<OPTION>《TOEFL詞匯》<OPTION>《世界地圖冊》</SELECT><br><br><INPUTTYPE=submitname="submit"value="add"><INPUTTYPE=submitname="submit"value="remove"></form></body></html>CartServlet.javapackagechapter3;@WebServlet(name="CartServlet",urlPatterns={"/CartServlet"})publicclassCartServletextendsHttpServlet{ArrayList<String>cart=newArrayList<>();protectedvoidprocessRequest(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{response.setContentType("text/html;charset=GBK");request.setCharacterEncoding("GBK");Stringitem=request.getParameter("item");②Stringsubmit=request.getParameter("submit");③if(submit.equals("add")){cart.add(item);}④if(submit.equals("remove")){if(cart.contains(item))cart.remove(item);}try(PrintWriterout=response.getWriter()){out.println("<!DOCTYPEhtml>");out.println("<html>");out.println("<head>");out.println("<title>購物車</title>");out.println("</head>");out.println("<body>");out.println("<h1>您已選購的商品如下:</h1>");for(Stringstr:cart){out.println(str);out.println("<br>");}out.println("<hr>");RequestDispatcherdispatcher=request.getRequestDispatcher("shopcart.html");dispatcher.include(request,response);⑤out.println("</body>");out.println("</html>");}}//NetBean自動生成代碼}購物車(JavaBean版)cart.jsp<%@pagecontentType="text/html;charset=gbk"language="java"import="java.sql.*"%><html><head><title>JSP的購物車實例</title></head><body><formtype=POSTaction=shopcart.jsp①><BR>請查找想要添加或者移除的產品<br>產品列表:<SELECTNAME="item"><OPTION>NOKIA7310<OPTION>《LoveActually》CD<OPTION>新概念英語4<OPTION>護眼寶臺燈<OPTION>JSPPrograming<OPTION>GRE紅寶書<OPTION>《ListenToThis》<OPTION>《TOEFL詞匯》<OPTION>《世界地圖冊》</SELECT><br><br><INPUTTYPE=submitname="submit"value="add"><INPUTTYPE=submitname="submit"value="remove"></form></body></html>shopcart.jsp<%@pagecontentType="text/html;charset=gbk"language="java"import="java.sql.*,.cart.*"%><html><body><jsp:useBeanid="cart"scope="session"class=".cart.ShopCart"②/><jsp:setPropertyname="cart"property="*"/><% Stringsubmit=cart.getSubmit(); Stringitem=cart.getItem(); if(submit==null){ cart.addItem(item);} if(submit.equals("add")) cart.addItem(item); elseif(submit.equals("remove")) cart.removeItem(item); cart.reset();%><br>目前在您的購物車中有如下商品:<ol><% String[]items=cart.getItems();③ for(inti=0;i<items.length;i++){%><li><%out.print(newString((items[i]).getBytes("ISO8859-1"),"gbk"));④%><% }%></ol><hr><%@includefile="cart.jsp"⑤%></body></html>ShopCart.javapackage.cart;publicclassShopCart{Vectorv=newVector();Stringsubmit=null;Stringitem=null;publicvoidaddItem(Stringname){ v.addElement(name);}publicvoidremoveItem(Stringname){ v.removeElement(name);}publicvoidsetItem(Stringname){ item=name;}publicStringgetItem(){ returnthis.item;}publicvoidsetSubmit(Strings){ submit=s;}publicStringgetSubmit(){ returnthis.submit;}publicString[]getItems(){String[]s=newString[v.size()]; v.copyInto(s); returns;}publicvoidreset(){ submit=null; item=null;}}采用JSP編程,完成一個問卷調查的小應用,該應用程序由兩個部分構成:input.jsp是調查問卷,getParam.jsp是對問卷進行處理的頁面。(JSP版)Input.jsp<%@pagecontentType="text/html"pageEncoding="GBK"%><html><head><metahttp-equiv="Content-Type"content="text/html;charset=GBK"><title>JSPPage</title></head><body><formaction="getParam.jsp">①姓名<inputtype="text"name="UserName"><br>選出你喜歡吃的水果:<inputtype="checkbox"name="checkbox1"value="蘋果">蘋果<inputtype="checkbox"name="checkbox1"value="西瓜">西瓜<inputtype="checkbox"name="checkbox1"value="桃子">桃子<inputtype="checkbox"name="checkbox1"value="葡萄">葡萄<inputtype="submit"②value="提交"></form></body></html>getParam.jsp<%@pagecontentType="text/html"pageEncoding="GBK"%><html><head><metahttp-equiv="Content-Type"content="text/html;charset=GBK"><title>JSPPage</title></head><body>你好,<%!StringName;%><%request.setCharacterEncoding("GBK");③Name=request.getParameter("UserName");④Stringstars=newString("你喜歡吃的水果有:");String[]paramValues=request.getParameterValues("checkbox1");⑤ or(inti=0;i<paramValues.length;i++)stars+=paramValues[i]+"";%><%=Name%><br><%=stars%></body></html>JSP參數傳遞的例子(功能要求會改變)select.jsp<%@pagecontentType="text/html"pageEncoding="UTF-8"%><html><head><title>選擇</title></head><body><FORMaction="sum.jsp"method="post">①<P>選擇計算方式<Selectname="sum"size=2><OptionSelectedvalue="1">計算1到n的連續和<Optionvalue="2">計算1到n的平方和<Optionvalue="3">計算1到n的立方和</Select><P>選擇n的值:<Selectname="n"><Optionvalue="10">n=10<Optionvalue="20">n=20<Optionvalue="30">n=30<Optionvalue="40">n=40<Optionvalue="50">n=50<Optionvalue="100">n=100</Select><BR><BR><INPUTTYPE="submit"value="提交"name="submit"></FORM></body></html>sum.jsp<%@pagecontentType="text/html"pageEncoding="UTF-8"%><html><head><title>求和</title></head><body><%longsum=0;Strings1=request.getParameter("sum");②Strings2=request.getParameter("n");③if(s1==null)s1="";if(s2==null)s2="0";if(s1.equals("1")){intn=Integer.parseInt(s2);for(inti=1;i<=n;i++){sum=sum+i;}}elseif(s1.equals("2")){intn=Integer.parseInt(s2);for(inti=1;i<=n;i++){sum=sum+i*i;}}elseif(s1.equals("3")){intn=Integer.parseInt(s2);for(inti=1;i<=n;i++){sum=sum+i*i*i;④}}%><p>您的求和結果是<%=sum%>⑤</p></body></html>問卷調查(Servlet版)index.html<html><head><title>TODOsupplyatitle</title><metacharset="GBK"><metaname="viewport"content="width=device-width,initial-scale=1.0"></head><bodybgcolor="#FFFFFF">選擇你喜歡吃的水果:<formname="form1"method="post"action="multichoice"><inputtype="checkbox"name="checkbox1"value="蘋果">蘋果<inputtype="checkbox"name="checkbox1"value="西瓜">西瓜<inputtype="checkbox"name="checkbox1"value="桃子">桃子<inputtype="checkbox"name="checkbox1"value="葡萄">葡萄<inputtype="submit"name="Submit"value="提交"><inputtype="reset"name="reset"value="重置"></form></body></html>MultiChoiceServlet.javapackage.servlet;@WebServlet(name="MultiChoiceServlet",urlPatterns={"/multichoice"})publicclassMultiChoiceServletextendsHttpServlet{protectedvoidprocessRequest(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{//response.setContentType("text/html;charset=UTF-8");response.setContentType("text/html;charset=GBK");request.setCharacterEncoding("GBK");try(PrintWriterout=response.getWriter()){/*TODOoutputyourpagehere.Youmayusefollowingsamplecode.*/String[]paramValues=request.getParameterValues("checkbox1");Stringtemp=newString("");for(inti=0;i<paramValues.length;i++)temp+=paramValues[i]+"";out.println("<!DOCTYPEhtml>");out.println("<html>");out.println("<head>");out.println("<title>ServletMultiChoiceServlet</title>");out.println("</head>");out.println("<body>");out.println("<h1>你喜歡吃的水果有"+temp+"。</h1>");out.println("</body>");out.println("</html>");}}//…Netbean自動生成代碼。}JSF導航規則Reg2.xhtml<?xmlversion="1.0"encoding="UTF-8"?><htmlxmlns="http://./1999/xhtml"xmlns:h="http://java.sun./jsf/html"xmlns:f="http://java.sun./jsf/core"><head><title>注冊</title></head><body><h:form><h2>用戶注冊</h2><h4>請提交注冊信息</h4><table><tr><td>姓:</td><td><h:inputTextlabel="FirstName"id="fname"value="#{userBean.firstName}"required="true"></h:inputText><h:messagefor="fname"/></td></tr><tr><td>名:</td><td><h:inputTextlabel="LastName"id="lname"value="#{userBean.lastName}"required="true"></h:inputText><h:messagefor="lname"/></td></tr><tr><td>性別:</td><td><h:selectOneRadiolabel="Sex"id="sex"value="#{userBean.sex}"required="true"><f:selectItemitemLabel="男"itemValue="男"/><f:selectItemitemLabel="女"itemValue="女"/></h:selectOneRadio><h:messagefor="sex"/></td></tr><tr><td>郵箱地址:</td><td><h:inputTextlabel="EmailAddress"id="email"value="#{userBean.email}"required="true"></h:inputText><h:messagefor="email"/></td></tr></table><p><h:mandButtonvalue="注冊"action="#{userBean.addUser}①"/></p></h:form></body></html>done.xhtml<?xmlversion="1.0"encoding="UTF-8"?><htmlxmlns="http://./1999/xhtml"xmlns:h="http://java.sun./jsf/html"xmlns:f="http://java.sun./jsf/core"><head><title>注冊</title></head><body><h:form><h2>用戶注冊</h2><h4>注冊信息</h4><h:messages/><table><tr><td>姓:</td><td><h:outputTextvalue="#{userBean.firstName}"/></td></tr><tr><td>名:</td><td><h:outputTextvalue="#{userBean.lastName}"/></td></tr><tr><td>性別:</td><td><h:outputTextvalue="#{userBean.sex}"/></td></tr><tr><td>郵箱地址:</td><td><h:outputTextvalue="#{userBean.email}"/></td></tr></table></h:form></body></html>faces-config.xml<?xmlversion='1.0'encoding='UTF-8'?><faces-configversion="2.2"xmlns="/xml/ns/javaee"xmlns:xsi="http://./2001/XMLSchema-instance"xsi:schemaLocation="/xml/ns/javaee/xml/ns/javaee/web-facesconfig_2_2.xsd"><navigation-rule><from-view-id>/reg2.xhtml</from-view-id><navigation-case><from-oute>success</from-oute>2分<to-view-id>/done.xhtml</to-view-id>2分</navigation-case><navigation-case><from-oute>failure</from-oute>2分<to-view-id>/reg2.xhtml</to-view-id>2分</navigation-case></navigation-rule></faces-config>managedBeanpackageedu.guet;@ManagedBean@RequestScopedpublicclassUserBean{protectedStringfirstName;protectedStringlastName;protectedStringsex;protectedStringemail;publicStringgetFirstName(){returnfirstName;}publicvoidsetFirstName(StringfirstName){this.firstName=firstName;}publicStringgetLastName(){returnlastName;}publicvoidsetLastName(StringlastName){this.lastName=lastName;}publicStringgetSex(){returnsex;}publicvoidsetSex(Stringsex){this.sex=sex;}publicStringgetEmail(){returnemail;}publicvoidsetEmail(Stringemail){this.email=email;}publicUserBean(){}publicStringaddUser(){booleanadded=true;Randomrnd=newRandom();intrndInt=newInteger(rnd.nextInt(10));if(rndInt<5)added=false;elseadded=true;Stringoute=null;if(added){oute="success";}else{oute="failure";}returnoute;}}智力小測驗(JSF)clever.xhtml<htmlxmlns="http://./1999/xhtml"xmlns:h="/jsf/html"xmlns:ui="/jsf/facelets"><head><title>腦筋急轉彎</title></head><body><h:body><h:form><h3>腦筋急轉彎</h3><p>您答對了#{quizBean.score}①題</p><p>#{quizBean.current.question}②</p><p><h:inputTextvalue="#{quizBean.answer}③"/></p><p><h:mandButtonvalue="提交"/></p></h:form></h:body></body></html>problem.javapackage.guet;publicclassProblemBeanimplementsSerializable{privateStringquestion;privateStringanswer;publicStringgetQuestion(){returnquestion;}publicvoidsetQuestion(Stringquestion){this.question=question;}publicStringgetAnswer(){returnanswer;}publicvoidsetAnswer(Stringanswer){this.answer=answer;}publicProblemBean(Stringquestion,Stringanswer){this.question=question;this.answer=answer;}publicProblemBean(){}}QuizBean.javapackage.guet;@ManagedBean@SessionScopedpublicclassQuizBeanimplementsSerializable{privateArrayList<ProblemBean>problems=newArrayList<>();privateintcurrentIndex;privateintscore;publicQuizBean(){problems.add(newProblemBean("制造日期與有效日期是同一天的產品是什么?","報紙"));problems.add(newProblemBean("什么東西肥得最快,瘦得更快?","氣球"));problems.add(newProblemBean("放一支鉛筆在地上,使任何人都無法跨過,怎么做?","放在墻邊"));problems.add(newProblemBean("青蛙為什么能跳得比樹高?","樹不會跳"));problems.add(newProblemBean("最不聽話的是誰?","聾子"));publicvoidsetProblems(ArrayList<ProblemBean>newValue){problems=newValue;currentIndex=0;score=0;}publicProblemBeangetCurrent(){returnproblems.get(currentIndex);④}publicvoidsetAnswer(StringnewValue){try{if(getCurrent().getAnswer().equals(newValue)⑤){++score;}else{System.out.println("notequal");}currentIndex=(currentIndex+1)%problems.size();}catch(Exceptionex){System.out.printf(ex.toString());}}publicintgetScore(){returnscore;}publicStringgetAnswer(){return"";}}智力小測驗JSFAjax版reg.xhtml<htmlxmlns="http://./1999/xhtml"

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論