多人對于Java都非常熟悉了,這是當前互聯網開源技術棧中最主流的編程語言之一,很多互聯網應用都基于Java語言開發。在學習Java的過程中,同學們經常會接觸到Java EE和J2EE兩個名詞,但是卻不太了解他們到底有什么區別,我們今天就來給大家解釋一下。
J2EE(Java 2Platform, Enterprise Edition)是 Sun Microsystems 公司在 1999年推出的一種企業級應用程序開發平臺。隨著時間的推移,J2EE逐漸發展成為了Java EE(Java Platform, Enterprise Edition)。
J2EE改名為Java EE主要是為了與Java技術的整體品牌保持一致。隨著時間的推移,Java 技術不斷發展和演進,Sun公司(現已被Oracle收購)希望通過將J2EE重命名為JavaEE,更好地反映出這一技術在Java生態系統中的核心地位。
此外,改名也有助于強調Java EE是 Java 平臺的一部分,與其他Java技術(如J2SE和 J2ME)有著緊密的聯系。這樣的命名一致性有助于提高技術的整體認知度和品牌形象。
雖然名稱發生了變化,但它們在本質上是相同的,Java EE是J2EE的后續版本。
J2EE包括了J2SE(Java 2 Platform, Standard Edition)和 J2ME(Java 2 Platform, Micro Edition)。J2SE是 Java 標準版,用于開發桌面應用程序和服務器端應用程序;J2ME 則是用于開發移動設備應用程序的版本。
一、J2EE 的歷史
J2EE 的歷史可以追溯到 Java 語言的早期。隨著企業應用程序的需求不斷增長,J2EE 應運而生,提供了一系列的框架和技術,以支持企業級應用程序的開發、部署和管理。它包括了企業級 JavaBeans(EJB)、Servlets、JSP(Java Server Pages)等核心技術。
二、J2EE 的主要技術
三、為什么要轉換為 Java EE
隨著技術的不斷演進和市場的需求變化,J2EE也在不斷發展和改進。轉換為 Java EE是為了更好地適應市場的需求和技術的發展。Java EE 提供了更強大的功能和更好的擴展性,以滿足現代企業應用程序的要求。
四、市場因素
市場因素在推動向Java EE的轉換中起到了重要作用。隨著企業應用程序的復雜性增加,對分布式系統、Web服務、安全性等方面的需求也日益增長。Java EE提供了更完善的企業級特性,如支持分布式事務、消息隊列、集群管理等。此外,Java EE與其他開源框架和技術的集成也更加容易,這使得開發人員能夠更快速地構建高效、可靠的企業應用程序。
另外,Java EE也在不斷適應云計算和移動應用的發展趨勢。它提供了對云原生架構的支持,如微服務和容器化部署。這使得企業能夠更好地利用云計算的優勢,實現更靈活、可擴展的應用架構。
總的來說,J2EE和Java EE的區別主要在于名稱的變化,它們都是企業級應用程序開發。
avaEE
在進行java EE的學習之前我是做了一些準備,先把html css js 基礎這些給學習了,因為在webapp的數據額呈現的方式都是通過html解析展示到用戶的客戶端,在我們后面接觸的東西99%的都是B/S架構所以先把這個些技術點給學會,會用標簽技術即可。我還記得在大二的時候我們的web前端課程上我仿照梅賽德斯-奔馳網站做了個靜態頁面,可以看下效果圖,里面主要用了html+CSS+JS這些。
搞定了那些開始去了解后端是如何進行構建web項目的,依次是從下面這些內容進行學習的。同樣 黑色字體是需要學習的技術棧,里面包含了一些小的技術點
XML 解析 先從XML解析 因為XML也是一門標記性語言,在webapp項目中使用的是最多的。從XML 文檔聲明,元素,屬性,實體引用,xml約束,dtd約束語法,xml解析(包含 dom 解析,sax解析) 以及是如何使用的在webapp項目中。
比如下面的一個簡單的XML結構:
<? xml version="1.0" encoding="gbk"?>
<? xml-stylesheet type="text/css"href="1.css"?>
<country>
<a>中國</a>
<b>美國</b>
<c>法國</c>
<d>日本</d>
</country>
web應用概念 主要去了解,靜態web資源,動態web資源,常見的動態web資源開發技術,C/S B/S相關概念。web應用的目錄結構,web.xml作用。
Tomcat 有上面的web應用的概念,那我們的應用應該在哪個地方運行呢,這樣一思考是不是我們需要一個容器進行加載這些所需要的東西呢,tomcat 安裝 ,tomcat配置。下圖顯示的是我在服務器中的搭建的tomcat.
http協議 http請求(請求行,請求頭,請求實體),http響應 (狀態行,響應頭)學習這個的時候我們好像還沒學習計算機網絡,因為計算機網絡是大二下學期才開始學的,當時還沒有太多的概念只是跟著視頻進行學習。學習完后就去百度這個東西到底是干啥么。后面慢慢明白技術的本質了,他解決了網絡之間的通信的問題,后面你可能還要去了解https 為什么http協議不安全,以及CxSF。
response 什么是response,repose輸出數據,實現以下幾個功能,文件下載,定時刷新頁面,控制是否緩存資源,請求重定向。設置編碼格式
request 什么是request ,實現以下幾個功能,獲取客戶機信息,獲取請求頭信息,獲取請求參數,獲取請求域傳遞對象,實現請求轉發與請求包含。
jsp java server pages 概念,語法,指令,jsp標簽,九大隱式對象(request,response,config,application,page,session,pageContent,exception,out) 四大作用域 (PageContext.APPLICATIONSCOPE,PageContext.SESSIONSCOPE,PageContext.REQUESTSCOPE,PageContext.PAGESCOPE )
會話技術-Session,Cookie 需要學習 會話的概念,Session 服務器技術,作用域,聲明周期,原理,URL重寫技術 ,Session 案例(用戶登錄注銷,防止表單重復提交,實現一次性驗證碼) cookie的概念,cookie案例. 比如下面兩幅圖片就是瀏覽器中cookie和session的顯示。
學完這些可以做個小的項目了我記得當時我們做了一個學生管理系統具體部分代碼文件如下圖所示。
javaBean :javabean用于把大量的java代碼提取出來,jsp頁面負責接受頁面的請求 javaBean負責裝處理的數據 ,了解即可
MVC模式 三層架構的概念。軟件分層。
Servlet :為什么出現Servlet, Servlet聲明周期(init(),service(),destory()),Servlet調用過程,
Filter:Filter概念,FilterChain,FilterConfig,過濾器的應用場景
listener:監聽器概念,我還記得的學習這個的時候是大二寒假了,當時寒假在家我學習的這個,還有一個就是那個EStore項目:當時還總結了都學習了哪些東西。
這個也是在寒假學習的,這樣算下來寫代碼的時間剛好一年,這個時間節點,我似乎迷茫了我不知道后面要學習什么了,當時聽人家說框架不用學習,然而在一次和其他人交流時說出來可能不用你會框架但是你必須要會用,面試會問的。好家伙當時我聽到這里我就準備準備去找些資源看看學習路線的需求,等到開學我就在閑暇時間學習框架去了。
數據庫學習 :在學習框架之前我把數據庫給重新過了一遍,因為當時正好我們要學習這個數據庫原理。所以順便把mysql和sqlserver進行學習了,我記得當時數據庫課設用C#做了個圖書管理系統。小的項目,具體如下圖效果圖。我翻了好久才找到課設的報告截圖:
jdbc :當時做課程的時候使用的C# 進行做的這個也就是當時圖快就直接去書籍上看實踐直接使用了。jdbc是學習的貫穿了整個javaee應該說,因為在jsp做課設時就是用到jdbc連接,當時是自己封裝的操作類,后來使用了queryrunner,發現了用人已經將數據庫操作的已經封裝成了對象,只需要拿來用即可,當時自己還在使用自己封裝的,感覺不是那么的絲滑,當使用這個感覺原來還可以這么操作。當時的認知還是不多的,因為沒有太多的人去指引你去學習什么,只能自己摸索。轉而再回顧想想堅持下來不容易,因為自學過程遇到了很多的坑,是你意想不到的。代碼環境問題讓你頭疼,代碼bug讓你頭疼,配置讓你頭疼。等等等,這是我遇到了個益友。他在我們大一上學期的時候就已經開始學習java了,還好才大二下開始,時間節點不是特別的晚。在接下來的學習我們常常一起在機房進行熬夜學習。我常常跟隨他的腳步進行學習。以上就是我沒有學習框架前所學的一些東西。
框架學習
對于框架實在是太多我現在還正在通過不斷的學習來豐富一些框架知識,但是以下是基本的框架知識,是有必要熟悉和熟練使用的。
maven maven是apache下的純java開發項目管理工具,maven常用標簽, : 的值就是項目的包名, 模塊名,一般使用項目名, 版本 packaging :打包方式, 以及maven的打包命令。
Struct2 當時我學習struct2時候還有用的,現在感覺是不是用的很少了,都用SpringMVC給替代了,反正現在不是很流行了。當時學習的時候主要從以下方面進行學習了,依賴項,struts 動作,stucts.xml,action動作,模型,攔截器,結果類型,OGNL/值棧,標簽 API 這些方式學習,這個時可以做些小的demo
Hibernate 學習了struct2這個可以搞定了請求的封裝接受參數的問題了,但是對數據庫的操作還是不是框架,所以就開始學習Hibernate,如何操作數據庫的,包含hibernate概念,(SqlSessionFacctory,session), HQL查詢,標準的查詢,原生SQL, O/R 映射。主鍵策略,對象狀態,事務,關系模型,管理級別,以及 一對多,對對一查詢。
Spring 學習了之后開始學習spring了,包含spring概念,優缺點,七大模塊,IOC容器(BeanFactory, ApplicationContext),Bean,Bean的自動裝配, DI, AOP(反向代理)
SSh項目練習 主要是structs+spring+hibernate項目,一個小的人員管理,增刪改查操作
SpringMVc springmvc概念,springmvc請求流程,springmvc參數綁定(形參綁定,對象類型,包裝類型) requestMapping訪問路徑映射,
Mybatis :mybaits概念,mybatis功能架構,為什么使用mybatis,(SqlSessionFactory,sqlsession,SqlMapConfig) mybatis映射 ,mapper動態代理,輸入參數類型parameterType(基本數據類型,pojo類型,包裝類型), 輸出參數類型 (resultType ,resultMap) 標簽,Spring整合mybatis
SSM項目 一個小的增刪改查項目,用springmvc+spring+Mybatis架構進行構建
Linux linux目錄文件,linux,常見的的命令,文件操作,jdk環境搭建,tomcat ,maven,mysql的環境的構建
redis redis的基本類型,redis的應用場景。緩存擊穿,穿透,雪崩,緩存在spring中的使用
Spring注解開發 :spring中常用的注解的學習。
bos項目 :spring,struts2,hibernate,maven
hibernate:由數據庫生成pojo和映射文件
log4j:日志輸入輸出
pinyin4j:漢語轉拼音,及其縮寫
json:數據格式的轉換
webservice(cxf,):對接口的調用,一個項目調用另一個項目中的接口模塊代碼,遠程開發調用
quartz:任務調度,相當于一個定時器功能
,javamail:郵件的發送
Apachepoi:excel的操作,導入導出功能
ehcache:緩存的使用,對其中的數據可以緩存一部分到瀏覽器中以及本地
,shiro:權限管理控制,認證
前端:easyUI:window(彈出窗口),messager(消息提示),menubutton(菜單),combox(下拉框)
ztree:菜單節點樹
hightcharts:圖表定制,餅圖,折線圖,柱狀圖
ocupload:一鍵上傳,
ExtJs:控件
jfreechart,
商城項目 : SOA,分布式架構,dubbo,nginx,FastDFS,Redis,Redis持久化方案,Redis集群搭建,solr,ActiveMQ, 以及總結,一定要多總結,總結才能夠收獲,沒有總結是收獲不到什么東西的。
SpringBoot :springboot概念,原理,應用,整合
SpringCloud:springcloud,組件,服務注冊與發現機制,分布式配置中心,遠程調用,分布式事務,Quartz任務調度,
itoken項目 :docker ,sso,redis,MQ,nginx,Fastdfs,spring cloud netflix.git,
SpringBoot 整合組件 spring boot與緩存(redis) ,Springboot與檢索(ElsaticSearch),Springboot與jdbc(mybatis,jpa,jdbctempate), Springboot 與thymeleaf.
Spring Security Outh2 這個是用于認證和授權的,我們需要在實際的項目中進行使用。
寫在后面的話:其實我們學習很多只是停留在會用層面上,并不深入,當我們在面試中只是了解皮毛肯定不行,所以需要我們花大量的時間去研究其實現過程,中間練習的過程中我們需要不斷的去踩坑,不斷的解決問題,才能夠真正地實現其中的問題,我們需要不斷的去探索,不過在技術學習的過程中我們也應該去學習業務知識因為我們的技術始終是個工具是為業務去提供更好的解決方案。
一部分:Servlet/JSP快速入門
1. 請列舉至少6種javaEE技術,并簡述其作用。
解析:
javaEE是一系列的技術,主要包括13種。對于開發人員來說,了解幾種主要的技術是非常必要的,例如JDBC、JSP、Servlet、XML、JNDI、JMS、JTA等。
參考答案:
(1) JDBC(Java Database Connectivity):用來訪問數據庫的API。
(2) JavaServlet :是一種小型的Java程序,擴展了web服務器的功能。
(3) JSP(Java Server Pages):JSP頁面由HTM代碼和嵌入其中的Java代碼組成,用來實現動態視圖。
(4) JNDI(Java Name and Directory Interface): JNDI API被用于訪問名字和目錄服務。
(5) EJB(Enterprise JavaBean):實現業務邏輯的組件,可以構成分布式系統。
(6) RMI(Remote Method Invoke):調用遠程對象方法。
(7) Java IDL/CORBA:將Java和CORBA集成在一起。
(8) XML(Extensible Markup Language):可以用它來定義其他標記語言的語言。
(9) JMS(Java Message Service):用于和消息中間件相互通信的API。
(10) JTA(Java Transaction Achitecture):一種標準的API,可以訪問各種事務管理器。
(11) JTS(Java Transaction Service):是CORBA OTS事務監控的基本實現。
(12) JavaMail:用于存取郵件服務的API。
(13) JAF(JavaBeans Activation Framework):JavaMail利用JAF來處理MIME編碼的郵件附件。
2. 在web.xml文件中配置Servlet時,主要配置哪些信息?
解析: 使用IDE開發Servlet時,配置信息可以通過可視化方式定義。然而對于web應用開發員來說,了解Servlet的配置非常必要,能夠在必要的時候手動進行修改。
參考答案: 配置Servlet時,主要配置<servlet>以及< servlet -mapping>,如下所示:
<servlet>
<servlet-name>IndexServlet</servlet-name>
<servlet-class>com.oracle.servlet.IndexServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>IndexServlet</servlet-name>
<url-pattern>/IndexServlet</url-pattern>
</servlet-mapping>
其中<servlet-class>是Servlet源文件的名字,<servlet-name>是自定義的名字,往往使用類名。<url-pattern>是其中非常重要的信息,用來配置訪問Servlet的邏輯路徑。必須以/開頭。
<servlet-class>com.oracle.FirstServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>FristServlet</servlet-name>
<url-pattern>/frist<url-pattern>
<servlet-mapping>
其中,<servlet-class>是Servlet源文件的名字,<servlet-name>是自定義的名字,往往使用類名。<url-pattern>是非常重要的信息,用來配置訪問Servlet的邏輯路徑,必須以/開頭。
3. 如果通過一個鏈接訪問Servlet,默認調用Servlet中的哪個方法提供服務?
解析 度與不同的HTTP請求方法Servlet中都定于了對應的doXXXX方法接受請求。一超級鏈接的方式提交請求,默認的GET方式,所以將調用Servlet中的doGet方法。程序員應該熟悉每種用戶請求對應的HTTP方式。
4. 如果一個表單<form>沒有顯示指定method屬性值,那么默認使用什么方法提交請求?
解析 表單提交時Web應用中常見的請求方式,一般情況下,建議使用POST方式提交請求,因為這種方式請求參數在請求體重傳遞,不會顯示在URL中。但是,如果在HTML的<form>標記中沒有使用method屬性指定提交方式,默認是GET方式。
參考答案 默認使用GET方式。
5. 請求接口中的哪個方法可以返回請求參數的值?哪個方法可以把請求參數的多個值同時返回?
解析 Web應用中復雜重要的的功能往往通過表單提交實現,用戶利用表單可以輸入很多信息,這些信息被稱為請求參數。在Web應用開發中,獲得請求參數幾乎是使用最多的功能,程序員應該熟練掌握獲得請求參數有關的所有方法。
參考答案 請求接口中的getParameter 方法可以返回某一個請求參數的值,getParaneterValues方法可以把摸個請求參數的多個值同時返回,封裝到一個數組中,例如復框的多個值。
6.響應接口中的哪個方法可以設置內容類型?用簡單代碼演示。
解析 響應可以封裝服務器端返回到客戶端的數據。而這些數據的格式和編碼都需要使用響應中的方法進行設置。如果設置錯誤,客戶端瀏覽器將無法顯示。
參考答案 響應中的soracleontentType方法可以設置內容類型,如下所示:
//設置響應的內容類型
Respose.soracleontentType(“text/htmllcharset=gb2312”);
上述代碼中設置響應的內容類型是text或者html,編碼格式是gb2312.
7.簡述JSP的運行過程
解析 很多初級開發員對JSP的理解比較膚淺,不熟悉JSP的運行過程,JSP出錯時很難排錯,開發員必須熟悉JSP的運行過程,這樣才能編寫出優良的JSP并能順利調試。
參考答案
(1) 容器將JSP翻譯成符合Servlet規范的類。
(2) 容器編譯JSP生成的類。
(3) 容器初始化JSP實例;
(4) 將請求和相應對象傳遞給JSP實例的服務方法,提供服務。
8.JSP中的<% %>和<%=%>有什么區別?
解析 JSP從表面上看就是HTML代碼中混合了Java代碼,而為了區別Java代碼和HTML代碼,規范中定義了一些符號,即腳本元素。初級開發員應該從熟悉這些腳本元素開始,逐步熟悉JSP的開發。
參考答案 <% %>稱為腳本片段,可以包含任何符合語法的Java代碼,可以同時包含多行代碼。而<%=%>稱為表達式,=號后面是一個表達式,這個表達式的值將被輸出到瀏覽器中,表達式后面不用使用分號結束,而且每個<%=%>只能包含一個表達式。
9.JDBC編程中主要有哪幾種語句對象?有什么區別?
解析 JDBC主要用來操作數據庫,操作數據庫本質上是通過執行SQL語句完成。所以,JDBC編程中,能夠用來執行SQL語句的語句對象非常重要,每種語句對象都存在一些區別,開發員應該熟悉并掌握。
參考答案 JDBC中主要有以下3種語句對象:
(1) Statement:Statement是所有語句對象的父接口,定義了語句對象的規范。
(2) PreparedStatement:預編譯的語句對象,將待執行的語句進行了預編譯,可以在執行時動態指定SQL語句中的參數。
(3) CallableStatement:可以用來調用數據庫的存儲過程。
10、簡述使用JDBC操作數據庫的主要步驟。
解析 不論使用什么數據庫軟件,JDBC操作數據庫的步驟都基本相同。開發員一定需要注意的是,JDBC的連接對象、語句對象、結果集等都是高開銷對象,使用完畢一定要在finally語句中進行關閉處理,否則將降低應用的性能。
參考答案
(1) 加載驅動類;
(2) 獲得連接對象;
(3) 獲得語句對象;
(4) 執行SQL語句,如果是查詢語句,需要處理結果集;
(5) 關閉結果集。語句對象。數據庫連接對象。
11.說明MVC模式的含義,并用圖表示web應用中MVC模式中每部分之間的關系
解析 對于web開發員來說,正確理解MVC模式非常關鍵。目前,大多數web應用都是基于MVC模式進行架構,也有很多MVC框架能夠幫助開發員快速搭建MVC應用。值得注意的是,使用JSP,Servlet,JavaBean可以構建MVC模式的應用,但是MVC是一種架構思想,并不僅局限于JSP,Servlet,JavaBean這個范圍內,可以使用很多其他技術實現。
參考答案 MVC本來應用于桌面程序中,M是指數據模型 , V是指用戶界面 , C則是控制器,至今已被廣泛使用。使用MVC的目的是將M和V實現代碼分離,從而使同一個程序可以使用不同的表現形式。C存在的目的則是確保M和V的同步,一旦M改變,V應該同步更新。MVC模式是近些年被JavaEE平臺廣泛使用的設計模式。Web應用中的MVC模式與桌面程序中的MVC模式有所不同。由于web應用大多基于請求響應模式,因此往往做不到“一旦M改變,V應該同步更新”。MVC每部分之間的關系如下
第二部分 詳解Servlet組件開發
1 . 請說明Servlet的聲明周期
解析 Servlet作為服務器端的組件,需要在容器中才能運行,容器管理Servlet的生命周期。對于web開發員來說,了解Servlet的聲明周期才能更好地進行Servlet編程。
參考答案
階段一:初始化
客戶端第一次訪問Servlet,或者容器加載應用時(配置<load-on-startup>),容器調用Servlet類的構造方法,實例化一個Servlet對象,該對象存在于服務器端內存中,容器將啟動多線程并發訪問該對象。實例化結束后,將對Servlet實例進行初始化,先調用init(Servloracleonfig)方法,在調用init()方法
階段二:提供服務
Servlet初始化成功后,容器調用Servlet接口中定義的service(ServletRequest req,ServletResponse res)方法。Service將請求和響應對象轉換成HttpServletRequest req,HttpServletResponse resp)方法。HttpServlet中的service方法,將請求根據請求方式轉發給對應的doXXX方法,如doGet、doPost
階段三 銷毀
Servlet提供服務結束,或者一段時間后,容器將銷毀Servlet實例。銷毀Servlet實例前,容器先調用Servlet接口中定義的destroy方法,允許完成一些自定義的操作。
2. 什么是Servlet的初始化參數?如何配置?如何在程序中獲得?
解析 如果摸個Servlet需要一些參數,可以再web.xml中今夕配置,而不必要硬編碼到源代碼中,這樣可以方便地進行修改。值得注意的是,Servlet的初始化參數只能在當前的Servlet中使用,其他Servlet中無法使用。
參考答案 Servlet的初始化參數指的是初始化Servlet實例時的參數,可以再web.xml中盡享配置,如下所示:
<servlet>
<servlet-name>TestServlet</servlet-name>
<servlet-class>com.oracleTestServlet</servlet-class>
<init-param>
<param-name>level</param-name>
<param-value>2.1</param-value>
</init-param>
</servlet>
上述配置中,使用<init-param>為TestServlet配置了一個名字為level的初始化參數,值為2.1.可以使用多個<init-param>元素配置多個初始化參數。在TestServlet中,可以直接調用getInitParameter(“level”)方法返回該參數的值。
3. 請列出請求接口中至少三個獲得請求頭的方法。
解析 當用戶向服務器端請求時,HTTP請求頭的信息也隨之被發送到服務器。請求接口中定義了獲得請求頭的方法,實際應用中常常需要獲得某些請求頭的值,根據請求頭的值判斷客戶端的情況進行編程。開飯員應該熟悉各種請求頭的含義,以及獲得請求頭的方法。
參考答案 getHeader方法可以根據請求頭名字獲得請求頭值;getIntHeader方法用來返回整型請求頭的值;getDateHeader方法用來返回日期類型請求頭的值。
4.響應接口中addHeader方法和setHeader方法有什么區別?
解析 響應封裝了服務器端發送給客戶端的信息,響應接口中定義了操作響應頭的方法,有些方法容易混淆,開發員應該辨別清楚。
參考答案 addHeader方法用來向響應中添加一個頭,如果蓋頭的名字已經存在,name允許一個頭包含多個值:setHeader方法向響應中添加一個頭信息,如果頭寸在,則覆蓋已有的值。
5. Servlet跳轉到JSP常常有兩種方法:一種稱為響應重定向,一種稱為請求轉發。請用代碼展示兩種方法,并說明其區別。
解析 Servlet作為MVC中的控制器,主要的作用就是接受客戶端請求,獲得請求信息后調用業務邏輯,然后根據業務邏輯的處理結果跳轉到不同的視圖顯示給用戶。開發員必須掌握常用的兩種跳轉方法,即響應重定向和請求轉發。實際工作中常用的是請求轉發,很多MVC框架默認也是使用請求轉發.
參考答案
響應重定向response.sendRedirect(“index.jsp”);
請求轉發:request.getRequestDispantcher(“index.jsp”).forward(request,respinse);
響應重定向相當于讓客戶端向重定向的資源重新發送一個請求。當前請求中的信息無法傳遞到下一個資源。而請求轉發顯得剛玉吧當前的請求轉發到下一個資源。當前請求中的信息將可以轉遞到下一個資源。
6.請求接口中的提供了處理屬性的方法,請列舉每個方法并說明其作用。
解析 控制器調用業務邏輯后,往往需要把一些處理的結果返回到視圖上進行顯示。這種時候,屬性的概念就至關重要。請求屬性是最常用的一種屬性,是在請求范圍內有效的屬性。開發員一定要正確理解每種范圍的屬性并能夠正確使用。
參考答案 請求接口中有三個和屬性有關的方法,分別是:setAttribute(String,Object),可以將一個對象設置一個名字,存儲到請求中:getAttribute(String),可以根據屬性的名字返回屬性值:removeAttribute(String),可以根據屬性的名字刪除屬性。
7.cookie有什么作用?如何使用Servlet 的API返回請求中的cookie?如何將cookie保存到客戶端?
解析 cookie是保存在客戶端的小文本,合理地使用cookie能夠增強用戶體驗。然而,開發員使用cookie時,一定不要把涉及用戶隱私的內容保存到cookie中,如銀行賬號的密碼等。另外,cookie可以被用戶人為禁止或刪除,這也是使用cookie時需要考慮的問題。
參考答案 cookie用來將一些信息保存到客戶端,已被用戶下次訪問同一應用時,能夠自動將這些信息發送到服務器端。服務器端通過使用cookie編程,能夠提高用戶體驗。請求接口中提供了goracleookie方法返回所有的cookie,響應接口提供了addCookie方法能夠將cookie對象返回到客戶端。
8.如何獲得會話對象?請用簡單代碼展示。
解析 web應用中,常常需要使用會話對象。會話是指客戶端對服務器端一次連續的訪問過程。開發人員應該熟悉會話相關的操作。
參考答案 可以通過請求對象獲得會話對象,如request.getSession()。如果當前存在會話,直接返回使用:如果不存在,則創建一個新的會話返回。還有一個重載的getSession方法,具有一個boolean類型的參數,其中request.getSession(true)和request.get
Session()完全相同,而request.getSession(false)意思是如果存在會話對象就返回使用,如果不存在則返回null。
9.有哪幾種方式可以設置會話有效時間?
解析 會話對象都被存儲在容器中,如果很長時間不使用,就應該被銷毀,以保證內存的有效使用。容器總是會為會話設置默認的有效時間,大多數是30分鐘,也可以自己定義會話的有效時間。
參考答案 有兩種方法可以設置會話的有效時間,一種是在web.xml中配置,如下所示:
<session-config>
<session-timeout>40</session-timeout>
</session-config>
使用這種方式設置的有效時間,是對當前應用中所有會話都有效,單位是分鐘。
還有一種方式是使用HttpSession中的setMaxInterval(int)方法,這個方法能夠設定最大不活動時間,超過這個時間會話沒有被訪問,即被容器銷毀。這個方法只能夠控制調用該方法的會話對象,不會對所有會話對象生效。
10. 什么是URL重寫?能解決什么問題?
解析 大多數容器實現會話,都是基于cookie機制實現的。然而,cookie可能被用戶人為地設置失效,這種情況下,會話頁將無效。為了能夠在cookie失效時依然使會話有效,可以使用URL重寫策略。如果使用某些MVC框架編程,如Struts,這些問題都已經在框架層面得到了解決。
參考答案 URL重寫就是使用響應接口中的encodeURL(path)方法,把指定的path重新編碼,將名字是JSESSIONID的cookie的值強制加到path對應的URL中,傳遞到服務器端,這樣就能夠保證即使cookie被阻止,服務器端永遠能得到會話對象的ID值,使得會話有效。
11. 會話接口中提供了處理會話屬性的方法,請列舉每個方法并說明其作用。
解析 如果某些對象需要在會話范圍內有效,那么就可以考慮使用會話范圍的屬性。保存在會話范圍內的屬性,在當前會話中一直有效。然而,由于會話的生命中期較長,所以屬性也將隨著會話一直存在于內存中。只有當必須使用會話屬性時再考慮使用,能用請求屬性解決的場合就使用請求屬性,開發員必須能夠正確選擇不同范圍屬性進行使用。
參考答案 會話接口中有三個和屬性有關的方法,分別是:setAttribute(String,Object),可以將一個對象設置一個名字,存儲在會話中;getAttritute(String),可以根據屬性的名字返回屬性值;removeAttribute(String),可以根據屬性的名字刪除屬性。
12. 什么是上下文對象?如何獲得上下文對象?
解析 上下文是一個全局的概念,每個應用都有一個唯一的上下文對象。上下文接口中定義了一系列的方法,開發員應該熟悉這個接口的常用方法。
參考答案 當容器啟動時,會加載容器中的每一個應用,并且針對每一個應用創建一個對象,稱為上下文對象。每個應用都只有一個唯一的上下文對象,Servlet API 中提供了Servloracleontext 接口來表示上下文對象。要在Servlet中獲得上下文對象非常簡單,直接使用getServloracleontext()方法就可以返回當前的上下文對象,在JSP中可以直接使用application內置對象使用上下文。
13. 如何配置上下文參數?在程序中如何獲得上下文參數?
解析 如果在應用中的很多地方,都需要使用某一個參數,那么就可以配置一個上下文參數。上下文參數與Servlet初始化參數不同的是,上下文參數能夠在應用所有資源里使用,而Servlet初始化參數在當前Servlet中使用。
參考答案 在web.xml中可以使用<context-param>配置上下文參數,如下所示:
<context-param>
<param-name>path</param-name>
<param-value>/WEB-INF/props</param-value>
</context-param>
要獲得上下文參數,可以使用Servloracleontext接口中的getInitParameter方法返回。
14、上下文接口中提供了處理屬性的方法,請列舉每個方法并說明其作用?
解析:除了請求屬性、會話屬性外,還可以使用上下文屬性。如果某個對象在上下文范圍內使用,就可以考慮使用上下文屬性存儲。上下文的生命周期很長,應用加載時初始化,直到應用重新加載才被銷毀,所以只有必須使用上下文屬性時方可使用,否則應該盡量使用請求屬性。
參考答案:上下文接口中有三個和屬性有關的方法,分別是setAttribute(String ,Object),可以將一個對象設置一個名字,存儲到上下文范圍中:getAttribute(String),可以根據屬性的名字返回屬性值:removeAttribute(String),可以根據屬性的名字刪除屬性。
15、說明請求屬性、會話屬性、上下文屬性的區別?
解析:屬性在Web應用開發中占有舉足輕重的地位,是用來在組件之間傳遞對象的主要方式。主要有三個對象可以儲存屬性,即請求、會話、上下文。由于請求生命周期最短,所以應該盡量使用請求屬性,而只有在必須用會話屬性或者必須用上下文屬性時菜考慮使用這兩種屬性。
參考答案:請求屬性是請求范圍內的屬性,除了請求轉發外,只在當前的請求中有效:會話屬性是會話范圍內的屬性,只要會話沒有失效,就一直隨著當前的會話所在:上下文屬性是上下文范圍的屬性,只要容器沒有重新加載應用,就一直隨著上下文對象存在。應該盡量使用請求屬性實現功能,只有在必須用會話屬性或者必須用上下文屬性時才考慮使用這兩種屬性。
16、請說明ServloracleontextEvent什么場景下被觸發,以及如何處理?
解析:事件處理在很多時候非常有效,開發人員應該熟悉Servlet中得常用時間類別,并熟悉每種事件觸發的條件。
參考答案:當上下文對象被初始化或者被銷毀時,將觸發ServloracleontextEvent,要處理該事件,可以自定義事件處理類實現ServloracleontextListener接口;然后覆蓋該接口中的方法,實現處理邏輯。
17、請說明HttpSessionEvent什么場景下會被觸發,以及如何處理?
解析:會話事件在很多場合可以使用,開發人員應該熟悉會話事件的觸發條件以及處理方法等。
參考答案:當會話對象有變化的時候,將觸發HttpSessionEvent事件發生,例如會話被創建、會話被銷毀、會話被活化、要處理該事件,有兩個接口可以監聽,分別是HttpSessionListener和HttpSessionActivationListener。其中前者監聽會話創建和銷毀的情況,后者監聽會話活化和鈍化的情況。
18、如何在web.xml中配置監聽器,使監聽器生效?
解析 監聽器必須在web.xml中配置才能生效。
參考答案 在web.xml中,可以使用<listenner>配置監聽器,如下所示:
<listener>
<listener-class>com.oracle.listener.CounterListener</listener-class>
</listener>
19、簡述監聽器的開發配置步驟。
解析 每種監聽器的開發和配置步驟都非常相似,開發員應該做到熟練掌握。
參考答案
(1)根據需求分析需要使用哪種監聽器。
(2)創建類實現監聽器接口,并實現接口中必要的方法,實現監聽功能。
(3)在web.xml中使用<listener>配置監聽器。
20、過濾器有什么作用 ?
解析 過濾器是web應用中非常重要的概念,甚至在Strust2框架中也作為核心控制器使用。
參考答案 在web應用中,往往需要一些通用的處理和控制,如果把這些通用的處理編寫在每一個需要的資源文件中,代碼就很冗余,且不好管理。只要需要修改,就得修改所有文件中的相關代碼,造成維護困難。過濾器就是用來執行這些通用處理的程序,往往可以用來實現圖像轉換、數據壓縮、登錄驗證、權限控制等。
21、Filter接口中定義了哪幾個方法?分別有什么作用?
解析 Filter接口是所有過濾器都必須實現的接口,了解這個接口中的方法對開發員勝任過濾器開發非常重要。
參考答案 Filter接口中有以下三個方法:
(1)init(FilterConfig filterConfig):該方法是對filter對象進行初始化的方法,僅在容器初始化filter對象結束后被調用一次。
(2)doFilter(ServletRequest request,ServletResponse response,FilterChain chain):該方法是filter進行過濾操作的方法,是最重要的方法。過濾器實現類必須實現該方法。方法體中可以對request和response進行預處理。其中FilterChain可以將處理后的request和response對象傳遞到過濾鏈上的下一個資源。
(3)destroy():該方法在容器銷毀過濾器對象前被調用。
22、簡述過濾器的開發配置步驟
解析 開發員應該熟練掌握過濾器的開發配置步驟。
參考答案
(1)創建類實現Filter接口。
(2)實現Filter接口中的方法,重點實現doFilter方法對請求和響應進行過濾。
(3)在web.xml中配置過濾器,使用<filter>配置過濾器的類和名字,使用<filter-mapping>配置過濾器需要過濾的資源路徑。
23. 過濾器的配置中,<dispatcher>元素是什么含義?有幾個可選值?
解析:<dispatcher>元素師Servlet2.4以后新增的配置能夠用來指定轉發方式
參考答案: <dispatcher>可以配置能夠被過濾的URL的請求方式,有以下四個值可以使用;
(1) 請求方式,是一種默認的方式。即不配置disoatcher選項時,默認過濾REQUEST方式請求的URL,包括在地址欄輸入URL,表單提交,超級鏈接,響應重定向,但是如果指定了其他dispatcher值,REQUEST也必須顯式指定才能生效。
(2) FORWARD:轉發方式,表示可以過濾請求轉發方式訪問的URL.
(3) INCLUDE:包含方式,表示可以過濾動態包含的URL。
(4) ERROR:錯誤方式,表示可以過濾錯誤頁面
第三部分 詳解JSP組件開發
1.列舉至少5個JSPN內置對象,并說明其類型
解析 內置對象是JSP中非常重要的概念,是真正的Servlet API中的對象,不過是容器翻譯JSP時進行聲明創建的,所以在JSP中不需要聲明創建就可以直接使用。Web開發員起碼需要能夠熟練使用JSP中常用的內置對象。
參考答案
(1) request:HttpServletRequest
(2) response:HttpServletResponse
(3) session:HttpSession
(4) application:Servloracleontext
(5) pageCountext: pageCountext
(6) out:JspWriter
2.說明<%@include%>和<jsp:include/>的區別
解析 JSP中的指令和標準動作中都有一個名字為include的元素,都是包含的意思,二者具體含義卻不同,分別是靜態和動態包含,開發員應該熟悉二者區別,避免混淆。
參考答案 <%@include%>是指令,是靜態包含,在翻譯期將把被包含的資源翻譯到包含資源中,源代碼合二為一。而<jsp:include/>是動作,是動態包含,在運行期動態訪問被包含的資源,將生成的響應合二為一進行顯示。
3.列舉page指令中至少三種常用屬性,并說明其含義。
解析 page指令是JSP中最常用的指令之一,開發員應該熟悉page指令的常用屬性
參考答案
(1)import:用來導入需要使用的類。
(2)pageEncoding:指定JSP頁面的編碼。
(3)errorPage:指定錯誤頁面。
4、<jsp:forward>的含義是什么?
解析:請求轉發是經常使用的跳轉方式,在JSP中有更為簡單的方式進行請求轉發,就是使用標準動作forward。
參考答案 <jsp:forward>可以在JSP中實現請求轉發,類似在Servlet中使用RequestDispatcher的forward方法進行請求轉發
5、列舉與JavaBean相關的三個標準動作,并說明其含義。
解析:JavaBean可以實現MVC中的Model部分,然而它并不是一個真正的組件,而是有編程規范的Java類。為了能夠便捷使用
JavaBean,JSP規范定義了一系列標準動作。
參考答案:與JavaBean相關的有以下三個標準動作。
(1)<jsp:useBean>:用來獲得或者創建JavaBean實例。
(2)<jsp:setProperty>:用來為JavaBean的屬性賦值。
(3)<jsp:getProperty>:用來顯示JavaBean的屬性值。
6、什么是EL?EL的主要作用是什么?
解析:隨著JavaEE技術的發展,人們越來越希望JSP中的動態部分能夠更加簡練。可以使用<%=%>表達式在JSP中動態輸出內容,
然而總是過于繁瑣,因此出現了EL,可以很大程度簡化JSP中的表達式。然而,在實際使用中,EL總是和JSTL配合使用才能發
揮更大作用
參考答案:EL是Expression Language 的簡稱,即表達式語言,主要用來替代表達式<%=%>,使得JSP更為簡單。EL常常結合JSTL
一起使用,發揮更強大的作用。
7、列舉EL中4個與屬性相關的內置對象,并說明其含義。
解析:EL中定義了一系列的內置對象,其中與屬性有關的內置對象特別常用,開發員應該熟練掌握。
參考答案:
(1)pageScope:可以獲得PageContext范圍的屬性
(2)requestScope:獲得請求范圍的屬性
(3)sessionScope:獲得會話范圍的屬性
(4)applicationScope:獲得上下文范圍的屬性
8、如果web.xml中定義了一個名字為rate的上下文參數,在JSP中如何使用EL進行輸出?
解析 EL中定義了11個內置對象,分別能夠輸出不同的信息,其中initParam能夠用來輸出上下文參數
參考答案: ${initParam.rate}
9、EL中的內置對象pageContext,與其他內置對象有什么不同?
解析 EL的11個內置對象中,pageContext是一個非常特殊的內置對象。其他內置對象都只能輸出特定的信息,例如requestScope只能輸出請求范圍的屬性,并不是一個真正的請求對象。而pageContext是一個真正的PageContext類型對象,可以返回任意屬性。
參考答案 pageContext內置對象非常特殊,它是一個真正的PageContext類型的對象,只要PageContext中存在getXXX方法,就可以使用${pageContext.XXX}將getXXX方法的返回值進行輸出。而其他的內置對象都沒有這個特點,只能輸出特定的信息。
10、EL中的.與[]有什么區別?
解析 EL中的.和[]有類似的功能,特別容易混淆,開發員應該熟練掌握。
參考答案 EL中,使用.和[]都可以用來獲得數據,然而某些情況下只能使用[],而不能使用圓點,有以下三種情況只能使用[]:
(1) 通過數組或集合的索引返回值,只能使用[];
(2) 屬性值中包括-或者.等非字母或數字的字符,只能使用[];
(3) 屬性值不是常量,而是變量時,只能使用[]。
11、JSP中的自定義標記有什么作用?
解析 自定義標記是JSP1.2版本開始支持的功能,可以將JSP文件中需要使用的Java功能定義成標記,在JSP文件中多次調用。自定義標記能夠使得JSP文件結構簡練,可讀性強,可維護性也增強。
參考答案 使用自定義標記,能夠使得JSP文件結構簡練,減少冗余代碼,能夠在多個地方使用自定義標記,達到重復使用的目的,同時也使得動態功能更容易管理、維護。
12、簡述開發自定義標記的主要步驟。
解析 開發自定義標記有基本的步驟,開發員應該做到熟悉。
參考答案
(1) 根據需求設計需求開發的標記。
(2) 在tld文件中描述標記的基本信息,包括標記名稱、標記的屬性、標記體的特征以及標記的處理器類等。
(3) 根據tld描述的信息開發標記處理器類,實現標記的功能。
13、如何使用自定義標記?
解析 即使有的應用中不需要自行開發標記庫,然而開發員至少需要能夠熟練掌握自定義標記的使用方法。
參考答案
(1)將自定義標記相關的tld文件引入到工程中,可以存放到WEB-INF目錄下。
(2)將自定義標記相關的jar文件引入到工程中,可以存放到WEB-INF\lib目錄下。
(3)在JSP文件中,使用taglib指令指定標記庫的uri,并指定使用該標記庫的前綴。
(4)在JSP中需要使用標記的地方,利用前綴引用標記,傳遞屬性即可使用。
14.簡述tld文件的主要作用。
解析 tld 文件在標記庫中有著舉足輕重的作用,開發人員至少要了解tld文件中的主要信息。
參考答案 tld文件是標記庫描述文件,主要描述了標記庫的信息。主要包括標記名稱、標記體的情況、標記中的屬性、標記對應的處理器類。另外還會指定一個唯一的uri值,在jsp中使用標記庫的時就通過這個uri進行引用。
15.JSTL是什么?有什么作用?
解析 目前標記庫有很多,除了JSTL外,還有很多第三方提供的標記庫,然而作用和使用步驟大同小異。開發員應該首先掌握標記庫的含義以及使用,這樣對其他標記庫也能很快的熟練使用。
參考答案 JSTL是原sun公司定義的一套標準標簽庫,提供了一些在Web應用中常用的標簽,例如迭代數組或集合的標簽。使用JSTL能夠使JSP代碼更為簡練,減少JSP中的代碼量。這些標簽能在多個場合重復使用,提高了開發效率。
16.如何使用JSTL
解析 使用JSTL和使用自定義的標記類似,也可以說,使用任何標記庫的步驟都類似,無非是每個標記的作用、名字以及屬性等不用而已。
參考答案
(1) 首先引入JSTL的tld文件和相關的jar文件。
(2) 在JSP中使用taglib指令指定要使用的tld的uri值,并自定義一個前綴。
(3) 在需要使用標記的地方,使用前綴引用標記,設置必要的屬性即可。
17.假設存在一個會話屬性list,list是泛型為Customer的集合對象,Customer中包含custname、age、address三個屬性。請使用JSTL中的迭代標記遍歷該list,將集合中的數據顯示到表格的行中。
解析 JSTL中有很多標記,開發員應該熟悉常用的標記的使用,例如迭代標記就是常用 標記之一。
參考答案
<c:forEach Item=”${sessionScope.list}” var=”cust”>
<tr>
<td>${cust.custname}</td>
<td>${cust.age}</td>
<td>${cust.address}</td>
<tr>
</c:forEach>
18.如何在web.xml中配置異常處理
解析 異常處理一直是應用開發中面對的一個問題。在Web應用中,也可以使用try/catch/finally處理異常,同時,還可以在web.xml中進行配置,對某種異常進行統一處理
參考答案 在web.xml中配置異常處理的方式如下:
<error-page>
<exception-type>com.oracle.exception.RegisterException</exception-type>
<location>/register.jsp</location>
</error-page>
上述配置后,當發生了RegisterException卻沒有被捕獲時,跳轉到register頁面進行處理。
第四部分 高級主題
1.Log4j有什么作用?
解析:Log4j目前使用最多的日志處理組件,程序員應該掌握Log4j
的使用。
參考答案:Log4j是Apache的一個開源項目,使用Log4j可以便捷地控制( )目的地,包括控制臺,文件,GUI組件以及NT事件記錄器等。同時,Log4j可以控制( )日志信息的輸出格式,也能夠通過定義每一條日志信息的級別,更加細致控制日志的( )程。
2.Log4j主要由哪三部分組成?每部分的主要作用是什么?
解析:掌握Log4j的使用,可以從了解Log4j的主要組件入手。
參考答案:Log4j包含三個主要組成部分,即Logger、Appender以及Layout。其中( )是日志記錄器,是Log4j的核心組件;一個Logger可以指定多個Appender,Appender( )定日志信息的輸出目的地,可以是文件、控制臺或消息文件等;一個Appender又可以指定( )個Layout,Layout用來指定日志信息的格式,可以使HTML、簡單文本等。
3.列舉至少3種Log4j的輸出目的地,并說明其含義。
解析:能夠將誒之輸出到不同目的地,是Log4j的一大特征。
參考答案
(1)org.apache. log4j.ConsoleAppender:將日志信息輸出到控制臺,如果Logger沒有使( )addAppender顯式添加Appender,默認使用ConsoleAppender。
(2)org.apache. log4j.FileAppender:將日志信息輸出到一個文件。
(3)org.apache. log4j.DailyRollingFileAppender:將日志信息輸出到一個日志文件,并且( )據指定的模式,可以按照一定的日期將日志信息輸出到一個新的日志文件。
4.使用properties文件配置Log4j屬性,要求日志級別為debug,目的地為文件( )式為HTML。
解析:使用Log4j進行日志管理,往往都在屬性文件中配置相關的屬性,開發員必須( )Log4j屬性的配置,才能夠順利的使用Log4j。
參考答案:
log4j.rootLogger=debug.appender1
log4j.appender.appender1=org.apache.log4j.FileAppender
log4j.appender.appender1.Threshold=debug
log4j.appender.appender1.ImmediateFlush=true
log4j.appender.appender1.File=log.html
log4j.appender.appender1.Append=true
log4j.appender.appender1.layout=org.apache.log4j.HTMLLayout
log4j.appender.appender1.layout.LocationInfo=true
log4j.appender.appender1.layout.Title=Log Message
5.在web應用中使用Log4j記錄日志,往往有哪些方法加載屬性文件?
解析 web應用中使用Log4j,首先需要考慮的的問題是如何加載屬性文件:
參考答案 web應用中加載Log4j的屬性文件往往有以下兩種方式:
(1)定義一個Servlet,并使用<load-on-startup>在web.xml中配置這個servlet,使得應用
加載時就初始化這個Servlet,從而可以在這個Servlet的init方法中加載Log4j屬性文件。只要加載了應用,就會初始化Servlet,就會調用init方法,從而就會加載屬性文件。
(2)定義一個上下文事件監聽器,在監聽器的contextInitialized方法中加載Log4j屬性文件。
這樣能夠保證只要加載了應用,就會觸發上下文時間,從而調用監聽器中的contextInitialized方法,加載Log4j屬性文件。
6.Ajax是什么含義?有什么作用?
解析 ajax并不是一個新技術,而是一系列已有技術的一個新的使用方法。目前,人們越來越關注用戶體驗,web應用開發員也應該注重這方面的技術發展。
參考答案 ajax是“Asynchronous JavaScript and XML”的簡稱,即異步的JavaScript和XML。Ajax就是能夠在web瀏覽器中實現與桌面應用類似客戶端技術。例如,使用ajax技術后,服務器端不會每次都返回一個完整的頁面,而會只返回一部分文本,只刷新頁面的一部分,不需要等待整個頁面刷新;使用ajax可以異步提交請求,不需要必須等待服務器端響應后才進行其他操作。可以說,Ajax試圖在web應用中實現桌面應用的功能和交互性,
并能夠使用和桌面應用中類似的友好界面和漂亮空間。
7.Ajax中的XMLHttpRequest對象有哪些作用?
解析 XMLHttpRequest對象是Ajax技術的核心對象,使用Ajax技術都是從XMLHttpRequest對象開始。
參考答案 XMLHttpRequest對象是Ajax技術的核心對象,使用Ajax技術都是從XMLHttpRequest對象開始。在ajax
應用程序中,XMLHttpRequest對象負責將用戶信息以異步方式發送到服務器端,并接收服務器相應的信息和數據。
8.什么是DOM?有什么作用?
解析:DOM是獨立于腳本和語言的概念,很多語言都對DOM進行了實現,DOM能夠對標記語言進行結構化的表示。
參考答案:DOM是Document Object Model的簡稱,即文檔對象模型,是用于HTML和XML文檔的API。DOM提供了文檔的結構化表示,把網頁和腳本或編程語言連接了起來,可以修改文檔的內容和視覺表現。使用Ajax編程時,從服務器返回的內容需要更新到客戶端頁面中,就可以使用DOM對象操作瀏覽器內容,進行局部刷新。
9.JSF框架的主要特點是什么?
解析:JSF框架已經是JavaEE規范的一部分,是非常有發展前景的框架,開發人員可以關注。
參考答案:JSF是一種以組件為中心來開發JavaWeb應用的框架。JSF提供了一組用戶界面組件,這些組件是可重用的,開發員可以利用這些組件方便地構建Web應用的用戶界面;
JSF框架支持開發自定義的用戶界面組件,而且這些自定義用戶界面組件同樣可以重用。另外,使用JSF框架,可以方便地進行輸入檢驗、國際化編程等。
課程推薦:java零基礎入門到精通
*請認真填寫需求信息,我們會在24小時內與您取得聯系。