- 基於javaEE,須要在該框架的容器和組件支持下完成。
- 以分佈式組件集合的形式存在(即由軟件組件構成),而分佈式軟件組件在其各自的容器中運行。
- 指的是提供特定程序組件服務的標準化運行環境,客戶經過這些組件能夠在javaEE平臺上獲得所指望的服務。
- 做用:爲組件提供標準化服務(部署、執行、生命週期管理、安全等)和API接口
包括:javascript
(1)、Applet容器。負責在web瀏覽器和java插件上運行java applet程序,對應於用戶界面層。如今少用了。php
(2)、應用客戶端容器。負責web應用在客戶端組件的運行,對應於用戶界面層。css
(3)、web容器。管理jsp和servlet等組件的運行,主要負責web應用與瀏覽器的通訊。對應於表示層。html
(4)、EJB容器。爲Enterprise JavaBean組件提供運行環境。主要負責數據處理以及和數據庫或其餘java程序的通訊。對應於業務層和數據訪問層。java
- 指在應用程序中發揮特定功能的軟件單位。實質就是在功能和使用上被標準化的幾種特定java程序。
分類:node
(1)、客服端組件。Applet和客戶端應用程序。web
(2)、web組件。web容器中的jsp、servlet、過濾器和監聽器。ajax
(3)、EJB組件。EJB容器中的EJB組件sql
一個完整的web應用程序一般由以下組件構成:數據庫
(1)、表示層(視圖)。通常由html和jsp頁面。
(2)、控制層。servlet。
(3)、業務邏輯層。JavaBeab或EJB。
(4)、數據訪問層(持久層)。jdbc、hibernate。
- Java Server Page, Java EE 組件,本質上是 Servlet。
- 運行在 Web Container.接收 Http Request,生成 Http Response(默認協議是 Http 請求和響應)
- JSP 使得咱們可以分離頁面的靜態 HTML 和動態部分——咱們須要的技術。
- 使頁面能夠混和html代碼、Java代碼以及JSP標籤;容許訪問組件
標記:
(1)、jsp指令標記。page、include、taglib。
(2)、jsp動做標記。include、forward、param、useBean、setProperty、getProperty。
(3)、jsp成員聲明標記。聲明全局變量。
(4)、jsp程序片。
(5)、jsp表達式。
重要內置對象:
(1)、request
重要方法:set/getAttribute()、set/getParameter()、getCookie()、set/getCharacterEncoding()
(2)、response
重要方法:setCharacterEncoding()、setContentType()、sendRedirect()能夠跳轉到任意頁面且不帶request信息。setHeader()能夠定時刷新或定時重定向網頁等操做。
(3)、out
(4)、session
重要方法:getId()、set/getAttribute()、idNew()、getCreationTime()、getLastAccessedTime()
(5)、application
只要不關閉服務器將一直存在。全部用戶共享。
Dao設計模式:實現了業務數據的對象化封裝,數據訪問和業務邏輯的分離。
四個組件:
DBUtils工具類---負責數據庫的鏈接與關閉
Dao接口---定義增刪該查的抽象方法,一個領域模型對應一個Dao接口。
Dao接口的實現類
VO值對象---一個VO對應一個數據表,便於把對數據表的操做轉化成對java類的操做。
數據源與鏈接池技術
- 遵循必定規範的java類;
- 封裝了數據和業務邏輯;
- 供jsp和servlet調用。
按照servlet規範編寫、由服務器調用和執行的服務器端程序。
繼承自父類HttpServlet的重要方法:
init():全局執行一次。
service():根據請求類型會調用doGet()和doPost()方法。
doGet()。
doPost()。
destroy():servlet對象註銷時自動調用。
這些方法構成了servlet的生命週期,即建立、服務、消亡。
內置對象:
request、respose、session(request.getSession()獲取)、out(request.getWriter())
servlet組件和jsp組件能夠經過request、session、application、cookie和javaBean實現數據共享。
(1)、jsp
(2)、jsp+javaBean
(3)、jsp+servlet
(4)、jsp+servlet+javaBean
(5)、jsp+servlet+javaBean+Dao模式
EL與JSTL目的都是爲了:提升開發效率,減小頁面中jsp代碼的數量、保持頁面的簡潔和可讀性、可維護性。都做用在jsp頁面表示層。
EL(Expression Language):表達式語句。
做用:獲取範圍變量的值,並在頁面上顯示出來。
這裏的「範圍變量」包括:
一、內部對象:jsp(pageContext)、做用域(pageScope、requestScope、sessionScope、applicationScope)、請求參數(param、paramValues)、cookie(cookie)、請求頭(header、headerValues)
二、集合、數組
三、javaBean
四、其餘對象或數據結構
JSTL(JSP Standard Tag Library):jsp標準標籤庫。
分類:
一、核心庫:c,操做變量、流程控制、url生成和操做
二、函數:fn,字符串處理函數
三、數據庫操做:sql,操做關係數據庫
四、格式化:fmt,數字機日期的格式化、頁面國際化
五、XML處理:x,操做Xml數據
運用js和xml實現瀏覽器和服務器異步通訊的一種技術。實現頁面的局部刷新和顯示。
js原生Ajax:使用瀏覽器內置的ajax引擎完成異步通訊
(1)建立Ajax引擎對象
(2)綁定監聽、接受響應數據的處理
(3)提交地址
(4)發送請求
ajax實例1 <html> 2 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 5 <title>AJAX實例</title> 6 <script language="javascript" type="text/javascript"> 7 8 var xmlHttpRequest; //定義一個變量用於存放XMLHttpRequest對象 9 10 function createXMLHttpRequest(){ 11 if(window.ActiveXObject){//IE瀏覽器的建立方式 12 xmlHttpRequest = new ActiveXObject("Microsoft.XMLHTTP"); 13 }else if(window.XMLHttpRequest){ //Netscape瀏覽器中的建立方式 14 xmlHttpRequest = new XMLHttpRequest(); 15 } 16 } 17 18 19 function httpStateChange(){//判斷異步調用是否完成 20 if(xmlHttpRequest.readyState == 4){ 21 //判斷異步調用是否成功,若是成功開始局部更新數據 22 if(xmlHttpRequest.status == 200||xmlHttpRequest.status == 0){//查找節點 23 var node = document.getElementById("myDIv");//更新數據 24 node.firstChild.nodeValue = xmlHttpRequest .responseText; 25 } else{ 26 alert("異步調用出錯/n返回的HTTP狀態碼爲:"+xmlHttpRequest.status + "/n返回的HTTP狀態信息爲:" + xmlHttpRequest.statusText); 27 } 28 } 29 } 30 31 //ajax異步操做 32 function getData(name,value){ 33 createXMLHttpRequest();//建立XMLHttpRequest對象 34 if(xmlHttpRequest!=null){ 35 xmlHttpRequest.open("get","ajax.text",true)//建立HTTP請求 36 xmlHttpRequest.onreadystatechange = httpStateChange;//監聽,接受數據並處理 37 xmlHttpRequest.send(null);//發送請求 38 } 39 } 40 41 </script> 42 43 </head> 44 45 46 <body> 47 <div id="myDiv">原數據</div> 48 49 <input type = "button" value = "更新數據" onclick = "getData()"> 50 51 </body> 52 </html>
Jquery中的Ajax:對js原生的ajax進行了封裝,封裝後的ajax的操做方法更簡潔,功能更強大
重要方法:
jQuery.ajaxSetup()---設置未來的 Ajax 請求的默認值。
jQuery.ajax()---執行異步 HTTP (Ajax) 請求。
jQuery.get()---使用 HTTP GET 請求從服務器加載數據。
jQuery.getJSON()---使用 HTTP GET 請求從服務器加載 JSON 編碼數據。
jQuery.post()---使用 HTTP POST 請求從服務器加載數據。
序列化方法:
jQuery.param()---建立數組或對象的字符串序列化表示,適合在 URL 查詢字符串或 Ajax 請求中使用。
serialize()---將表單內容序列化爲字符串。
serializeArray()---將表單內容序列化爲JSON數組。
View Code1 $.ajax({ 2 url:'/comm/test1.php', 3 type:'POST', //GET 4 async:true, //或false,是否異步 5 data:{ 6 name:'yang',age:25 7 }, 8 timeout:5000, //超時時間 9 dataType:'json', //返回的數據格式:json/xml/html/script/jsonp/text 10 beforeSend:function(xhr){ 11 console.log(xhr) 12 console.log('發送前') 13 }, 14 success:function(data,textStatus,jqXHR){ 15 console.log(data) 16 console.log(textStatus) 17 console.log(jqXHR) 18 }, 19 error:function(xhr,textStatus){ 20 console.log('錯誤') 21 console.log(xhr) 22 console.log(textStatus) 23 }, 24 complete:function(){ 25 console.log('結束') 26 } 27 })
主要用來來接用戶請求,實現如權限檢查、編碼轉換、加密、站點訪問權限控制等通用的「橫向」模塊。
主要用來監聽web應用的上下文信息、servlet請求、session會話等信息,並自動根據不一樣狀況,在後臺調用相應的處理程序。
除了監聽ServletContext、HttpSession、ServletRequest等對象自己的變化(建立、銷燬),還能夠監聽對象中屬性的變化(增、刪、改)