第一篇:Java Web 彈出框總結(jié)
Java Web 彈出框總結(jié)
在學(xué)習(xí)java web時想對于網(wǎng)頁上的登錄驗證出錯時采用彈窗的形式給于提示,于是走到下列大致7種方式的彈窗形式,有別于Alert彈窗,根據(jù)需求可以選擇性使用
NO1.錯誤提示彈窗
JOptionPane.showMessageDialog(null, “alert”, “alert”, JOptionPane.ERROR_MESSAGE);
NO2.JOptionPane.showInternalMessageDialog(frame, “information”,“information”, JOptionPane.INFORMATION_MESSAGE);此處需要一個自定義的frame,不予演示
NO3.單選彈窗
JOptionPane.showConfirmDialog(null, “choose one”, “choose one”, JOptionPane.YES_NO_OPTION);
NO4.JOptionPane.showInternalConfirmDialog(frame,“please choose one”, “information”,JOptionPane.YES_NO_CANCEL_OPTION,JOptionPane.INFORMATION_MESSAGE);
此方法需要定義一個frame,此處不予演示
NO5.警告彈窗
Object[] options = { “OK”, “CANCEL” };
JOptionPane.showOptionDialog(null, “Click OK to continue”, “Warning”,JOptionPane.DEFAULT_OPTION, JOptionPane.WARNING_MESSAGE, null, options, options[0]);
NO6.輸入彈窗
@SuppressWarnings(“unused”)String inputValue = JOptionPane.showInputDialog(“Please input a value”);
NO7.下拉選擇彈窗
Object[] possibleValues = { “First”, “Second”, “Third” };
@SuppressWarnings(“unused”)Object selectedValue = JOptionPane.showInputDialog(null, “Choose one”, “Input”,JOptionPane.INFORMATION_MESSAGE, null, possibleValues, possibleValues[0]);
第二篇:Selenium 彈出框、頁面跳轉(zhuǎn)總結(jié)_dangliuzi
在eclipse中運行!驗證處理過程。
Selenium 彈出框、頁面跳轉(zhuǎn)、遍歷相同控件、執(zhí)行js
1、對話框處理
Alert alert = driver.switchTo().alert();alert.accept();//確定 alert.dismiss();//取消
alert.getText();//取到文本內(nèi)容
實際系統(tǒng)中,彈出窗口必定是某些操作完成、信息加載之后用做提示,因此彈出窗口有時出現(xiàn)得快,有時出現(xiàn)得慢,直接使用driver.switchTo().alert();很容易出現(xiàn)執(zhí)行失敗的情況。
咱們先判斷是否出現(xiàn)了彈出框,封裝成以下方法: protected boolean alertExists(int seconds){ long start = System.currentTimeMillis();while((System.currentTimeMillis()-start)< seconds * 1000){ try { driver.switchTo().alert();return true;} catch(NoAlertPresentException ne){ System.out.println(“not find alert!”);} catch(Exception e){ throw new RuntimeException(e.getMessage());} } return false;}
2、頁面跳轉(zhuǎn),彈出窗口 //得到當(dāng)前窗口的句柄
String currentWindow = driver.getWindowHandle();//得到所有窗口的句柄
Set
Iterator
System.out.println(“title,url = ”+window.getTitle()+“,”+window.getCurrentUrl());}
另外,還有的iframe 之間轉(zhuǎn)換方法
driver.switchTo().defaultContent();切換到某個frame:
driver.switchTo().frame(“l(fā)eftFrame”);從一個frame切換到另一個frame: driver.switchTo().frame(“mainFrame”);
切換到某個window:
driver.switchTo().window(“windowName”);
3、遍歷控件
List
遍歷
for(Iterator
4、執(zhí)行JS
Web driver對Java Script的調(diào)用是通過JavascriptExecutor來實現(xiàn)的,例如: JavascriptExecutor js =(JavascriptExecutor)driver;
js.executeScript(“(function(){inventoryGridMgr.setTableFieldValue('”+ inventoryId + “','” + fieldName + “','”
+ value + “');})()”);
第三篇:javaWeb總結(jié)+小結(jié)
JavaWeb B/S與C/S的區(qū)別
1,從安裝上來講,B/S只需要在服務(wù)器端安裝即可,而C/S卻需要每一個客戶端進行安裝。2,從部署上來說,B/S只需要服務(wù)器能夠支持即可,而C/S卻對每一個客戶端的電腦提出了要求。
3,從升級,維護角度來說,B/S只需要在服務(wù)器端升級維護即可,像網(wǎng)易的郵箱,而C/S卻是服務(wù)器更新維護一次,客戶端就要下載相關(guān)的補丁才能使用 4,從安全性來講,B/S是基于服務(wù)器的,較之C/S安全性好
5,從本質(zhì)上來說,B/S是基于請求驅(qū)動的,即客戶端發(fā)送一個Http請求,然后服務(wù)器進行處理之后,響應(yīng)給客戶端,而C/S卻是基于事件驅(qū)動的,像騰訊的QQ。
6,從耦合度來講,B/S與服務(wù)器端耦合,而C/S卻是與客戶端的操作系統(tǒng)進行耦合。但是Client/Server(從游戲的角度來講)較之Brows/Server具有優(yōu)質(zhì)的畫面。
Servlet的使用步驟:
1,創(chuàng)建一個JAVA類,存放在com.fit.servlet包中,并且此類extends HttpServlet類,才能成為一個Servlet 2,覆寫doGet()和doPost()方法
3,最后,在web.xml文件中進行Servlet配置。具體的配置如下:
就是指Servlet從創(chuàng)建出實例對象到銷毀的過程。它是一個容器,負責(zé)創(chuàng)建實例來接受客戶端的請求,并且以多線程的方式響應(yīng)給客戶。具體過程如下:
Servlet被服務(wù)器實例化之后,容器運行其init方法進行初始化,請求到達時運行其service方法,在此過程中僅創(chuàng)建一個對象,然后service方法自動調(diào)用與請求相應(yīng)的doXxx方法,當(dāng)服務(wù)器決定將實例進行銷毀時,再調(diào)用其destroy方法。
與CGI(通用網(wǎng)關(guān)接口)的區(qū)別在于,Servlet處于服務(wù)器進程中,它通過多線程的方式運行其service方法,一個實例可以服務(wù)于多個請求,并且其實例一般不會銷毀,而CGI對每一個請求都產(chǎn)生新的進程,服務(wù)完成后就銷毀,所以效率低于Servlet 作用:可以用來進行接收客戶端的請求,也可以進行請求流的控制。
Http協(xié)議:(了解)
首先它是(Hypertext Transfer Protocol)超文本傳輸協(xié)議。
HTTP報文由從客戶機到服務(wù)器的請求和從服務(wù)器到客戶機的響應(yīng)構(gòu)成。請求報文格式如下:
請求行 - 通用信息頭 - 請求頭 - 實體頭 - 報文主體
請求行以方法字段開始,后面分別是 URL 字段和 HTTP 協(xié)議版本字段,并以 CRLF 結(jié)尾。
應(yīng)答報文格式如下:
狀態(tài)行 - 通用信息頭 - 響應(yīng)頭 - 實體頭 - 報文主體
狀態(tài)碼元由3位數(shù)字組成,表示請求是否被理解或被滿足。原因分析是對原文的狀態(tài)碼作簡短的描述,狀態(tài)碼用來支持自動操作,而原因分析用來供用戶使用??蛻魴C無需用來檢查或顯示語法。工作流程:
一次HTTP操作稱為一個事務(wù),其工作過程可分為四步:
首先客戶機與服務(wù)器需要建立連接。只要單擊某個超級鏈接,HTTP的工作就開始了。
建立連接后,客戶機發(fā)送一個請求給服務(wù)器,請求方式的格式為:統(tǒng)一資源標(biāo)識符(URL)、協(xié)議版本號,后邊是MIME信息包括請求修飾符、客戶機信息和可能的內(nèi)容。
服務(wù)器接到請求后,給予相應(yīng)的響應(yīng)信息,其格式為一個狀態(tài)行,包括信息的協(xié)議版本號、一個成功或錯誤的代碼,后邊是MIME信息包括服務(wù)器信息、實體信息和可能的內(nèi)容。
客戶端接收服務(wù)器所返回的信息通過瀏覽器顯示在用戶的顯示屏上,然后客 戶機與服務(wù)器斷開連接。
Javascript的作用:
1,進行驗證(通過正則表達式,在css+HTML的部分特性進行瀏覽器端的格式驗證工作)
2,進行交互(將客戶端的一個請求通過JavaScript可以發(fā)送到服務(wù)器端,也可以在瀏覽器端進行人機的交互,突破了以前靜態(tài)頁面的交互性限制)3,進行特效的處理,如走馬燈,時間時鐘。
Servlet生命周期:(詳細)是指Servlet實例從被創(chuàng)建到其消失(對象銷毀,回收)中間的時間及各個階段,稱之為Servlet生命周期。
前提:web服務(wù)器加載類。之后執(zhí)行以下過程:
1,實例化:Servlet容器創(chuàng)建Servlet實例,具體就是當(dāng)接收到客戶端的第一次請求時,Servlet容器負責(zé)創(chuàng)建Servlet的一個實例。且在此過程中僅創(chuàng)建一個實例,通過多線程的方式響應(yīng)客戶端的請求
2,初始化:該容器調(diào)用init()方法。
3,服務(wù):當(dāng)請求到達時,該Servlet容器自動調(diào)用server()方法,根據(jù)客戶端發(fā)送請求的方式,選擇doXxx()方法執(zhí)行
4,銷毀:當(dāng)web服務(wù)器被卸載的時候,調(diào)用destroy()方法進行對象的銷毀。請看以下的一段代碼: package com.fit.servlet;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class Test extends HttpServlet { private static final long serialVersionUID = 1L;
public Test(){
super();
System.out.println(“===========================”);
} public void destroy(){
System.out.println(“對象被銷毀!”);} public void init()throws ServletException {
System.out.println(“對象初始化!”);} protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
System.out.println(“get方法執(zhí)行”);} protected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
this.doGet(request, response);} protected void service(HttpServletRequest arg0, HttpServletResponse arg1)
throws ServletException, IOException {
System.out.println(“服務(wù)開始啟動了!”);
super.service(arg0, arg1);}
}運行效果如下:
=========================== 對象初始化!服務(wù)開始啟動了!
get方法執(zhí)行
2011-7-19 12:07:04 org.apache.catalina.core.StandardContext reload 信息: Reloading this Context has started 對象被銷毀!
分析原因:
1,實例化對象發(fā)生在客戶端請求第一次到達的時候,而不是類被加載的時候。2,對象只被實例化一次.3,如果service()被覆寫的話,則調(diào)用的時候加入super.service(arg0, arg1);這句話時候才可以清楚的調(diào)用的doXxx()方法,如果不加入此句話,那么將不會執(zhí)行doGet()方法。所以一般不要覆寫service()方法。只需要覆寫doGet()和doPost()方法。
4,當(dāng)web服務(wù)器被卸載的時候,將執(zhí)行destroy()方法。進行對象的銷毀!
Jsp頁面構(gòu)成元素,Jsp跟Html的區(qū)別,優(yōu)勢
Jsp定義:(Java Server Page)Java服務(wù)器端語言,組成如下: 1,靜態(tài)模板:由HTML,css,JavaScript等元素構(gòu)成。
2,指令:設(shè)定網(wǎng)頁元素的屬性,用于提供這個歌JSP網(wǎng)頁的相關(guān)信息。
3,腳本元素--聲明:<%!...%>,在此之中可以進行變量,常量的定義,類,方法都可以聲明,但是一般不用。
4,腳本元素--Java腳本:<%...%>,在此期間可以進行Java代碼的拼寫。5,腳本元素--表達式:<%=..%>,用于表達式輸出時使用。
6,動作:利用JSP動作可以重用JavaBean組件,可以動態(tài)的包含頁面,也可以進行服務(wù)器端的跳轉(zhuǎn)(即將用戶的請求轉(zhuǎn)發(fā)給其他的頁面)。7,注釋:
--HTML注釋:,此種注釋可以在頁面中看到,成為客戶端注釋。--Jsp注釋:<%----%>,此種注釋在頁面中看不到,也成為服務(wù)器端注釋。--Java注釋:
?單行注釋:// ?多行注釋:/*???*/ Jsp優(yōu)點:使用HTML,CSS等技術(shù)構(gòu)建頁面的模板部分,用Java語言根據(jù)用戶的輸入動態(tài)生成可變的內(nèi)容部分。既可以實現(xiàn)HTML控制頁面布局,也亦可以實現(xiàn)Servlet的功能,實現(xiàn)了內(nèi)容與表示分離。Jsp的常見指令,并說出靜態(tài)包含和動態(tài)包含的區(qū)別
Page指令:<%@ page language=”java” import=” 完整的包.類名稱” autoFlush=”true[false]” errorPage=”文件名” isErrorPage=”false[true]” isThreadSafe(設(shè)置是否能多線程使用)contentType=”text/html;charset=ISO-8859-1” %> 包含指令:<%@ include file=”文件名”%> taglib指令:此指令用于在Jsp頁面中引入用戶自定義的標(biāo)簽庫。例如: <@% taglib url=http://java.sun.com/jsp/jstl/core prefix=”c”%> 靜態(tài)包含跟動態(tài)包含的區(qū)別:
<%@ include file=”文件名%>,此包含屬于靜態(tài)包含,是指先將文件包含進來然后在進行編譯,編譯后生成的class文件中,被包含的文件在靜態(tài)塊中。且此種包含不允許帶參數(shù)。
Jsp常見的動作,?調(diào)用JavaBean相關(guān):
?
?
?
?
?
?輸入/輸出對象
?request:表示客戶端對網(wǎng)頁的請求
?response:用于處理Jsp生成的響應(yīng),使用Http協(xié)議將響應(yīng)發(fā)送給客戶端。
?out:表示從response中取得的輸出流。常用的方法有write(),print(),println()等,用于在頁面中輸出文本形式的響應(yīng)內(nèi)容 ?作用域通信對象
?pageContext:此通信對象的作用域僅在當(dāng)前頁面有效,一旦跳轉(zhuǎn)則不可用
?request:此通信對象的作用域針對的同一個客戶的請求,如果不是同一個請求則不可以使用
?session:此通信對象的作用域適用于一次會話,即打開的同一個瀏覽器的所有頁面都可以適用
?application:此通信對象的作用域適用于基于WEB服務(wù)器的所有會話,適用于監(jiān)聽器 ?Servlet對象
?page:指向當(dāng)前Jsp頁面經(jīng)過轉(zhuǎn)譯(jsp?.java文件),編譯(.java文件?.class文件)后的對象本身,即編譯后的Servlet對象本身
?config:是在一個Servlet初始化時,服務(wù)器向它傳遞的初始化信息。初始化信息可以在web.xml中找到。?錯誤對象
?execption:表示Jsp頁面運行時拋出的異常對象,可以在專門準(zhǔn)備的錯誤處理頁面中訪問這個異常對象。
Jsp執(zhí)行過程:
?jsp文件轉(zhuǎn)譯:當(dāng)客戶端請求一個正確的Jsp文件時,將Jsp—>.java文件(即將Jsp文件翻譯成相應(yīng)的Servlet類的源文件)?編譯:.java文件?.class文件,即將Servlet類的源文件進行編譯成為.class的Servlet文件。?調(diào)用Servlet的service()方法響應(yīng)用戶的請求。
描述Jsp和Servlet的區(qū)別,共同點,各自的應(yīng)用范圍:
1,從發(fā)展上來看,Jsp可以避開Servlet的輸出頁面的繁瑣步驟,它集合了HTML和Servlet的優(yōu)點。
2,從本質(zhì)上來說,Jsp是Servlet的擴展,它是Servlet的簡易形式。Jsp經(jīng)過轉(zhuǎn)譯之后就成為了類Servlet。
3,從創(chuàng)建方式上來說:Jsp由HTML代碼和JSP標(biāo)簽構(gòu)成,而Servlet則完全是由程序代碼構(gòu)成擅長于流程控制和事務(wù)處理的類
4,從使用角度來說:在MVC中,Jsp擔(dān)任的是VIEW層,側(cè)重于視圖,而Servlet則充當(dāng)?shù)目刂茖?,?cè)重于控制邏輯。請求轉(zhuǎn)發(fā)和重定向
? response.sendRedirect():利用response對象向客戶端發(fā)回一個響應(yīng)指示其訪問其他URL資源,或者說是一個web組件向另一個web組件發(fā)送一個新的請求,屬于重定向,地址欄有變化。且不可以傳遞屬性request參數(shù),當(dāng)所有的代碼執(zhí)行完之后才進行重定向。
?request.getRequestDispatcher().forword(req,resp):web組件將一個請求轉(zhuǎn)發(fā)給另一個web組件,他們始終是同一個請求,在此期間可以傳遞request屬性參數(shù),地址欄沒有變化。且一執(zhí)行到此代碼處,后邊的將不再執(zhí)行
JavaBean的組成:
?類必須是具體的,公共的。?提供無參數(shù)的構(gòu)造方法
?提供getter()和setter()方法訪問它的屬性。版權(quán)所有@楊肖飛yangxf159371@126.com
第四篇:javaweb課程設(shè)計
課程設(shè)計:基于Java Web的討論區(qū)BBS系統(tǒng)的設(shè)計與實現(xiàn)
本系統(tǒng)要求實現(xiàn)以下主要功能:
(1)登錄:提供用戶登錄系統(tǒng)的功能,需要輸入用戶名和密碼
(2)注冊:提供用戶注冊的功能,需要輸入用戶名、密碼、密碼確認、Email、QQ
(3)修改注冊信息:提供用戶修改注冊信息的功能,可以修改密碼、Email、QQ
(4)瀏覽討論區(qū):用戶登錄后就可以瀏覽系統(tǒng)中已存在的討論區(qū),用戶可以查看某討論
區(qū)的詳細信息,也可以進入該討論區(qū)瀏覽已發(fā)表的帖子,以及回帖
(5)創(chuàng)建討論區(qū):用戶可以創(chuàng)建討論區(qū),每個討論區(qū)包含一個名稱和順序號,每個討論
區(qū)的名稱在系統(tǒng)中是唯一的,順序號表示討論區(qū)在列表中的排序
(6)修改討論區(qū):提供討論區(qū)名稱和順序號的修改功能
(7)刪除討論區(qū):提供討論區(qū)刪除的功能,方便管理員進行討論區(qū)管理
(8)瀏覽帖子:用戶進入一個討論區(qū)后,可以看到帖子列表,包含帖子主題、作者、創(chuàng)
建時間、回復(fù)次數(shù),點擊一個帖子,可以查看該帖子的內(nèi)容和回帖
(9)創(chuàng)建帖子:用戶進入一個討論區(qū)后,可以選擇創(chuàng)建一個新帖子,需要輸入帖子標(biāo)題
和內(nèi)容
(10)修改帖子:提供給管理員使用,修改帖子標(biāo)題和內(nèi)容
(11)刪除帖子:提供給管理員使用,方便管理員進行帖子整理
(12)回復(fù)帖子:用戶在瀏覽帖子信息的時候,可以進行回復(fù)
第五篇:javaweb學(xué)習(xí)心得
學(xué)習(xí)心得
在寫心得之前總結(jié)下中級部分學(xué)習(xí)的內(nèi)容,我們的中級部分主要學(xué)習(xí)了html,css,javacript,xml,dtd/scheam,以及java ee 中的jsp,servlet,過濾器,監(jiān)聽器,JSTL,EL,jQuery,Ajax。
下面就各個模塊進行總結(jié):在學(xué)習(xí)html時,我是對這個沒太在意的,因為里面全部是標(biāo)簽,沒有需要理解的內(nèi)容,全部是屬于識記的,所以在學(xué)習(xí)時相對輕松,對于html常用的標(biāo)簽都是非常清楚的form中的十一種類型,常用的有text,password,hidden,submit,button,radio,checkbox,等其他的標(biāo)簽如div,table,span,select都是重要的標(biāo)簽.Css的學(xué)習(xí):雖然說在標(biāo)簽中也可以定義樣式,但是這么做看起來不是那么明智,我在學(xué)CSS時還是比較努力的,所有的樣式效果都測試過,并且寫了相應(yīng)的案例,只是過了不到3個月就忘了一大半,很多時候都是查文檔才能寫出來的,雖然CSS對于我們來說不必要非常精通,但是我覺得掌握的東西越多,以后的工作就越輕松,所以在中級結(jié)束后也會去看看前面的筆記和案例。
Javascript:js 我認為是最重要的,甚至于超過servlet,jsp,在上課期間,講的內(nèi)容還是比較少的,就javascript中創(chuàng)建對象來說吧,應(yīng)該只講過3中方法,雖然在一般的情況下是用不上的,但是我覺得還是有必要學(xué)習(xí)的,這樣有助于看懂別人寫的框架,在javascript這部分學(xué)習(xí)中講的最多的還是dom操作,不過我覺得用dom操作太繁瑣了,寫的代碼太多,而且效率看起來也不高,后面就是講的事件,事件也算是簡單的,只是對觸發(fā)的事件進行相應(yīng)的響應(yīng)。除了這些就是javascript流程控制,對象一些基本語法,這些和java類似,所以在上課時沒有講得太多。
Xml: Markup Language可擴展標(biāo)記語言。它是由SGML(Standard Gerneralized Markup language)發(fā)展而來的,允許開發(fā)者自定標(biāo)簽,可以將標(biāo)簽和內(nèi)容有效的分離。在XML技術(shù)里,可以編寫一個文檔來約束XML文檔的書寫規(guī)范,稱之為XML約束。本文主要介紹DTD與Schema兩種約束,在這里學(xué)習(xí)了dtd,scheama,定義XML約束,這部分的學(xué)習(xí)是我感覺最累的一部分,DTD還算好,SCheama里面的內(nèi)容,現(xiàn)在都忘了,沒有任何記憶,只知道在XML約束中有著兩中方式,還好這些在剛開始工作時是用不上的,因此我也沒有用很多時間來學(xué)習(xí)。
Servlet:我覺得是比較簡單的,可能是因為它是java代碼,容易理解。首先講的是開發(fā)環(huán)境的配置,安裝tomcat,了解tomcat下的目錄,以及web工程下的目錄。后來是講了servlet的訪問方式,post和get的區(qū)別,處理中文亂碼是servlet中一個重要的知識點,幾乎每個項目都會遇到這個問題。主要亂碼有g(shù)et,post亂碼,是通過設(shè)置request或者response的編碼方式來實現(xiàn)的。Servlet間的跳轉(zhuǎn)方式有重定向和轉(zhuǎn)發(fā),對于重定向和轉(zhuǎn)發(fā)的區(qū)別,現(xiàn)在理解的很透徹了,重定向是不能獲取request中參數(shù),是客戶端的兩次請求,而轉(zhuǎn)發(fā)是服務(wù)器內(nèi)部跳轉(zhuǎn),不過,兩種在設(shè)置過濾器的情況下,都要通過過濾器才能跳轉(zhuǎn)。Servlet的生命周期是筆試的必考題,其實這是很簡單的,只需要理解,沒必要死記硬背的,session算是重要的知識點,很多數(shù)據(jù)都是存儲在內(nèi)存中,如購物車,用戶信息等,還可以對session設(shè)置生存時間。說到session就必須說說四種會話跟蹤技術(shù),cookie,URL重寫,表單域隱藏和session。
JSP:JSP實際上和servlet是一樣的,只不過兩者側(cè)重點不同,JSP的內(nèi)置對象和作用域大致是一樣的,JSP中還有動作,常用的有操作JavaBean的動作,頁面跳轉(zhuǎn)的動作,以及包含的動作。這里重點提到兩種包含的區(qū)別。在JSP還講過jstl和EL表達式,都是基礎(chǔ)的應(yīng)用,不過寫自定義的標(biāo)簽還是要有一定的java基礎(chǔ)的,我開始不太理解標(biāo)簽的解析過程,后來看了幾個例子,發(fā)現(xiàn)自定義的已不是那么難。
jQuery:jQuery可以說是中級部分學(xué)的最好的,主要是它方便了,特別是選擇器,而且避免了一些瀏覽器的差異,所以在學(xué)習(xí)jQuery后,就再也不想用javascript來獲取元素了。不僅如此,jQuery中封裝的Ajax操作也是非常簡單,不需要自己封裝一個類,$.get和$.post 能夠省去很多麻煩,jQuery的監(jiān)聽事件也是很簡單,不需要在標(biāo)簽中添加對應(yīng)事件,可以動態(tài)的綁定事件。還有就是dom操作更是方便。我在學(xué)習(xí)完Ajax,json后就發(fā)現(xiàn),即使是沒有JSP,也能做出一個動態(tài)頁面出來,只是會存在效率問題。
總結(jié):雖然說這上面的知識大部分都掌握了,但是能否靈活運用才是重點,所以在今后的學(xué)習(xí)中多思考問題是否有多種解決方法。