日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java结丹期(11)----javaweb(jstljsp)

發布時間:2025/3/21 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java结丹期(11)----javaweb(jstljsp) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

JSP(JavaServer Pages):

1. 概念:
?? ?* Java Server Pages: java服務器端頁面
?? ??? ?* 可以理解為:一個特殊的頁面,其中既可以指定定義html標簽,又可以定義java代碼
?? ??? ?* 用于簡化書寫!!!

2. 原理
?? ?* JSP本質上就是一個Servlet

3. JSP的腳本:JSP定義Java代碼的方式(了解java小腳本)
?? ?1. <% ?代碼 %>:定義的java代碼,在service方法中。service方法中可以定義什么,該腳本中就可以定義什么。
?? ?2. <%! 代碼 %>:定義的java代碼,在jsp轉換后的java類的成員位置。
?? ?3. <%= 代碼 %>:定義的java代碼,會輸出到頁面上。輸出語句中可以定義什么,該腳本中就可以定義什么。

1. 指令
* 作用:用于配置JSP頁面,導入資源文件
* 格式:
?? ?<%@ 指令名稱 屬性名1=屬性值1 屬性名2=屬性值2 ... %>
* 分類:
?? ?1. page: 配置JSP頁面的
?? ??? ?* contentType:等同于response.setContentType()
?? ??? ??? ?1. 設置響應體的mime類型以及字符集
?? ??? ??? ?2. 設置當前jsp頁面的編碼(只能是高級的IDE才能生效,如果使用低級工具,則需要設置pageEncoding屬性設置當前? ? ? ? ? ? ? ? ? 頁面的字符集)

?? ??? ?* import:導包
?? ??? ?* errorPage:當前頁面發生異常后,會自動跳轉到指定的錯誤頁面
?? ??? ?* isErrorPage:標識當前也是是否是錯誤頁面。
?? ??? ??? ?* true:是,可以使用內置對象exception
?? ??? ??? ?* false:否。默認值。不可以使用內置對象exception


?? ?2. include?? ?: 頁面包含的。導入頁面的資源文件
?? ??? ?* <%@include file="top.jsp"%>
?? ?3. taglib?? ?: 導入資源
?? ??? ?* <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
?? ??? ??? ?* prefix:前綴,自定義的
2. 注釋:
?? ?1. html注釋:
?? ??? ?<!-- -->:只能注釋html代碼片段
?? ?2. jsp注釋:推薦使用
?? ??? ?<%-- --%>:可以注釋所有


3. 內置對象
* 在jsp頁面中不需要創建,直接使用的對象
* 一共有9個:
?? ??? ?變量名?? ??? ??? ??? ??? ?真實類型? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 作用
?? ?* pageContext?? ??? ??? ?PageContext? ? ? ? ? ? ? ? ? ? ? 當前頁面共享數據,還可以獲取其他八個內置對象
?? ?* request?? ??? ??? ??? ??? ?HttpServletRequest?? ??? ??? ?一次請求訪問的多個資源(轉發)
?? ?* session?? ??? ??? ??? ??? ?HttpSession? ? ? ? ? ? ? ? ? ? ? ?一次會話的多個請求間
?? ?* application?? ??? ??? ??? ServletContext? ? ? ? ? ? ? ? ? 所有用戶間共享數據
?? ?* response?? ??? ??? ??? ??HttpServletResponse?? ??? ? 響應對象
?? ?* page?? ??? ??? ??? ??? ??? ?Object? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 當前頁面(Servlet)的對象 ?this

?? ?* out? ? ? ? ? ? ? ? ? ? ? ? ? JspWriter? ? ? ? ? ? ? ? ? ? ? ? ? ?輸出對象,數據輸出到頁面上
?? ?* config? ? ? ? ? ? ? ? ? ? ?ServletConfig? ? ? ? ? ? ? ? ? ? ? Servlet的配置對象
?? ?* exception?? ??? ??? ??? ?Throwable? ? ? ? ? ? ? ? ? ? ? ? ? 異常對象

EL表達式

1. 概念:Expression Language 表達式語言
2. 作用:替換和簡化jsp頁面中java代碼的編寫
3. 語法:${表達式}(不要和ajax的搞混了)
4. 注意:
* jsp默認支持el表達式的。如果要忽略el表達式
?? ?1. 設置jsp中page指令中:isELIgnored="true" 忽略當前jsp頁面中所有的el表達式
?? ?2. \${表達式} :忽略當前這個el表達式


5. 使用:
1. 運算:
* 運算符:
?? ?1. 算數運算符: + - * /(div) %(mod)
?? ?2. 比較運算符: > < >= <= == !=
?? ?3. 邏輯運算符: &&(and) ||(or) !(not)
?? ?4. 空運算符: empty
?? ??? ?* 功能:用于判斷字符串、集合、數組對象是否為null或者長度是否為0
?? ??? ?* ${empty list}:判斷字符串、集合、數組對象是否為null或者長度為0
?? ??? ?* ${not empty str}:表示判斷字符串、集合、數組對象是否不為null 并且 長度>0
2. 獲取值
1. el表達式只能從域對象中獲取值
2. 語法:
?? ?1. ${域名稱.鍵名}:從指定域中獲取指定鍵的值
?? ??? ?* 域名稱:
?? ??? ??? ?1. pageScope?? ??? ?--> pageContext
?? ??? ??? ?2. requestScope ?? ?--> request
?? ??? ??? ?3. sessionScope ?? ?--> session
?? ??? ??? ?4. applicationScope --> application(ServletContext)
?? ??? ?* 舉例:在request域中存儲了name=張三
?? ??? ?* 獲取:${requestScope.name}

?? ?2. ${鍵名}:表示依次從最小的域中查找是否有該鍵對應的值,直到找到為止。

? ?

<%@ page import="java.util.List" %> <%@ page import="java.util.ArrayList" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head><title>el獲取域中的數據</title> </head> <body><%//在域中存儲數據session.setAttribute("name","李四");request.setAttribute("name","張三");session.setAttribute("age","23");request.setAttribute("str","");%><h3>el獲取值</h3> ${requestScope.name} ${sessionScope.age} ${sessionScope.haha}${name} ${sessionScope.name}</body> </html>


?? ?
?? ?3. 獲取對象、List集合、Map集合的值
?? ??? ?1. 對象:${域名稱.鍵名.屬性名}
?? ??? ??? ?* 本質上會去調用對象的getter方法

?? ??? ?2. List集合:${域名稱.鍵名[索引]}

?? ??? ?3. Map集合:
?? ??? ??? ?* ${域名稱.鍵名.key名稱}
?? ??? ??? ?* ${域名稱.鍵名["key名稱"]}

<%@ page import="cn.itcast.domain.User" %> <%@ page import="java.util.*" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head><title>el獲取數據</title> </head> <body><%User user = new User();user.setName("張三");user.setAge(23);user.setBirthday(new Date());request.setAttribute("u",user);List list = new ArrayList();list.add("aaa");list.add("bbb");list.add(user);request.setAttribute("list",list);Map map = new HashMap();map.put("sname","李四");map.put("gender","男");map.put("user",user);request.setAttribute("map",map);%><h3>el獲取對象中的值</h3> ${requestScope.u}<br><%--* 通過的是對象的屬性來獲取* setter或getter方法,去掉set或get,在將剩余部分,首字母變為小寫。* setName --> Name --> name --%>${requestScope.u.name}<br>${u.age}<br>${u.birthday}<br>${u.birthday.month}<br>${u.birStr}<br><h3>el獲取List值</h3>${list}<br>${list[0]}<br>${list[1]}<br>${list[10]}<br>${list[2].name}<h3>el獲取Map值</h3>${map.gender}<br>${map["gender"]}<br>${map.user.name}</body> </html>


3. 隱式對象:
* el表達式中有11個隱式對象
* pageContext:
?? ?* 獲取jsp其他八個內置對象
?? ??? ?* ${pageContext.request.contextPath}:動態獲取虛擬目錄

<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head><title>el隱式對象</title> </head> <body>${pageContext.request}<br><h4>在jsp頁面動態獲取虛擬目錄</h4>${pageContext.request.contextPath}<%%> </body> </html>

?

JSTL

1. 概念:JavaServer Pages Tag Library ?JSP標準標簽庫
?? ?* 是由Apache組織提供的開源的免費的jsp標簽?? ??? ?<標簽>

2. 作用:用于簡化和替換jsp頁面上的java代碼?? ??? ?

3. 使用步驟:
?? ?1. 導入jstl相關jar包
?? ?2. 引入標簽庫:taglib指令: ?<%@ taglib %>
?? ?3. 使用標簽

4. 常用的JSTL標簽
?? ?1. if:相當于java代碼的if語句
?? ??? ?1. 屬性:
?? ??? ??? ?* test 必須屬性,接受boolean表達式
?? ??? ??? ??? ?* 如果表達式為true,則顯示if標簽體內容,如果為false,則不顯示標簽體內容
?? ??? ??? ??? ?* 一般情況下,test屬性值會結合el表達式一起使用
?? ??? ? 2. 注意:
?? ??? ??? ? * c:if標簽沒有else情況,想要else情況,則可以在定義一個c:if標簽

<%@ page import="cn.itcast.domain.User" %> <%@ page import="java.util.List" %> <%@ page import="java.util.ArrayList" %> <%@ page import="java.util.Date" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><html> <head><title>test</title> </head> <body><%List list = new ArrayList();list.add(new User("張三",23,new Date()));list.add(new User("李四",24,new Date()));list.add(new User("王五",25,new Date()));request.setAttribute("list",list); %> <table border="1" width="500" align="center"><tr><th>編號</th><th>姓名</th><th>年齡</th><th>生日</th></tr><%--數據行--%><c:forEach items="${list}" var="user" varStatus="s"><c:if test="${s.count % 2 != 0}"><tr bgcolor="red"><td>${s.count}</td><td>${user.name}</td><td>${user.age}</td><td>${user.birStr}</td></tr></c:if><c:if test="${s.count % 2 == 0}"><tr bgcolor="green"><td>${s.count}</td><td>${user.name}</td><td>${user.age}</td><td>${user.birStr}</td></tr></c:if></c:forEach></table></body> </html>


?? ?2. choose:相當于java代碼的switch語句(也相當于if...else)
?? ??? ?1. 使用choose標簽聲明 ? ? ? ? ?? ??? ??? ?相當于switch聲明
?? ??? ?2. 使用when標簽做判斷 ? ? ? ? ?? ??? ??? ?相當于case
?? ??? ?3. 使用otherwise標簽做其他情況的聲明 ? ??? ?相當于default

?

<%@ page contentType="text/html;charset=UTF-8" language="java" %><%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><html> <head><title>choose標簽</title> </head> <body><%--完成數字編號對應星期幾案例1.域中存儲一數字2.使用choose標簽取出數字 相當于switch聲明3.使用when標簽做數字判斷 相當于case4.otherwise標簽做其他情況的聲明 相當于default--%><%request.setAttribute("number",51);%><c:choose><c:when test="${number == 1}">星期一</c:when><c:when test="${number == 2}">星期二</c:when><c:when test="${number == 3}">星期三</c:when><c:when test="${number == 4}">星期四</c:when><c:when test="${number == 5}">星期五</c:when><c:when test="${number == 6}">星期六</c:when><c:when test="${number == 7}">星期天</c:when><c:otherwise>數字輸入有誤</c:otherwise></c:choose></body> </html>

?? ?3. foreach:相當于java代碼的for語句

<%@ page import="java.util.ArrayList" %> <%@ page import="java.util.List" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %><%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><html> <head><title>foreach標簽</title> </head> <body><%--foreach:相當于java代碼的for語句1. 完成重復的操作for(int i = 0; i < 10; i ++){}* 屬性:begin:開始值end:結束值var:臨時變量step:步長varStatus:循環狀態對象index:容器中元素的索引,從0開始count:循環次數,從1開始2. 遍歷容器List<User> list;for(User user : list){}* 屬性:items:容器對象var:容器中元素的臨時變量varStatus:循環狀態對象index:容器中元素的索引,從0開始count:循環次數,從1開始--%><c:forEach begin="1" end="10" var="i" step="2" varStatus="s">${i} <h3>${s.index}<h3> <h4> ${s.count} </h4><br></c:forEach><hr><%List list = new ArrayList();list.add("aaa");list.add("bbb");list.add("ccc");request.setAttribute("list",list);%><c:forEach items="${list}" var="str" varStatus="s">${s.index} ${s.count} ${str}<br></c:forEach></body> </html>

?

總結

以上是生活随笔為你收集整理的java结丹期(11)----javaweb(jstljsp)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。