2019-09-19

事務(wù)是一系列的操作,當(dāng)所有的步驟像一個操作一樣被完整地執(zhí)行,我們稱該事務(wù)被提交承冰。由于其中的一部分或多步執(zhí)行失敗华弓,導(dǎo)致沒有步驟被提交,則事務(wù)必須回滾到最初的系統(tǒng)狀態(tài)巷懈。增刪改该抒,為什么將setAutoCommit設(shè)置為false
因為要在service層處理事務(wù)

servleit 字符集 提取表單信息
resp.setContentType
req.setCharacterEncoding("utf-8");
req.getparameter 從前臺獲取數(shù)據(jù)
req.setAttribute在服務(wù)器端保存值目的是把數(shù)據(jù)傳到頁面
Web層的數(shù)據(jù)共享慌洪,四個作用域(Scope)

  1. PageContext-----------page 保存的數(shù)據(jù)當(dāng)前頁面有效
  2. HttpServletRequest--------request 請求
  3. HttpSession------------------session 關(guān)閉瀏覽器數(shù)據(jù)失效
  4. ServletContext--------------application 關(guān)閉服務(wù)器數(shù)據(jù)失效

jsp的內(nèi)置對象:request out session application response page pageContext config exception
請求轉(zhuǎn)發(fā)與重定向的區(qū)別:

  1. 轉(zhuǎn)發(fā)是一次請求而重定向是兩次請求
  2. 只能轉(zhuǎn)主站內(nèi)的資源而重定向可以定向任意資源
  3. 如果是請求方顶燕,那么URL是第一次轉(zhuǎn)發(fā)時候的地址
    而重定向會直接定向到最終的目標資源
    //資源的跳轉(zhuǎn)(請求轉(zhuǎn)發(fā):從A資源跳轉(zhuǎn)到B資源,客戶向服務(wù)器發(fā)送了一次請求)
    //轉(zhuǎn)發(fā)
    // RequestDispatcher rd=req.getRequestDispatcher("/aa");
    // rd.forward(req, resp);
    //重定向
    resp.sendRedirect("/Java3DemoWebProject/aa");

提取客戶端表單信息:req.getParameter
修改字符集:req.setCharacterEncoding
resp.setContentType("text/html;charset=utf-8");
req.setCharacterEncoding("utf-8");
PrintWriter out=resp.getWriter();
String name=req.getParameter("name");//獲取表單參數(shù)

JavaWeb基礎(chǔ)

  1. Web項目的結(jié)構(gòu)(基于請求和響應(yīng)的)

<v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"><v:stroke joinstyle="miter"><v:formulas></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path></v:stroke></v:shapetype><v:shape id="_x0000_i1043" type="#_x0000_t75" style="width:257.25pt;
height:121.5pt;visibility:visible;mso-wrap-style:square"><v:imagedata src="file:///C:\Users\ADMINI~1\AppData\Local\Temp\msohtmlclip1\01\clip_image001.png" o:title=""></v:imagedata></v:shape>

  1. 基本的概念:Http(無狀態(tài)連接協(xié)議) URL Web服務(wù)器(tomcat) 三層結(jié)構(gòu)(MVC)

組件(可重用的) JavaEE(它是一個標準:jdbc jsp servlet) C/S與B/S Web容器(服務(wù)器就是一個web容器)

3.常見的服務(wù)端語言:PHP JSP Python C# JavaScript(Nodejs)

4.下載并安裝一個web應(yīng)用服務(wù)器:Tomcat

http://tomcat.apache.org/

目錄結(jié)構(gòu):

<v:shape id="_x0000_i1042" type="#_x0000_t75" style="width:63.75pt;height:127.5pt;
visibility:visible;mso-wrap-style:square"><v:imagedata src="file:///C:\Users\ADMINI~1\AppData\Local\Temp\msohtmlclip1\01\clip_image002.png" o:title=""></v:imagedata></v:shape>

Bin:存放了一些可執(zhí)行文件(.bat) startup.bat啟動服務(wù)器

Shutdown.bat停止服務(wù)器

Conf:存放了一些配制文件server.xml(核心)

<Connector connectionTimeout="20000" port="8089" protocol="HTTP/1.1" redirectPort="8443"/>

Lib:web開發(fā)所需要的類庫

Log:服務(wù)器的日志信息

Webapps:所有的web項目都會發(fā)布到此文件夾中

5. 還需要配制環(huán)境變量

<v:shape id="_x0000_i1041" type="#_x0000_t75" style="width:192.75pt;height:257.25pt;
visibility:visible;mso-wrap-style:square"><v:imagedata src="file:///C:\Users\ADMINI~1\AppData\Local\Temp\msohtmlclip1\01\clip_image003.png" o:title=""></v:imagedata></v:shape>

6.要將tomcat與eclipse整合

<v:shape id="_x0000_i1040" type="#_x0000_t75" style="width:240.75pt;height:186.75pt;
visibility:visible;mso-wrap-style:square"><v:imagedata src="file:///C:\Users\ADMINI~1\AppData\Local\Temp\msohtmlclip1\01\clip_image004.png" o:title=""></v:imagedata></v:shape>

創(chuàng)建Web項目幾種:

  1. 創(chuàng)建一個普通的JavaWeb項目

  2. 利用Maven創(chuàng)建一個JavaWeb項目

7.web項目的結(jié)構(gòu)

<v:shape id="_x0000_i1039" type="#_x0000_t75" style="width:141pt;height:162.75pt;
visibility:visible;mso-wrap-style:square"><v:imagedata src="file:///C:\Users\ADMINI~1\AppData\Local\Temp\msohtmlclip1\01\clip_image005.png" o:title=""></v:imagedata></v:shape>

WebContent:可以存放靜態(tài)資源(html,css,js,img)

每個web項目中核心的配制文件:web.xml

注意:WEB-INF下面資源對用戶是不可見的

8.什么是Servlet(控制器controller):服務(wù)器端的小應(yīng)用程序冈爹。作用:可以處理客戶端的請求涌攻,可以進行資源跳轉(zhuǎn)。

如何創(chuàng)建一個servlet程序

  1. 當(dāng)前類要繼承HttpServlet

  2. doGet(HttpServletRequestreq, HttpServletResponseresp)

3. doPost(HttpServletRequestreq, HttpServletResponseresp)

說明:如果客戶端向服務(wù)器端發(fā)的請求的方式為get频伤,調(diào)用doGet

如果客戶端向服務(wù)器端發(fā)的請求的方式為post,調(diào)用 doPost HttpServletRequest接口恳谎,是由web容器對其進行初始化的,作用:可以

封裝請求的數(shù)據(jù)(參數(shù))

HttpServletResponse接口憋肖,作用:向客戶端響應(yīng)結(jié)果(html/img/css)

  1. 配制web.xml文件

<v:shape id="_x0000_i1038" type="#_x0000_t75" style="width:339.75pt;height:204.75pt;visibility:visible;
mso-wrap-style:square"><v:imagedata src="file:///C:\Users\ADMINI~1\AppData\Local\Temp\msohtmlclip1\01\clip_image006.png" o:title=""></v:imagedata></v:shape>

  1. servlet的生命周期的三個方法地:

init() 初始化 service()響應(yīng)客戶請求 destroy()銷毀

  1. HTTPServletRequest的作用 ü 提取客戶端請求信息 ? 提取客戶端表單信息req.getParameter("email"); ? 提取HTTP請求報頭信息 ? cookie ü 修改字符集req.setCharacterEncoding("utf-8"); ü 在服務(wù)器端保存值

如果想要在頁面上輸出list中的對象的信息因痛,在Servlet中是非常麻煩的(不建議),推薦JSP(Java Server Page)動態(tài)網(wǎng)頁:與數(shù)據(jù)庫有交互岸更。JSP就是一個簡化的Servlet鸵膏,所有的Jsp網(wǎng)頁都會由Web容器自動編譯成Servlet最終執(zhí)行的。

JSP如何創(chuàng)建怎炊,里面都寫什么谭企?可以寫Java代碼、HTML评肆、CSS债查、JavaScript

如何在服務(wù)端(Servlet)保存值:

req.setAttribute("list", list);

在Jsp中如何獲取到保存在服務(wù)端的list集合?

request.getAttribute("list");

ü WEB資源跳轉(zhuǎn) — 請求轉(zhuǎn)發(fā)

兩種跳轉(zhuǎn)的方式:

  1. 轉(zhuǎn)發(fā):客戶端向服務(wù)器只發(fā)送了一次請求

<v:shape id="_x0000_i1037" type="#_x0000_t75" style="width:263.25pt;height:159.75pt;
visibility:visible;mso-wrap-style:square"><v:imagedata src="file:///C:\Users\ADMINI~1\AppData\Local\Temp\msohtmlclip1\01\clip_image007.png" o:title=""></v:imagedata></v:shape>

  1. 重定向:發(fā)送了兩次請求

請求轉(zhuǎn)發(fā)與重定向的區(qū)別:

  1. 轉(zhuǎn)發(fā)是一次請求而重定向是兩次請求

  2. 只能轉(zhuǎn)主站內(nèi)的資源而重定向可以定向任意資源

  3. 如果是請求發(fā)瓜挽,那么URL是第一次轉(zhuǎn)發(fā)時候的地址

而重定向會直接定向到最終的目標資源

思考:我們現(xiàn)在做的刪除盹廷,修改,顯示所有的留言信息是否需要每一個操作都要對應(yīng)一個Servlet(不建議)久橙,我們可以將以上的這些操作放到一個Servlet中(創(chuàng)建一個ManagerServlet)

如何確定頁面上的某一個操作將會對應(yīng)Servlet中的某一個方法俄占?我們需要從頁面向后臺傳遞參數(shù)4醯妗!颠放!

傳遞參數(shù)的方式:

  1. 通過表單傳遞 前臺排惨?name=tom&password=123&

n 后臺request.getParameter(“name”);

n 隱藏域<input type=”hidden” name=”q” value=”123”>

  1. 通過超鏈接向后臺傳遞參數(shù)

n <a href=”/工程名/映射地址?id=?&q=delete”>刪除</a>

<v:shape id="圖片_x0020_2" o:spid="_x0000_i1036" type="#_x0000_t75" style="width:414.75pt;height:229.5pt;visibility:visible;mso-wrap-style:square"><v:imagedata src="file:///C:\Users\ADMINI~1\AppData\Local\Temp\msohtmlclip1\01\clip_image008.png" o:title=""></v:imagedata></v:shape>

HTTPServletResponse的作用 ü 設(shè)置響應(yīng)字符集

resp.setContentType("text/html;charset=utf-8"); ü 向客戶端輸出信息

out.println("添加失敗"); ? 輸出DHTML和數(shù)據(jù) ? 輸出二進制文件 ? 輸出Cookie ? 輸出XML( Ajax) ü WEB資源跳轉(zhuǎn) — 請求重定向

利用ServletContext可以獲取到web.xml配制文件中的初始化參數(shù)碰凶。

//ServletConfig可以獲取到初始化的參數(shù)(局部的初始化參數(shù))

//<init-param>

// <param-name>pageSize</param-name>

// <param-value>10</param-value>

//</init-param>

//String abc = config.getInitParameter("pageSize");

//如何獲取到全局的初始化參數(shù)

// <context-param>

// <param-name>abc</param-name>

// <param-value>123</param-value>

// </context-param>

String abc = config.getServletContext().getInitParameter("abc");

JSP的內(nèi)置對象

request response session out
application

pageContext page config exception

MVC模式(設(shè)計模式):單例(鏈接數(shù)據(jù)庫的時候) 工廠 代理 動態(tài)代理

M:Model模型

V:View 視圖

C:Control 控制器

<v:shape id="圖片_x0020_3" o:spid="_x0000_i1035" type="#_x0000_t75" style="width:365.25pt;
height:204.75pt;visibility:visible;mso-wrap-style:square"><v:imagedata src="file:///C:\Users\ADMINI~1\AppData\Local\Temp\msohtmlclip1\01\clip_image009.png" o:title=""></v:imagedata></v:shape>

MVC的優(yōu)點 ü 低耦合性(減少層與層之間的依賴關(guān)系) ü 高重用性 ü 可維護性

三種JSP指令 1. page

  1. include

  2. taglib (自定義標簽)

在WEB應(yīng)用中處理亂碼問題

  1. 需要設(shè)置請求與響應(yīng)的字符編碼集

  2. Jsp頭的字符編碼集

  3. HTML頁面的字符編碼集

  4. MySql數(shù)據(jù)庫的字符編碼集

  5. 設(shè)置服務(wù)器器的編碼集server.xml

注意: <a href="<%=path %>/user/manager?id=<%=gb.getId() %>&q=delete&name=張三" class="btn btn-danger">刪除</a>

后臺:String name = req.getParameter(“name”);//此時獲取到的name是亂碼

解決方法:

String username = new String(name.getBytes(“ISO-8859-1”),”utf-8”);

JSP的動作標簽有幾個暮芭?

<jsp:useBean> <jsp:getProperty> <jsp:setProperty>

<jsp:forward> <jsp:include>

EL( Expression Language) — 表達式語言 ü 是JSP中一種簡潔的數(shù)據(jù)訪問語言 ü 簡化JSP的開發(fā) ? 主要功能 ü 通過它可以在JSP網(wǎng)頁中方便地訪問,并輸出: ? 存儲在作用域中的對象及其屬性 ? 訪問請求參數(shù)欲低、 cookie和其他請求報文中的信息 ü 簡單的運算:算數(shù)辕宏、關(guān)系、邏輯砾莱、條件求值 ? 語法格式 ${expression}

EL中的隱式對象

<%request.setAttribute(“username”,”kitty”)%>
{requestScope.username}/{username}

<%session.setAttribute(“username”,”kitty”)%>
${sessionScope.username}

${initParam.pageSize}

注意:默認情況下是從requestScope獲取數(shù)據(jù)

JSP 標準標簽庫(JSTL)

JSP標準標簽庫(JSTL)是一個JSP標簽集合瑞筐,它封裝了JSP應(yīng)用的通用核心功能。

JSTL支持通用的腊瑟、結(jié)構(gòu)化的任務(wù)聚假,比如迭代,條件判斷闰非,XML文檔操作膘格,國際化標簽,SQL標簽财松。 除了這些瘪贱,它還提供了一個框架來使用集成JSTL的自定義標簽。

根據(jù)JSTL標簽所提供的功能辆毡,可以將其分為5個類別菜秦。

· 核心(core)標簽:<c:if> <c:forEach> <c:set> <c:out>

· 格式化標簽

· SQL 標簽

· XML 標簽

· JSTL 函數(shù)

JSTL標簽是第三方給我們提供好的庫

https://mvnrepository.com/artifact/javax.servlet/jstl/1.2

<v:shape id="_x0000_i1034" type="#_x0000_t75" style="width:120pt;height:56.25pt;
visibility:visible;mso-wrap-style:square"><v:imagedata src="file:///C:\Users\ADMINI~1\AppData\Local\Temp\msohtmlclip1\01\clip_image010.png" o:title=""></v:imagedata></v:shape>

凡是以xxx.tld結(jié)尾的都是標簽文件

如何在Jsp頁面中引用jstl的核心標簽庫

%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %

JSP(servlet) 過濾器:Filter

JSP 和 Servlet 中的過濾器都是 Java 類。

過濾器可以動態(tài)地攔截請求和響應(yīng)舶掖,以變換或使用包含在請求或響應(yīng)中的信息球昨。

可以將一個或多個過濾器附加到一個 Servlet 或一組 Servlet。過濾器也可以附加到 JavaServer Pages (JSP) 文件和 HTML 頁面访锻。

過濾器是可用于 Servlet 編程的 Java 類褪尝,可以實現(xiàn)以下目的:

· 在客戶端的請求訪問后端資源之前,攔截這些請求期犬。

· 在服務(wù)器的響應(yīng)發(fā)送回客戶端之前河哑,處理這些響應(yīng)。

根據(jù)規(guī)范建議的各種類型的過濾器:

· 身份驗證過濾器(Authentication Filters)龟虎。

· 數(shù)據(jù)壓縮過濾器(Data compression Filters)璃谨。

· 加密過濾器(Encryption Filters)。

· 觸發(fā)資源訪問事件過濾器。

· 圖像轉(zhuǎn)換過濾器(Image Conversion Filters)佳吞。

· 日志記錄和審核過濾器(Logging and Auditing Filters)拱雏。

· MIME-TYPE 鏈過濾器(MIME-TYPE Chain Filters)。

· 標記化過濾器(Tokenizing Filters)底扳。

· XSL/T 過濾器(XSL/T Filters)铸抑,轉(zhuǎn)換 XML 內(nèi)容。

過濾器通過 Web 部署描述符(web.xml)中的 XML 標簽來聲明衷模,然后映射到您的應(yīng)用程序的部署描述符中的 Servlet 名稱或 URL 模式鹊汛。

當(dāng) Web 容器啟動 Web 應(yīng)用程序時,它會為您在部署描述符中聲明的每一個過濾器創(chuàng)建一個實例阱冶。

Filter 的執(zhí)行順序與在 web.xml 配置文件中的配置順序一致刁憋,一般把 Filter 配置在所有的 Servlet 之前。

<v:shape id="_x0000_i1033" type="#_x0000_t75" alt="http://www.runoob.com/wp-content/uploads/2014/01/20161112201612568.png" style="width:315.75pt;height:187.5pt;visibility:visible;mso-wrap-style:square"><v:imagedata src="file:///C:\Users\ADMINI~1\AppData\Local\Temp\msohtmlclip1\01\clip_image011.png" o:title="20161112201612568"></v:imagedata></v:shape>

Servlet 過濾器方法

過濾器是一個實現(xiàn)了 javax.servlet.Filter 接口的 Java 類木蹬。javax.servlet.Filter 接口定義了三個方法:

|

序號

|

方法 & 描述

|
|

1

|

public void doFilter (ServletRequest, ServletResponse, FilterChain) 該方法完成實際的過濾操作至耻,當(dāng)客戶端請求方法與過濾器設(shè)置匹配的URL時,Servlet容器將先調(diào)用過濾器的doFilter方法镊叁。FilterChain用戶訪問后續(xù)過濾器尘颓。

|
|

2

|

public void init(FilterConfig filterConfig) web 應(yīng)用程序啟動時,web 服務(wù)器將創(chuàng)建Filter 的實例對象意系,并調(diào)用其init方法泥耀,讀取web.xml配置饺汹,完成對象的初始化功能蛔添,從而為后續(xù)的用戶請求作好攔截的準備工作(filter對象只會創(chuàng)建一次,init方法也只會執(zhí)行一次)兜辞。開發(fā)人員通過init方法的參數(shù)迎瞧,可獲得代表當(dāng)前filter配置信息的FilterConfig對象。

|
|

3

|

public void destroy() Servlet容器在銷毀過濾器實例前調(diào)用該方法逸吵,在該方法中釋放Servlet過濾器占用的資源凶硅。

|

一、Filter 的基本工作原理

1扫皱、Filter 程序是一個實現(xiàn)了特殊接口的 Java 類足绅,與 Servlet 類似,也是由 Servlet 容器進行調(diào)用和執(zhí)行的韩脑。

2氢妈、當(dāng)在 web.xml 注冊了一個 Filter 來對某個 Servlet 程序進行攔截處理時,它可以決定是否將請求繼續(xù)傳遞給 Servlet 程序段多,以及對請求和響應(yīng)消息是否進行修改首量。

3、當(dāng) Servlet 容器開始調(diào)用某個 Servlet 程序時,如果發(fā)現(xiàn)已經(jīng)注冊了一個 Filter 程序來對該 Servlet 進行攔截加缘,那么容器不再直接調(diào)用 Servlet 的 service 方法鸭叙,而是調(diào)用 Filter 的 doFilter 方法,再由 doFilter 方法決定是否去激活 servlet 方法拣宏。

4沈贝、但在 Filter.doFilter 方法中不能直接調(diào)用 Servlet 的 service 方法,而是調(diào)用 FilterChain.doFilter 方法來激活目標 Servlet 的 service 方法勋乾,F(xiàn)ilterChain 對象時通過 Filter.doFilter 方法的參數(shù)傳遞進來的缀程。

5、只要在 Filter.doFilter 方法中調(diào)用 FilterChain.doFilter 方法的語句前后增加某些程序代碼市俊,這樣就可以在 Servlet 進行響應(yīng)前后實現(xiàn)某些特殊功能杨凑。

· 6、如果在 Filter.doFilter 方法中沒有調(diào)用 FilterChain.doFilter 方法摆昧,則目標 Servlet 的 service 方法不會被執(zhí)行撩满,這樣通過 Filter 就可以阻止某些非法的訪問請求。

數(shù)據(jù)共享有幾種方式:

JavaWeb中的會話

Http協(xié)議:它是一種無狀態(tài)的鏈接協(xié)議绅你∷帕保客戶端向服務(wù)器端發(fā)送了多次請求,服務(wù)器端無法確定是不是同一個用戶忌锯。如何解決以上問題:就要使用JavaWeb中的會話技術(shù)伪嫁。

什么是會話:客戶端與服務(wù)器之間的數(shù)據(jù)傳遞。(登錄偶垮,購物車)

會話的管理:管理數(shù)據(jù)

常用的會話技術(shù):Cookie(客戶端) Session(服務(wù)器端)

Cookie它是客戶端的技術(shù)张咳,程序會把每個用戶的數(shù)據(jù)以Cookie的形式寫給用戶的各自瀏覽器

再次訪問Web服務(wù)器的時候,會將生成的id(Cookie)一起發(fā)送給服務(wù)器似舵。

Cookie類:java.Servlet.http主要用于存儲會話數(shù)據(jù)脚猾。

1.構(gòu)造器Cookie(Stringname, Stringvalue)``以名(key)值(value)對的方式來保存會話數(shù)據(jù)的

2.setMaxAge(int expiry)``設(shè)置Cookie的有效時間(時間以秒為單位)

有效時間一天(1*24*60*60)

3.``如何從服務(wù)器端向服務(wù)器端發(fā)送Cookie:resp.addCookie(Cookiecookie)

4.服務(wù)器端讀取客戶端發(fā)送的Cookie信息 req.getCookies() Cookie[]

  • Cookie的原理

  • 1.要在服務(wù)器端創(chuàng)建Cookie對象,要將會話的數(shù)據(jù)保存到嗎會話中砚哗。

  • 2.服務(wù)器會發(fā)送<u>Cookei</u>到瀏覽器端

  • 3.瀏覽器會在下次訪問服務(wù)器的時候會攜帶<u>Cookei</u>的信息(這些信息會保存在<u>http</u>的請求頭當(dāng)中)

  • 4.服務(wù)器會接收到瀏覽器攜帶的Cookie信息

  • 注意:cookie.setMaxAge(130246060)

1.正數(shù):表示cookie的數(shù)據(jù)保存到硬盤中龙助。

2.負數(shù):只會保存到瀏覽器的內(nèi)存當(dāng)中,只要瀏覽器關(guān)閉蛛芥,<u>cookei</u>就失效了

3.0表示會刪除同名的<u>cookei</u>數(shù)據(jù)

<u>cookei</u>中的數(shù)據(jù)智能保存非中文字符串類型提鸟。我們可以保存多個<u>cookei</u>,一個瀏覽器能保存300個<u>cookei</u>

每個站點可以保存20個<u>cookei</u>仅淑,每個<u>cookei</u>的大小為4KB

Session是服務(wù)器端的會話技術(shù)称勋,服務(wù)器在運行的時候,會為每一個用戶創(chuàng)建一個單獨的Session

Session可為用戶的瀏覽器獨享漓糙。(只要瀏覽器不關(guān)閉保存在session中的信息會一直存在)

Session(HttpSession對象)中的和新方法:

getId()``獲取到session的id

setAttribute(Stringname, Objectvalue)``向session當(dāng)中保存對象

getAttribute(Stringname) 從session當(dāng)中獲取對象

removeAttribute(Stringname)``根據(jù)key刪除session中的對象

invalidate()``銷毀session對象

Session``的工作原理:

1. 第一次服務(wù)器會創(chuàng)建一個seesion對象铣缠,給它分配一個唯一的id(JSESSIONID)

2. 要將JSESSIONID``作為cookei的值發(fā)送給客戶端保存

3. 第二次再發(fā)送請求的時候瀏覽器會攜帶JSESSIONID的cookei信息來訪問服務(wù)器

4. 服務(wù)器要得到JSESSIONID,然后在服務(wù)器的內(nèi)存當(dāng)中搜索是否存在對應(yīng)的session對象

5. 如果找不到就直接返回該對象

注意:保存到session的數(shù)據(jù)會被多個jsp、servlet共享

數(shù)據(jù)共享有幾種方式:

Web層的數(shù)據(jù)共享蝗蛙,四個作用域(Scope)

  1. PageContext-----------page 保存的數(shù)據(jù)當(dāng)前頁面有效

  2. HttpServletRequest--------request 請求

  3. HttpSession------------------session 關(guān)閉瀏覽器數(shù)據(jù)失效

  4. ServletContext--------------application 關(guān)閉服務(wù)器數(shù)據(jù)失效

分頁:有幾種方法

  1. 前臺分頁 一次將數(shù)據(jù)全部取出

  2. 后臺分頁(數(shù)據(jù)庫分頁) Mysql:limit Oracle :rownum

a. 查詢表中總的記錄數(shù)

b. 計算總頁數(shù):總的記錄數(shù)/每一頁要顯示的記錄數(shù)

總的記錄數(shù)/每一頁要顯示的記錄數(shù)+1

c. 查詢某一個區(qū)間段的數(shù)據(jù)

  1. 存儲過程PLSQL(表)

  2. Ajax分頁

  3. 1.MySQL:清楚如何利用MySQL進行分頁(SQL怎么寫)

  4. 分頁需求:

  5. 客戶端通過傳遞start(頁碼)蝇庭,limit(每頁顯示的條數(shù))兩個參數(shù)去分頁查詢數(shù)據(jù)庫表中的數(shù)據(jù),那我們知道MySql數(shù)據(jù)庫提供了分頁的函數(shù)limit m,n捡硅,但是該函數(shù)的用法和我們的需求不一樣哮内,所以就需要我們根據(jù)實際情況去改寫適合我們自己的分頁語句,具體的分析如下:

  6. 比如:

  7. 查詢第1條到第10條的數(shù)據(jù)的sql是:select * from table limit 0,10; ->對應(yīng)我們的需求就是查詢第一頁的數(shù)據(jù):select * from table limit (1-1)*10,10;

  8. 查詢第10條到第20條的數(shù)據(jù)的sql是:select * from table limit 10,20; ->對應(yīng)我們的需求就是查詢第二頁的數(shù)據(jù):select * from table limit (2-1)*10,10;

  9. 查詢第20條到第30條的數(shù)據(jù)的sql是:select * from table limit 20,30; ->對應(yīng)我們的需求就是查詢第三頁的數(shù)據(jù):select * from table limit (3-1)*10,10;

  10. 二:通過上面的分析壮韭,可以得出符合我們自己需求的分頁sql格式是:select * from table limit (start-1)*limit,limit; 其中start是頁碼北发,limit是每頁顯示的條數(shù)。

前臺所使用的分頁的插件:

  1. DisplayTag

  2. 可以使用自己定義的標簽什么是 AJAX 喷屋?

AJAX = 異步 JavaScript 和 XML琳拨。

AJAX 是一種用于創(chuàng)建快速動態(tài)網(wǎng)頁的技術(shù)。

通過在后臺與服務(wù)器進行少量數(shù)據(jù)交換屯曹,AJAX 可以使網(wǎng)頁實現(xiàn)異步更新狱庇。這意味著可以在不重新加載整個網(wǎng)頁的情況下,對網(wǎng)頁的某部分進行更新恶耽。

傳統(tǒng)的網(wǎng)頁(不使用 AJAX)如果需要更新內(nèi)容密任,必需重載整個網(wǎng)頁面。

有很多使用 AJAX 的應(yīng)用程序案例:新浪微博偷俭、Google 地圖浪讳、開心網(wǎng)等等。

AJAX的開發(fā)流程

1. 創(chuàng)建 XMLHttpRequest 對象

variable=new XMLHttpRequest();

  1. 向服務(wù)器發(fā)送請求

xmlhttp.open("GET","test1.txt",true);

xmlhttp.send();

  1. 服務(wù)器響應(yīng)

<pre style="margin-top:6.65pt;background:
whitesmoke;border:none;mso-border-alt:dotted #778855 .5pt;padding:0cm;
mso-padding-alt:9.0pt 9.0pt 9.0pt 9.0pt">document.getElementById("myDiv").innerHTML=xmlhttp.responseText;</pre>

4. 根據(jù)狀態(tài)的改變會觸發(fā)onreadystatechange 事件

<pre style="margin-top:6.65pt;background:
whitesmoke;border:none;mso-border-alt:dotted #778855 .5pt;padding:0cm;
mso-padding-alt:9.0pt 9.0pt 9.0pt 9.0pt">xmlhttp.onreadystatechange=function()</pre>

<pre style="margin-top:6.65pt;background:whitesmoke;border:none;mso-border-alt:dotted #778855 .5pt;
padding:0cm;mso-padding-alt:9.0pt 9.0pt 9.0pt 9.0pt"> {</pre>

<pre style="margin-top:6.65pt;background:whitesmoke;border:none;mso-border-alt:dotted #778855 .5pt;
padding:0cm;mso-padding-alt:9.0pt 9.0pt 9.0pt 9.0pt">if (xmlhttp.readyState==4 && xmlhttp.status==200)</pre>

<pre style="margin-top:6.65pt;background:whitesmoke;border:none;mso-border-alt:dotted #778855 .5pt;
padding:0cm;mso-padding-alt:9.0pt 9.0pt 9.0pt 9.0pt"> {</pre>

<pre style="margin-top:6.65pt;background:whitesmoke;border:none;mso-border-alt:dotted #778855 .5pt;
padding:0cm;mso-padding-alt:9.0pt 9.0pt 9.0pt 9.0pt"> document.getElementById("myDiv").innerHTML=xmlhttp.responseText;</pre>

<pre style="margin-top:6.65pt;background:whitesmoke;border:none;mso-border-alt:dotted #778855 .5pt;
padding:0cm;mso-padding-alt:9.0pt 9.0pt 9.0pt 9.0pt">}</pre>

<pre style="margin-top:6.65pt;background:whitesmoke;border:none;mso-border-alt:dotted #778855 .5pt;
padding:0cm;mso-padding-alt:9.0pt 9.0pt 9.0pt 9.0pt">}</pre>

Json的轉(zhuǎn)換工具

概述

JSON是一種輕量化的數(shù)據(jù)傳輸格式涌萤,在各種場景都有運用淹遵。比如在ajax中,服務(wù)端的數(shù)據(jù)一般通過JSON字符串的格式傳輸給前端形葬,前端ajax引擎自動將JSON字符串轉(zhuǎn)化為JS對象(需要將ajax的返回內(nèi)容格式設(shè)置為"json")合呐。那么此時我們在后臺服務(wù)器中就需要將封裝好的JavaBean對象轉(zhuǎn)化為JSON格式字符串來傳輸給前臺ajax引擎,此時使用JSON轉(zhuǎn)化工具將大大簡化我們代碼量笙以。

首先我們需要明確的是什么是JSON格式

JSON格式有兩種,一種是對象格式冻辩,另一種是數(shù)組格式(也可以叫集合)猖腕。

對象格式:{"key1":value1,"key2":value2......}

數(shù)組形式:[{對象1},{對象2}....]

<v:shape id="圖片_x0020_1" o:spid="_x0000_i1032" type="#_x0000_t75" alt="https://img-blog.csdn.net/20181010104715244?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3RpYW5qaW5kb25nMDgwNA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70" style="width:302.25pt;height:71.25pt;visibility:visible;mso-wrap-style:square"><v:imagedata src="file:///C:\Users\ADMINI~1\AppData\Local\Temp\msohtmlclip1\01\clip_image012.jpg" o:title="70"></v:imagedata></v:shape>

1. GSON轉(zhuǎn)換工具

2. JSONLib轉(zhuǎn)換工具:JSONArray JSONObject

3. Jackson轉(zhuǎn)換工具

https://blog.csdn.net/tianjindong0804/article/details/80573127

JSON字符串如何轉(zhuǎn)化成對象恨闪?

解析

1倘感、定義:是指將符合 JSON 語法規(guī)則的字符串轉(zhuǎn)換成對象的過程。

2咙咽、不同的編程語言都提供了解析 JSON 字符串的方法老玛,在這里主要講解 JavaScript 中的解析方法。主要有三種:

1)- 使用 eval()

2)- 使用 JSON.parse()

3)- 使用第三方庫,例如 JQuery 等

eval()

1蜡豹、eval() 函數(shù)的參數(shù)是一個字符串麸粮,其作用是直接執(zhí)行其中的 JavaScript 代碼。

2镜廉、eval() 能夠解析 JSON 字符串弄诲。從這里也可以看得出,JSON 和 JavaScript 是高度嵌合的娇唯。

3齐遵、但是,現(xiàn)在已經(jīng)很少直接使用 eval() 來解析了塔插,如果您的瀏覽器版本真的是很舊梗摇,可能才需要這個方法。此外想许,eval() 是一個相對危險的函數(shù)留美,因為字符串中可能含有未知因素。在這里伸刃,作為學(xué)習(xí)谎砾,還是要知道這也是一種方法。

4捧颅、請注意 eval() 的參數(shù)景图,在字符串兩旁加了括號,這是必須的碉哑,否則會報錯挚币。

5、因為 JSON 字符串是被大括號(“{}”)包圍的扣典,直接放到 eval() 會被當(dāng)成語句塊來執(zhí)行妆毕,因此要在兩旁加上括號,使其變成表達式贮尖。

示例代碼

<script>

var str = “console.log(‘hello’)”;

eval(sre);

</script>

控制臺輸出的執(zhí)行結(jié)果:

<v:shape id="圖片_x0020_4" o:spid="_x0000_i1031" type="#_x0000_t75" alt="https://images2015.cnblogs.com/blog/815181/201610/815181-20161027180549578-1762621811.png" style="width:163.5pt;height:53.25pt;visibility:visible;mso-wrap-style:square"><v:imagedata src="file:///C:\Users\ADMINI~1\AppData\Local\Temp\msohtmlclip1\01\clip_image013.png" o:title="815181-20161027180549578-1762621811"></v:imagedata></v:shape>

示例代碼

<script>

var str = ‘{ “name” : “Geoff Lui”,“age” : 26}’; //符合JSON語法規(guī)則的字符串

eval (“(“+str+”)”);

console.log(obj);

</script>

執(zhí)行結(jié)果:

<v:shape id="圖片_x0020_5" o:spid="_x0000_i1030" type="#_x0000_t75" alt="https://images2015.cnblogs.com/blog/815181/201610/815181-20161027180556828-373237556.png" style="width:207.75pt;height:69pt;visibility:visible;mso-wrap-style:square"><v:imagedata src="file:///C:\Users\ADMINI~1\AppData\Local\Temp\msohtmlclip1\01\clip_image014.png" o:title="815181-20161027180556828-373237556"></v:imagedata></v:shape>

JSON.parse()

1笛粘、現(xiàn)在絕大多數(shù)瀏覽器都以支持 JSON.parse(),是推薦使用的方式

示例代碼:

<script>

var str = ‘{ “name” : “Geoff Lui”,“age” : 26}’; //符合JSON語法規(guī)則的字符串

var obj = JSON.parse(str);

console.log(obj);

</script>

執(zhí)行結(jié)果:

<v:shape id="圖片_x0020_6" o:spid="_x0000_i1029" type="#_x0000_t75" alt="https://images2015.cnblogs.com/blog/815181/201610/815181-20161027180605125-787278386.png" style="width:195pt;height:61.5pt;visibility:visible;mso-wrap-style:square"><v:imagedata src="file:///C:\Users\ADMINI~1\AppData\Local\Temp\msohtmlclip1\01\clip_image015.png" o:title="815181-20161027180605125-787278386"></v:imagedata></v:shape>

2湿硝、如果輸入了不符合規(guī)范的字符串薪前,會報錯

3、JSON.parse() 可以有第二個參數(shù)关斜,是一個函數(shù)示括。此函數(shù)有兩個參數(shù):name 和 value,分別代表名稱和值痢畜。當(dāng)傳入一個 JSON 字符串后垛膝,JSON 的每一組名稱/值對都要調(diào)用此函數(shù)鳍侣。該函數(shù)有返回值,返回值將賦值給當(dāng)前的名稱(name)吼拥。

示例代碼:

<script>

var str = ‘{ “name” : “Geoff Lui”,“age” : 26}’; //符合JSON語法規(guī)則的字符串

var obj = JSON.parse(str,fun);

function fun (name , value){

console.log(name + “: ” + value);

return value;

}

console.log(obj);

</script>

執(zhí)行結(jié)果:

<v:shape id="圖片_x0020_7" o:spid="_x0000_i1028" type="#_x0000_t75" alt="https://images2015.cnblogs.com/blog/815181/201610/815181-20161027180614406-1402965494.png" style="width:186.75pt;height:51.75pt;visibility:visible;mso-wrap-style:square"><v:imagedata src="file:///C:\Users\ADMINI~1\AppData\Local\Temp\msohtmlclip1\01\clip_image016.png" o:title="815181-20161027180614406-1402965494"></v:imagedata></v:shape>

示例代碼:

<script>

var str = ‘{ “name” : “Geoff Lui”,“age” : 26}’; //符合JSON語法規(guī)則的字符串

var obj = JSON.parse(str,fun);

function fun (name , value){

if(name == “age” )

value = 14;

return value;

}

console.log(obj);

</script>

執(zhí)行結(jié)果:

<v:shape id="圖片_x0020_8" o:spid="_x0000_i1027" type="#_x0000_t75" alt="https://images2015.cnblogs.com/blog/815181/201610/815181-20161027180622593-1061276212.png" style="width:201.75pt;height:45pt;visibility:visible;mso-wrap-style:square"><v:imagedata src="file:///C:\Users\ADMINI~1\AppData\Local\Temp\msohtmlclip1\01\clip_image017.png" o:title="815181-20161027180622593-1061276212"></v:imagedata></v:shape>

JavaWeb復(fù)習(xí):

Tomcat服務(wù)器的作用以及如何修改端口號server.xml倚聚,你還聽說過哪些服務(wù)器?

<v:shape id="圖片_x0020_16" o:spid="_x0000_i1026" type="#_x0000_t75" style="width:86.25pt;
height:149.25pt;visibility:visible;mso-wrap-style:square"><v:imagedata src="file:///C:\Users\ADMINI~1\AppData\Local\Temp\msohtmlclip1\01\clip_image018.png" o:title=""></v:imagedata></v:shape>

當(dāng)服務(wù)器出問題如何解決:

<v:shape id="圖片_x0020_17" o:spid="_x0000_i1025" type="#_x0000_t75" style="width:172.5pt;
height:133.5pt;visibility:visible;mso-wrap-style:square"><v:imagedata src="file:///C:\Users\ADMINI~1\AppData\Local\Temp\msohtmlclip1\01\clip_image019.png" o:title=""></v:imagedata></v:shape>

jQuery 是一個 JavaScript 函數(shù)庫。

jQuery 庫包含以下特性:

· HTML 元素選取

· HTML 元素操作

· CSS 操作

· HTML 事件函數(shù)

· JavaScript 特效和動畫

· HTML DOM 遍歷和修改

· AJAX

jQuery 語法

jQuery 語法是為 HTML 元素的選取編制的扔罪,可以對元素執(zhí)行某些操作秉沼。

基礎(chǔ)語法是:$(selector).action()

· 美元符號定義 jQuery

· 選擇符(selector)“查詢”和“查找” HTML 元素

· jQuery 的 action() 執(zhí)行對元素的操作

文檔就緒函數(shù)

您也許已經(jīng)注意到在我們的實例中的所有 jQuery 函數(shù)位于一個 document ready 函數(shù)中:

<pre style="margin-top:6.65pt;background:whitesmoke;border:none;mso-border-alt:dotted #778855 .5pt;
padding:0cm;mso-padding-alt:9.0pt 9.0pt 9.0pt 9.0pt">$(document).ready(function(){</pre>

<pre style="background:whitesmoke;border:none;mso-border-alt:dotted #778855 .5pt;
padding:0cm;mso-padding-alt:9.0pt 9.0pt 9.0pt 9.0pt">--- jQuery functions go here ----</pre>

<pre style="background:whitesmoke;border:none;mso-border-alt:dotted #778855 .5pt;
padding:0cm;mso-padding-alt:9.0pt 9.0pt 9.0pt 9.0pt">});</pre>

這是為了防止文檔在完全加載(就緒)之前運行 jQuery 代碼。如果在文檔沒有完全加載之前就運行函數(shù)矿酵,操作可能失敗唬复。

$(function(){

$('input').click(function(){

alert("first jquery......");

});

});

AJAX

https://cxl2012.iteye.com/blog/1551273

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市全肮,隨后出現(xiàn)的幾起案子敞咧,更是在濱河造成了極大的恐慌,老刑警劉巖辜腺,帶你破解...
    沈念sama閱讀 222,252評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件休建,死亡現(xiàn)場離奇詭異,居然都是意外死亡评疗,警方通過查閱死者的電腦和手機测砂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來百匆,“玉大人砌些,你說我怎么就攤上這事〖有伲” “怎么了存璃?”我有些...
    開封第一講書人閱讀 168,814評論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長雕拼。 經(jīng)常有香客問我纵东,道長,這世上最難降的妖魔是什么啥寇? 我笑而不...
    開封第一講書人閱讀 59,869評論 1 299
  • 正文 為了忘掉前任偎球,我火速辦了婚禮,結(jié)果婚禮上示姿,老公的妹妹穿的比我還像新娘甜橱。我一直安慰自己,他們只是感情好栈戳,可當(dāng)我...
    茶點故事閱讀 68,888評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著难裆,像睡著了一般子檀。 火紅的嫁衣襯著肌膚如雪镊掖。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,475評論 1 312
  • 那天褂痰,我揣著相機與錄音亩进,去河邊找鬼。 笑死缩歪,一個胖子當(dāng)著我的面吹牛归薛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播匪蝙,決...
    沈念sama閱讀 41,010評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼主籍,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了逛球?” 一聲冷哼從身側(cè)響起千元,我...
    開封第一講書人閱讀 39,924評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎颤绕,沒想到半個月后幸海,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,469評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡奥务,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,552評論 3 342
  • 正文 我和宋清朗相戀三年物独,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片氯葬。...
    茶點故事閱讀 40,680評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡挡篓,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出溢谤,到底是詐尸還是另有隱情瞻凤,我是刑警寧澤,帶...
    沈念sama閱讀 36,362評論 5 351
  • 正文 年R本政府宣布世杀,位于F島的核電站阀参,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏瞻坝。R本人自食惡果不足惜蛛壳,卻給世界環(huán)境...
    茶點故事閱讀 42,037評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望所刀。 院中可真熱鬧衙荐,春花似錦、人聲如沸浮创。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽斩披。三九已至溜族,卻和暖如春讹俊,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背煌抒。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評論 1 274
  • 我被黑心中介騙來泰國打工仍劈, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人寡壮。 一個月前我還...
    沈念sama閱讀 49,099評論 3 378
  • 正文 我出身青樓贩疙,卻偏偏與公主長得像,于是被迫代替她去往敵國和親况既。 傳聞我的和親對象是個殘疾皇子这溅,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,691評論 2 361

推薦閱讀更多精彩內(nèi)容

  • python****網(wǎng)絡(luò)編程常用庫使用手冊 一、urllib3 ** Urllib3****是一個功能強大坏挠,條理清...
    奕劍聽雨閱讀 223評論 0 0
  • CentOS 7.2安裝手冊 一芍躏、系統(tǒng)安裝 1. 系統(tǒng)引導(dǎo) (1)成功引導(dǎo)系統(tǒng)后,會出現(xiàn)下面的界面 <v:shap...
    全宇宙最帥De男人閱讀 765評論 0 1
  • 后期整理字體以及排版問題降狠,修訂不適合的翻譯 “A wealth of information. Smart, ye...
    iamzzz閱讀 745評論 0 0
  • ORACLE安裝 安裝包: 1.VMware-workstation-full-11.1.0-2496824.ex...
    longfou閱讀 399評論 0 0
  • Sass&Gulp 一对竣、sass介紹 (一) SASS是一種CSS的開發(fā)工具,提供了許多便利的寫法榜配,大大節(jié)省了設(shè)計...
    鋒享前端閱讀 1,507評論 0 3