JSP基礎筆記

/** #####這部分也是筆記,用于記錄JSP的相關內容* ###怎么用JSP###指令的寫法* <%@ 指令名字%>* *### page指令
* language
> 表明jsp頁面中可以寫java代碼
* contentType
> 其實即使說這個文件是什么類型,告訴瀏覽器我是什么內容類型,以及使用什么編碼
contentType="text/html; charset=UTF-8"
text/html  MIMEType 這是一個文本,html網頁
* pageEncoding  jsp內容編碼
* extends 用于指定jsp翻譯成java文件后,繼承的父類是誰,一般不用改。
* import 導包使用的,一般不用手寫。
* session 
> 值可選的有true or false .
> 用于控制在這個jsp頁面里面,能夠直接使用session對象。
> 具體的區別是,請看翻譯后的java文件   如果該值是true , 那么在代碼里面會有getSession()的調用
如果是false :  那么就不會有該方法調用,也就是沒有session對象了。在頁面上自然也就不能使用session了。* errorPage
> 指的是錯誤的頁面, 值需要給錯誤的頁面路徑* isErrorPage
> 上面的errorPage 用于指定錯誤的時候跑到哪一個頁面去。 那么這個isErroPage , 就是聲明某一個頁面到底是不是錯誤的頁面。###include 
> 包含另外一個jsp的內容進來。<%@ include file="other02.jsp"%>
* 背后細節:
> 把另外一個頁面的所有內容拿過來一起輸出。 所有的標簽元素都包含進來。### taglib<%@ taglib prefix=""  uri=""%>  uri: 標簽庫路徑prefix : 標簽庫的別名  * * * ###jsp動作標簽* <jsp:include page=""></jsp:include><jsp:param value="" name=""/><jsp:forward page=""></jsp:forward>* * <!-- 這是jsp的action的頁面 --><jsp:include page="other.jsp"></jsp:include>意思是:在包含某個頁面的時候,或者跳轉某個頁面的時候
<jsp:forward page="other.jsp"><!-- 跳轉頁面的時候把參數傳過去 --><jsp:param value="" name=""/><jsp:param value="" name=""/><jsp:param value="" name=""/>
</jsp:forward>//然后在request.getParameter("name");接受到信息     <jsp:forward page="other.jsp"></jsp:forward>等同于以下代碼<%//請求轉發request.getRequestDispatcher("other.jsp").forward(request,respone);%>####JSP內置對象所謂內置對象,就是我們可以直接在JSP頁面中使用這些對象,不用創建
- pageContext
- request
- session
- application
以上4個是作用域對象 ,* 作用域 
> 表示這些對象可以存值,他們的取值范圍有限定。  setAttribute   和  getAttribute(此時是在同一個頁面之內的代碼)
使用作用域來存儲數據<br><%pageContext.setAttribute("name", "page");request.setAttribute("name", "request");session.setAttribute("name", "session");application.setAttribute("name", "application");%>
取出四個作用域中的值<br>
<%=pageContext.getAttribute("name")%>
<%=request.getAttribute("name")%>
<%=session.getAttribute("name")%>
<%=application.getAttribute("name")%>### 四個作用域的區別
* pageContext 【PageContext】
> 作用域僅限于當前的頁面。  
> 還可以獲取到其他八個內置對象。* request 【HttpServletRequest】
> 作用域僅限于一次請求, 只要服務器對該請求做出了響應。 這個域中存的值就沒有了。* session 【HttpSession】
> 作用域限于一次會話(多次請求與響應) 當中。 * application 【ServletContext】
> 整個工程都可以訪問, 服務器關閉后就不能訪問了。 out
exception
page
config
response
- out         【JspWriter】- response  【HttpServletResponse】
![icon](img/img01.png)
- exception  【Throwable】
- page     【Object】 ---就是這個jsp翻譯成的java類的實例對象
- config 【ServletConfig】*####EL表達式> 是為了簡化咱們的jsp代碼,具體一點就是為了簡化在jsp里面寫的那些java代碼。* 寫法格式
${表達式 }
> 如果從作用域中取值,會先從小的作用域開始取,如果沒有,就往下一個作用域取。  
一直把四個作用域取完都沒有, 就沒有顯示。###如何使用
###1. 取出4個作用域中存放的值。<%pageContext.setAttribute("name", "page");request.setAttribute("name", "request");session.setAttribute("name", "session");application.setAttribute("name", "application");%>按普通手段取值<br><%= pageContext.getAttribute("name")%><%= request.getAttribute("name")%><%= session.getAttribute("name")%><%= application.getAttribute("name")%><br>使用EL表達式取出作用域中的值<br>${ pageScope.name }${ requestScope.name }${ sessionScope.name }${ applicationScope.name }###2. 如果域中所存的是數組<%String [] a = {"aa","bb","cc","dd"};pageContext.setAttribute("array", a);%>使用EL表達式取出作用域中數組的值<br>${array[0] } , ${array[1] },${array[2] },${array[3] }###3. 如果域中鎖存的是集合使用EL表達式取出作用域中集合的值<br>${li[0] } , ${li[1] },${li[2] },${li[3] }<br>-------------Map數據----------------<br><%Map map = new HashMap();map.put("name", "zhangsna");map.put("age",18);map.put("address","北京..");map.put("address.aa","深圳..");pageContext.setAttribute("map", map);%>###4. 取出Map集合的值<%Map map = new HashMap();map.put("name", "zhangsna");map.put("age",18);map.put("address","北京..");map.put("address.aa","深圳..");pageContext.setAttribute("map", map);%>使用EL表達式取出作用域中Map的值<br>${map.name } , ${map.age } , ${map.address }  , ${map["address.aa"] }* * ###取值細節:
1. 從域中取值。  得先存值。<%//pageContext.setAttribute("name", "zhangsan");session.setAttribute("name", "lisi...");%><br>直接指定說了,到這個作用域里面去找這個name<br>${ pageScope.name } <br>//先從page里面找,沒有去request找,去session,去application <br>${ name }<br>指定從session中取值<br>${ sessionScope.name }  2. 取值方式
如果這份值是有下標的,那么直接使用[]<%String [] array = {"aa","bb","cc"}session.setAttribute("array",array);%>${ array[1] } --> 這里array說的是attribute的name 
如果沒有下標, 直接使用 .的方式去取<%User user = new User("zhangsan",18);session.setAttribute("u", user);%>${ u.name }  , ${ u.age } 
> 一般使用EL表達式,用的比較多的,都是從一個對象中取出它的屬性值,比如取出某一個學生的姓名。##EL表達式 的11個內置對象。 
${ 對象名.成員 }
- pageContext 
作用域相關對象
- pageScope
- requestScope
- sessionScope
- applicationScope頭信息相關對象
- header
- headerValues參數信息相關對象
- param
- paramValues- cookie全局初始化參數
- initParam##JSTL
> 全稱 : JSP Standard Tag Library  jsp標準標簽庫
> 簡化jsp的代碼編寫。 替換 <%%> 寫法。 一般與EL表達式配合###怎么使用1. 導入jar文件到工程的WebContent/Web-Inf/lib  jstl.jar standard.jar2. 在jsp頁面上,使用taglib 指令,來引入標簽庫3. 注意: 如果想支持 EL表達式,那么引入的標簽庫必須選擇1.1的版本,1.0的版本不支持EL表達式。<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>###常用標簽
<c:set></c:set>
<c:if test=""></c:if>
<c:forEach></c:forEach>* c:set<!-- 聲明一個對象name, 對象的值 zhangsan , 存儲到了page(默認) , 指定是session --><c:set var="name" value="zhangsan" scope="session"></c:set>${sessionScope.name }* c:if> 判斷test里面的表達式是否滿足,如果滿足,就執行c:if標簽中的輸出 , c:if 是沒有else的。 <c:set var="age" value="18" ></c:set><c:if test="${ age > 26 }">年齡大于了26歲...</c:if><c:if test="${ age <= 26 }">年齡小于了26歲...</c:if>------------------------------定義一個變量名 flag  去接收前面表達式的值,然后存在session域中<c:if test="${ age > 26 }" var="flag" scope="session">年齡大于了26歲...</c:if>* c:forEach從1 開始遍歷到10 ,得到的結果 ,賦值給 i ,并且會存儲到page域中, step , 增幅為2, <c:forEach begin="1" end="10" var="i" step="2">${i }</c:forEach>-----------------------------------------------<!-- items : 表示遍歷哪一個對象,注意,這里必須寫EL表達式。 var: 遍歷出來的每一個元素用user 去接收。 --><c:forEach var="user" items="${list }">${user.name } ----${user.age }</c:forEach>

?

轉載于:https://www.cnblogs.com/byczyz/p/11337490.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/386215.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/386215.shtml
英文地址,請注明出處:http://en.pswp.cn/news/386215.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

阿里P8親自講解!javawhile循環語句用法

前言 作為一個已經畢業的計算機專業學長&#xff0c;其實幾年大學走來還是挺感慨萬千的。&#xff08;說明一下&#xff1a;一本&#xff0c;非958、211&#xff09; 老實說&#xff0c;上大學之前填志愿選專業的時候沒有任何打算&#xff0c;就覺得學海熬到頭了&#xff0c;向…

Cookie,Session基礎知識

//這部分主要是CookieSession的筆記部分/** //獲取來訪的客戶端類型String clientTyereq.getHeader("User-Agent");//如果是火狐瀏覽器&#xff0c;那么使用以下代碼if(clientTye.contains("Firefox")){fileNameDownLoadUtil.base64EncodeFileName(fileNam…

阿里P8親自講解!java中級開發工程師需要掌握的技能

前言 關于技術人如何成長的問題&#xff0c;一直以來都備受關注&#xff0c;因為程序員職業發展很快&#xff0c;即使是相同起點的人&#xff0c;經過幾年的工作或學習&#xff0c;會迅速拉開極大的差距&#xff0c;所以技術人保持學習&#xff0c;提升自己&#xff0c;才能夠…

隨筆--互聯網進化論

不聞不若聞之&#xff1b;有的人士的理論引起了轟動&#xff0c;吾等小網民也來學學&#xff0c;沒那么大腦袋&#xff0c;從不敢談解讀與批判。聞香而來&#xff0c;放屁而去。比如說互聯網進化論。看看實踐&#xff0c;互聯網的膨脹式發展是不會停的&#xff0c;在中國的互聯…

阿里P8親自講解!java分布式需要學什么技術

引言 最近項目上線的頻率頗高&#xff0c;連著幾天加班熬夜&#xff0c;身體有點吃不消精神也有些萎靡&#xff0c;無奈業務方催的緊&#xff0c;工期就在眼前只能硬著頭皮上了。腦子渾渾噩噩的時候&#xff0c;寫的就不能叫代碼&#xff0c;可以直接叫做Bug。我就熬夜寫了一個…

Javascript的this用法

出自&#xff1a;http://www.ruanyifeng.com/blog/2010/04/using_this_keyword_in_javascript.html this是Javascript語言的一個關鍵字。 它代表函數運行時&#xff0c;自動生成的一個內部對象&#xff0c;只能在函數內部使用。比如&#xff0c; function test(){ this.x 1; }…

[New Portal]Windows Azure Web Site (4) Web Site Gallery

《Windows Azure Platform 系列文章目錄》 前言&#xff1a;最近因為工作變動&#xff0c;更新博客的速度變慢了。筆者在這邊感到非常抱歉&#xff0c;以后盡量每周更新一篇Windows Azure的博客給大家。 好了&#xff0c;我們回到本章內容。 Windows Azure通過Web Role和Worker…

阿里P8親自講解!java聲明類的語法格式

前言 前兩天&#xff0c;我收到了螞蟻金服的offer&#xff0c;從朋友的內推開始面試到拿到最后offer經歷了4面技術、一面交叉面和一面HR面。經過了漫長的等待和幾次幾乎折磨的面試之后&#xff0c;終于拿到了offer。 分享第一份Java基礎-中級-高級面試集合 Java基礎&#xff…

java-transaction事件

/*########事務&數據庫連接池&DBUtils ######事務 > Transaction 其實指的一組操作&#xff0c;里面包含許多個單一的邏輯。只要有一個邏輯沒有執行成功&#xff0c;那么都算失敗。 所有的數據都回歸到最初的狀態(回滾) ####為什么要有事務?> 為了確保邏輯的成功…

阿里P8親自講解!java實例變量和類變量

前言 Spring如何解決的循環依賴&#xff0c;是近兩年流行起來的一道Java面試題。其實筆者本人對這類框架源碼題還是持一定的懷疑態度的。如果筆者作為面試官&#xff0c;可能會問一些諸如“如果注入的屬性為null&#xff0c;你會從哪幾個方向去排查”這些場景題。那么既然寫了…

java---連接池的學習

/** ####################################數據庫的連接池學習################################# * * * #####數據庫連接池 >1. 數據庫的連接對象創建工作&#xff0c;比較消耗性能。 >2.一開始現在內存中開辟一塊空間&#xff08;集合&#xff09; &#xff0c; 一開…

阿里P8親自講解!成功入職頭條月薪35K

前言 又到一年金九銀十之際。 Java作為目前用戶最多&#xff0c;使用范圍最廣的軟件開發技術之一。 Java的技術體系主要由支撐Java程序運行的虛擬機&#xff0c;提供各開發領域接口支持的Java,Java編程語言及許多第三方Jvav框架構成。 其中&#xff0c;以Java的虛擬器為今天的著…

java----連接池C3p0使用的補充

C3p0數據庫的連接方式是目前市場場最為廣泛的類型之一 本篇主要你演示C3p0使用文件配置和不使用文件配置的兩種操作方式 #######使用文件配置 import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException;import com.dbutil.zyz.ConnLink; …

阿里P8大佬親自教你!java程序設計第四版pdf

前言 最近有很多朋友去目前主流的大型互聯網公司面試&#xff08;阿里巴巴、京東、字節跳動、螞蟻金服、滴滴&#xff09;&#xff0c;面試回來之后會發給我一些面試題。有些朋友輕松過關&#xff0c;拿到offer&#xff0c;但是有一些是來詢問我答案的。 我特意整理了一下&am…

阿里P8大佬親自講解!朝陽java培訓

開頭 Spring框架自誕生以來一直備受開發者青睞&#xff0c;有人親切的稱之為&#xff1a;Spring 全家桶。Spring更是避免了重復造輪子的工作并跟隨著互聯網行業的發展做出不斷的更新&#xff0c;很多研發人員把spring看作心目中最好的Java項目&#xff0c;沒有之一。 **可以毫…

分隔符的作用和用法

一、插入分頁符 當文本或圖形等內容填滿一頁時&#xff0c;Word會插入一個自動分頁符并開始新的一頁。如果要在某個特定位置強制分頁&#xff0c;可插入“手動”分頁符&#xff0c;這樣可以確保章節標題總在新的一頁開始。首先&#xff0c;將插入點置于要插入分頁符的位置&…

java----DBUtils知識點補充

dbutils 只是幫我們簡化了CRUD 的代碼&#xff0c; 但是連接的創建以及獲取工作。 不在他的考慮范圍 QueryRunner主要是這個類 import java.sql.SQLException;import org.apache.commons.dbutils.QueryRunner;import com.mchange.v2.c3p0.ComboPooledDataSource;public class D…

大廠offer手到擒來,Java面試真題精選

前言 事務我們都知道是什么&#xff0c;而Spring事務就是在數據庫之上利用AOP提供聲明式事務和編程式事務幫助我們簡化開發&#xff0c;解耦業務邏輯和系統邏輯。但是Spring事務原理是怎樣&#xff1f;事務在方法間是如何傳播的&#xff1f;為什么有時候事務會失效&#xff1f…

大廠也在用的6種數據脫敏方案,醍醐灌頂!

前言 由于作者面試過程中高度緊張&#xff0c;本文中只列出了自己還記得的部分題目。 經歷了漫長一個月的等待&#xff0c;終于在前幾天通過面試官獲悉已被螞蟻金服錄取&#xff0c;這期間的焦慮、痛苦自不必說&#xff0c;知道被錄取的那一刻&#xff0c;一整年的陰霾都一掃…

大牛帶你直擊優秀開源框架靈魂,給大家安排上!

前言 微架構的出現&#xff0c;很好地適應了這個時代對快速發展變化的要求。它不再提倡一體化的項目設計&#xff0c;而是對項目進行有效的“業務區”(可以簡單理解為不同的子系統〉劃分&#xff0c;并利用合理的技術對業務性能做出提升和改善&#xff0c;同時又極大地簡化了配…