整合營銷服務(wù)商

          電腦端+手機端+微信端=數(shù)據(jù)同步管理

          免費咨詢熱線:

          求職復(fù)習(xí)系列13 jsp

          求職復(fù)習(xí)系列13 jsp

          sp的出現(xiàn)

          原始的界面由servlet中使用response.write()輸出,但是特別復(fù)雜

          出現(xiàn)了jsp=html +java+css+js+jsp的語法

          html只能展示靜態(tài)的數(shù)據(jù),結(jié)合java和jsp的語法實現(xiàn)了動態(tài)的展示數(shù)據(jù)

          jsp的語法

          <%@page import="java.util.Date"%>
          <%@page language="java" pageEncoding="UTF-8"%>
          

          執(zhí)行流程

          jsp文件>>翻譯為.java>>編輯為,class>>裝載起來

          翻譯的文件:在work下, \work\Catalina\localhost\ROOT\org\apache\jsp

          相關(guān)代碼在_jspService()方法中();所以在方法中不能定義再方法

          <% %> 包含的是java代碼
          <%! %> 全局的
          <%=%> 輸出語句
          <!-- 注釋內(nèi)容--> html的注釋
          <%-- 該部分注釋在網(wǎng)頁中不會被顯示--%> jsp的注解 在瀏覽器中不會顯示
          

          jsp常見指令

          <%@ page ...%> 引入依賴比如腳本文件 error頁面 容器提供當(dāng)前頁面的使用說明。一個JSP頁面可以包含多個page指令
           import="java.util.*";
           
          <%@ include ...%> 包含其他文件
          <%@ taglib ...%> 引入標(biāo)簽庫
          頭部命令
          <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
          

          jsp九大對象

          include的區(qū)別

          hello.jsp文件包含以下代碼
          <%@include file="footer.jsp" %>
          footer.jsp的內(nèi)容會被插入到 hello.jsp 轉(zhuǎn)譯 成的hello_jsp.java中,最后只會生成一個hello_jsp.java文件
          <jsp:include page="footer.jsp" />
          footer.jsp的內(nèi)容不會被插入到 hello.jsp 轉(zhuǎn)譯 成的hello_jsp.java中,
          還會有一個footer_jsp.java獨立存在。 hello_jsp.java 會在服務(wù)端訪問footer_jsp.java,
          然后把返回的結(jié)果,嵌入到響應(yīng)中。
          

          JSTL

          導(dǎo)入

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

          常見的jstl語句

          <C:if test=""></c:if>
          <c:choose>
           <c:when test="">//todo	</c:when>
          	<c:otherwise>//todo</c:otherwise>
          </c:choose>
          <c:forEach items="${list}" var="listItem" varStatus="1" >
           <tr>
           <td><c:out value="${listItem.col1}" /></td>
           <td><c:out value="${listItem.col2}" /></td>
           </tr>
          </c:forEach>
          fmt 格式化
          <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix='fmt' %> 
          日期
          <%
           Date now=new Date();
           pageContext.setAttribute("now",now);
          %>
           
          完整日期: <fmt:formatDate value="${now}" pattern="G yyyy年MM月dd日 E"/><br>
          完整時間: <fmt:formatDate value="${now}" pattern="a HH:mm:ss.S z"/><br>
          常見格式: <fmt:formatDate value="${now}" pattern="yyyy-MM-dd HH:mm:ss"/>
          數(shù)字格式化
          <fmt:formatNumber 表示格式化數(shù)字
          minFractionDigits 小數(shù)點至少要有的位數(shù)
          maxFractionDigits 小數(shù)點最多能有的位數(shù)
          <fmt:formatNumber type="number" value="${money}" minFractionDigits="2"/>
          

          EL表達(dá)式

          引入

          <%@page 標(biāo)簽里加上isELIgnored="false"
          <%@ page language="java" contentType="text/html; charset=UTF-8"
           pageEncoding="UTF-8" isELIgnored="false"%>
          取值順序
          pageContext>request>session>application
          使用${key} 取值
          支持表達(dá)式
          大小于 equals等,三元運算符
          

          轉(zhuǎn)發(fā)與轉(zhuǎn)向的區(qū)別

          轉(zhuǎn)發(fā)(forward

          轉(zhuǎn)發(fā)通過forword帶走request的response,所以能帶走對象,可以共享數(shù)據(jù),地址欄不會改變,經(jīng)歷了一次請求,在服務(wù)端完成的處理,

          WEB-INF下的頁面不能通過地址欄訪問,需要經(jīng)過轉(zhuǎn)發(fā)才能訪問

          轉(zhuǎn)向(redirect)

          轉(zhuǎn)向,請求到這里之后,告訴瀏覽器需要進(jìn)行二次請求,所以瀏覽器地址改變,數(shù)據(jù)也不能共享了,兩次請求的效率也比與轉(zhuǎn)發(fā)的一次請求慢低一些.

          瀏覽器地址改變了,就可以跳轉(zhuǎn)到當(dāng)前web意外的頁面

          困難行業(yè)企業(yè)穩(wěn)就業(yè)補貼”線上經(jīng)辦系統(tǒng)已上線運行啦!符合條件的企業(yè)可通過上海市人力資源和社會保障自助經(jīng)辦系統(tǒng)的“惠企點單辦”申請。具體步驟趕緊往下看:

          01

          登錄“上海市人力資源和社會保障自助經(jīng)辦系統(tǒng)”(https://zzjb.rsj.sh.gov.cn/zzjbdl/jsp/login.html)。

          02

          03

          選擇“困難行業(yè)企業(yè)穩(wěn)就業(yè)補貼”事項,點擊“辦理”。

          04

          企業(yè)確認(rèn)承諾書內(nèi)容,點擊“下一步”。

          05

          系統(tǒng)自動檢驗后顯示企業(yè)相關(guān)信息,需填寫補貼申請經(jīng)辦人信息。

          06

          企業(yè)可根據(jù)實際,點擊“登記/修改銀行賬號”進(jìn)入銀行賬號修改界面,更改補貼擬發(fā)放賬戶信息。

          07

          系統(tǒng)自動提取企業(yè)統(tǒng)一社會信用代碼證書等電子資料,若提取失敗,須自行上傳相關(guān)影像資料,完成后點擊“下一步”。

          08

          確認(rèn)申請信息無誤后(重點核對“銀行賬戶”“聯(lián)系手機”“上月應(yīng)繳城鎮(zhèn)職工社會保險人數(shù)”等關(guān)鍵信息),點擊“確認(rèn)提交”。

          么是EL表達(dá)式?

          表達(dá)式語言(Expression Language,EL),EL表達(dá)式是用"${}"括起來的腳本,用來更方便的讀取對象!

          • EL表達(dá)式主要用來讀取數(shù)據(jù),進(jìn)行內(nèi)容的顯示!


          為什么要使用EL表達(dá)式?

          • 為什么要使用EL表達(dá)式,我們先來看一下沒有EL表達(dá)式是怎么樣讀取對象數(shù)據(jù)的吧
          • 在1.jsp中設(shè)置了Session屬性
          <%@ page language="java" contentType="text/html" pageEncoding="UTF-8"%>
          <html>
          <head>
           <title>向session設(shè)置一個屬性</title>
          </head>
          <body>
          <%
           //向session設(shè)置一個屬性
           session.setAttribute("name", "aaa");
           System.out.println("向session設(shè)置了一個屬性");
          %>
          </body>
          </html>
          
          • 在2.jsp中獲取Session設(shè)置的屬性
          <%@ page contentType="text/html;charset=UTF-8" language="java" %>
          <html>
          <head>
           <title></title>
          </head>
          <body>
          <%
           String value=(String) session.getAttribute("name");
           out.write(value);
          %>
          </body>
          </html>
          
          • 效果:

          • 上面看起來,也沒有多復(fù)雜呀,那我們試試EL表達(dá)式的!
          • 在2.jsp中讀取Session設(shè)置的屬性
          <%@ page contentType="text/html;charset=UTF-8" language="java" %>
          <html>
          <head>
           <title></title>
          </head>
          <body>
          ${name}
          </body>
          </html>
          
          • 只用了簡簡單單的幾個字母就能輸出Session設(shè)置的屬性了!并且輸出在瀏覽器上!

          • 使用EL表達(dá)式可以方便地讀取對象中的屬性、提交的參數(shù)、JavaBean、甚至集合



          EL表達(dá)式的作用

          • 首先來看一下EL表達(dá)式的語法吧
          ${標(biāo)識符}
          
          • EL表達(dá)式如果找不到相應(yīng)的對象屬性,返回的的空白字符串“”,而不是null,這是EL表達(dá)式最大的特點!


          獲取各類數(shù)據(jù)

          獲取域?qū)ο蟮臄?shù)據(jù)

          • 上面在例子中,我們已經(jīng)體驗到了獲取Session域?qū)ο蟮臄?shù)據(jù)是多么地方便!其實EL表達(dá)式可以讓我們獲取各個域范圍的數(shù)據(jù)
          • 在1.jsp中設(shè)置ServeltContext屬性(也就是application)
          <%
           //向ServletContext設(shè)置一個屬性
           application.setAttribute("name", "aaa");
           System.out.println("向application設(shè)置了一個屬性");
          %>
          
          • 在2.jsp中獲取application的屬性
          <%
           ${name}
          %>
          
          • 和Session一樣,也能獲取得到!

          • 之前我們來講ServletContext對象的時候講過一個方法findAttribute(String name),EL表達(dá)式語句在執(zhí)行的時候會調(diào)用該方法,用標(biāo)識符作為關(guān)鍵字分別從page、request、session、application四個域中查找相應(yīng)的對象。這也解釋了為什么EL表達(dá)式可以僅僅通過標(biāo)識符就能夠獲取到存進(jìn)域?qū)ο蟮臄?shù)據(jù)!
          • findAttribute()的查找順序:從小到大,也就是page->request->session->application


          獲取JavaBean的屬性

          • 以前在JSP頁面獲取JavaBean的數(shù)據(jù)是這樣子的
          • 1.jsp頁面Session存進(jìn)一個Person對象,設(shè)置age的屬性為22
          <jsp:useBean id="person" class="domain.Person" scope="session"/>
          <jsp:setProperty name="person" property="age" value="22"/>
          


          在2.jsp中取出Session的屬性

          <%
           Person person=(Person) session.getAttribute("person");
           System.out.println(person.getAge());
          %>
          
          • 效果如下

          • 現(xiàn)在我使用了EL表達(dá)式讀取數(shù)據(jù)又會非常方便了
          //等同于person.getAge()
          ${person.age}
          

          • 上面的代碼 等同于調(diào)用對象的getter方法,內(nèi)部是通過反射機制完成的


          獲取集合的數(shù)據(jù)

          • 集合操作在開發(fā)中被廣泛地采用,在EL表達(dá)式中也很好地支持了集合的操作!可以非常方便地讀取Collection和Map集合的內(nèi)容
          • 為了更好地看出EL表達(dá)式的強大之處,我們也來對比一下使用EL表達(dá)式和不使用EL表達(dá)式的區(qū)別
          • 下面不使用EL表達(dá)式輸出集合的元素
          • 在1.jsp頁面中設(shè)置session的屬性,session屬性的值是List集合,List集合裝載的又是Person對象
          <%
           List<Person> list=new ArrayList();
           Person person1=new Person();
           person1.setUsername("zhongfucheng");
           Person person2=new Person();
           person2.setUsername("ouzicheng");
           list.add(person1);
           list.add(person2);
           session.setAttribute("list",list);
          %>
          
          • 在2.jsp中獲取到session的屬性,并輸出到頁面上
          <%
           List<Person> list=(List) session.getAttribute("list");
           out.write(list.get(0).getUsername()+"<br>");
           out.write(list.get(1).getUsername());
          %>
          

          使用EL表達(dá)式又是怎么樣的效果呢?我們來看看

          <%--取出list集合的第1個元素(下標(biāo)從0開始),獲取username屬性--%>
          ${list[0].username}
          <br>
          <%--取出list集合的第2個元素,獲取username屬性--%>
          ${list[1].username}
          
          • 同樣也可以有相同的效果:

          • 我們再來使用一下Map集合
          • 在1.jsp中session屬性存儲了Map集合,Map集合的關(guān)鍵字是字符串,值是Person對象
          <%
           Map<String, Person> map=new HashMap<>();
           Person person1=new Person();
           person1.setUsername("zhongfucheng1");
           Person person2=new Person();
           person2.setUsername("ouzicheng1");
           map.put("aa",person1);
           map.put("bb",person2);
           session.setAttribute("map",map);
          %>
          
          • 看起來好像取出數(shù)據(jù)的時候是會有點復(fù)雜,但是有了EL表達(dá)式也是非常輕松的
          ${map.aa.username}
          <br>
          ${map.bb.username}
          
          • 效果:

          • 如果Map集合存儲的關(guān)鍵字是一個數(shù)字,就不能使用"."號運算符了,如下所示

          • 對于這種情況,我們可以使用"[]"的形式讀取Map集合的數(shù)據(jù)
          ${map["1"].username}
          <br>
          ${map["2"].username}
          
          • EL表達(dá)式配合JSTL標(biāo)簽可以很方便的迭代集合,后面講到JSTL標(biāo)簽的時候會用到!這里就不詳細(xì)說明了。



          EL運算符

          • EL表達(dá)式支持簡單的運算符:加減乘除取摸,邏輯運算符empty運算符(判斷是否為null),三目運算符

          • empty運算符可以判斷對象是否為null,用作于流程控制!
          • 三目運算符簡化了if和else語句,簡化代碼書寫
          <%
           List<Person> list=null;
          %>
          ${list==null?"list集合為空":"list集合不為空"}
          
          • 效果:


          EL表達(dá)式11個內(nèi)置對象

          EL表達(dá)式主要是來對內(nèi)容的顯示,為了顯示的方便,EL表達(dá)式提供了11個內(nèi)置對象

          1. pageContext 對應(yīng)于JSP頁面中的pageContext對象(注意:取的是pageContext對象)
          2. pageScope 代表page域中用于保存屬性的Map對象
          3. requestScope 代表request域中用于保存屬性的Map對象
          4. sessionScope 代表session域中用于保存屬性的Map對象
          5. applicationScope 代表application域中用于保存屬性的Map對象
          6. param 表示一個保存了所有請求參數(shù)的Map對象
          7. paramValues表示一個保存了所有請求參數(shù)的Map對象,它對于某個請求參數(shù),返回的是一個string[]
          8. header 表示一個保存了所有http請求頭字段的Map對象
          9. headerValues同上,返回string[]數(shù)組。
          10. cookie 表示一個保存了所有cookie的Map對象
          11. initParam 表示一個保存了所有web應(yīng)用初始化參數(shù)的map對象
          • 下面測試各個內(nèi)置對象
          <%--pageContext內(nèi)置對象--%>
          <%
           pageContext.setAttribute("pageContext1", "pageContext");
          %>
          pageContext內(nèi)置對象:${pageContext.getAttribute("pageContext1")}
          <br>
          <%--pageScope內(nèi)置對象--%>
          <%
           pageContext.setAttribute("pageScope1","pageScope");
          %>
          pageScope內(nèi)置對象:${pageScope.pageScope1}
          <br>
          <%--requestScope內(nèi)置對象--%>
          <%
           request.setAttribute("request1","reqeust");
          %>
          requestScope內(nèi)置對象:${requestScope.request1}
          <br>
          <%--sessionScope內(nèi)置對象--%>
          <%
           session.setAttribute("session1", "session");
          %>
          sessionScope內(nèi)置對象:${sessionScope.session1}
          <br>
          <%--applicationScope內(nèi)置對象--%>
          <%
           application.setAttribute("application1","application");
          %>
          applicationScopt內(nèi)置對象:${applicationScope.application1}
          <br>
          <%--header內(nèi)置對象--%>
          header內(nèi)置對象:${header.Host}
          <br>
          <%--headerValues內(nèi)置對象,取出第一個Cookie--%>
          headerValues內(nèi)置對象:${headerValues.Cookie[0]}
          <br>
          <%--Cookie內(nèi)置對象--%>
          <%
           Cookie cookie=new Cookie("Cookie1", "cookie");
          %>
          Cookie內(nèi)置對象:${cookie.JSESSIONID.value}
          <br>
          <%--initParam內(nèi)置對象,需要為該Context配置參數(shù)才能看出效果【jsp配置的無效!親測】--%>
          initParam內(nèi)置對象:${initParam.name}
          <br>
          
          • 效果圖:

          注意事項:

          • 測試headerValues時,如果頭里面有“-” ,例Accept-Encoding,則要headerValues[“Accept-Encoding”]
          • 測試cookie時,例`${cookie.key}`取的是cookie對象,如訪問cookie的名稱和值,須`${cookie.key.name}`或`${cookie.key.value}`
          • 測試initParam時,初始化參數(shù)要的web.xml中的配置Context的,僅僅是jsp的參數(shù)是獲取不到的
          • 上面已經(jīng)測過了9個內(nèi)置對象了,至于param和parmaValues內(nèi)置對象一般都是別的頁面帶數(shù)據(jù)過來的(表單、地址欄)
          • 表單頁面
          <form action="/zhongfucheng/1.jsp" method="post">
          用戶名:<input type="text" name="username"><br>
          年齡:<input type="text " name="age"><br>
          愛好:
          <input type="checkbox" name="hobbies" value="football">足球
          <input type="checkbox" name="hobbies" value="basketball">籃球
          <input type="checkbox" name="hobbies" value="table tennis">兵乓球<br>
          <input type="submit" value="提交"><br>
          </form>
          
          • 處理表單頁面:
          ${param.username}
          <br>
          ${param.age}
          <br>
          //沒有學(xué)習(xí)jstl之前就一個一個寫吧。
          ${paramValues.hobbies[0]}
          <br>
          ${paramValues.hobbies[1]}
          <br>
          ${paramValues.hobbies[2]}
          <br>
          
          • 效果:

          • 當(dāng)然了,使用地址欄方式提交數(shù)據(jù)給處理頁面也是用param內(nèi)置對象去獲取數(shù)據(jù)的


          EL表達(dá)式回顯數(shù)據(jù)

          EL表達(dá)式最大的特點就是:如果獲取到的數(shù)據(jù)為null,輸出空白字符串""!這個特點可以讓我們數(shù)據(jù)回顯

          • 在1.jsp中模擬場景
          <%--模擬數(shù)據(jù)回顯場景--%>
          <%
           User user=new User();
           user.setGender("male");
           //數(shù)據(jù)回顯
           request.setAttribute("user",user);
          %>
          <input type="radio" name="gender" value="male" ${user.gender=='male'?'checked':'' }>男
          <input type="radio" name="gender" value="female" ${user.gender=='female'?'checked':'' }>女
          
          • 效果:


          EL自定義函數(shù)

          EL自定義函數(shù)用于擴(kuò)展EL表達(dá)式的功能,可以讓EL表達(dá)式完成普通Java程序代碼所能完成的功能

          • 開發(fā)HTML轉(zhuǎn)義的EL函數(shù)
          • 我們有時候想在JSP頁面中輸出JSP代碼,但是JSP引擎會自動把HTML代碼解析,輸出給瀏覽器。此時我們就要對HTML代碼轉(zhuǎn)義


          步驟:

          • 編寫一個包含靜態(tài)方法的類EL表達(dá)式只能調(diào)用靜態(tài)方法),該方法很常用,Tomcat都有此方法,可在\webapps\examples\WEB-INF\classes\util中找到
          public static String filter(String message) {
           if (message==null)
           return (null);
           char content[]=new char[message.length()];
           message.getChars(0, message.length(), content, 0);
           StringBuilder result=new StringBuilder(content.length + 50);
           for (int i=0; i < content.length; i++) {
           switch (content[i]) {
           case '<':
           result.append("<");
           break;
           case '>':
           result.append(">");
           break;
           case '&':
           result.append("&");
           break;
           case '"':
           result.append(""");
           break;
           default:
           result.append(content[i]);
           }
           }
           return (result.toString());
          }
          
          • 在WEB/INF下創(chuàng)建tld(taglib description)文件,在tld文件中描述自定義函數(shù)
          <?xml version="1.0" encoding="ISO-8859-1"?>
          <taglib xmlns="http://java.sun.com/xml/ns/javaee"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"
           version="2.1">
           <tlib-version>1.0</tlib-version>
           <short-name>myshortname</short-name>
           <uri>/zhongfucheng</uri>
           <!--函數(shù)的描述-->
           <function>
           <!--函數(shù)的名字-->
           <name>filter</name>
           <!--函數(shù)位置-->
           <function-class>utils.HTMLFilter</function-class>
           <!--函數(shù)的方法聲明-->
           <function-signature>java.lang.String filter(java.lang.String)</function-signature>
           </function>
          </taglib>
          
          • 在JSP頁面中導(dǎo)入和使用自定義函數(shù),EL自定義的函數(shù)一般前綴為"fn",uri是"/WEB-INF/tld文件名稱"
          <%@ page language="java" contentType="text/html" pageEncoding="UTF-8" %>
          <%@taglib prefix="fn" uri="/WEB-INF/zhongfucheng.tld" %>
          <html>
          <head>
           <title></title>
          </head>
          <body>
          //完成了HTML轉(zhuǎn)義的功能
          ${fn:filter("<a href='#'>點我</a>")}
          </body>
          </html>
          
          • 效果:


          EL函數(shù)庫(fn方法庫)

          • 由于在JSP頁面中顯示數(shù)據(jù)時,經(jīng)常需要對顯示的字符串進(jìn)行處理,SUN公司針對于一些常見處理定義了一套EL函數(shù)庫供開發(fā)者使用
          • 其實EL函數(shù)庫就是fn方法庫,是JSTL標(biāo)簽庫中的一個庫,也有人稱之為fn標(biāo)簽庫,但是該庫長得不像是標(biāo)簽,所以稱之為fn方法庫
          • 既然作為JSTL標(biāo)簽庫中的一個庫,要使用fn方法庫就需要導(dǎo)入JSTL標(biāo)簽要想使用JSTL標(biāo)簽庫就要導(dǎo)入jstl.jar和standard.jar包!
          • 所以,要對fn方法庫做測試,首先導(dǎo)入開發(fā)包(jstl.jar、standard.jar)

          • 在JSP頁面中指明使用標(biāo)簽庫
          <%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
          


          • fn方法庫全都是跟字符串有關(guān)的(可以把它想成是String的方法)
          • fn:toLowerCase
          • fn:toUpperCase
          • fn:trim
          • fn:length
          • fn:split
          • fn:join 【接收字符數(shù)組,拼接字符串】
          • fn:indexOf
          • fn:contains
          • fn:startsWith
          • fn:replace
          • fn:substring
          • fn:substringAfter
          • fn:endsWith
          • fn:escapeXml【忽略XML標(biāo)記字符】
          • fn:substringBefore
          • 測試代碼:
          contains:${fn:contains("zhongfucheng",zhong )}<br>
          containsIgnoreCase:${fn:containsIgnoreCase("zhongfucheng",ZHONG )}<br>
          endsWith:${fn:endsWith("zhongfucheng","eng" )}<br>
          escapeXml:${fn:escapeXml("<zhongfucheng>你是誰呀</zhongfucheng>")}<br>
          indexOf:${fn:indexOf("zhongfucheng","g" )}<br>
          length:${fn:length("zhongfucheng")}<br>
          replace:${fn:replace("zhongfucheng","zhong" ,"ou" )}<br>
          split:${fn:split("zhong,fu,cheng","," )}<br>
          startsWith:${fn:startsWith("zhongfucheng","zho" )}<br>
          substring:${fn:substring("zhongfucheng","2" , fn:length("zhongfucheng"))}<br>
          substringAfter:${fn:substringAfter("zhongfucheng","zhong" )}<br>
          substringBefore:${fn:substringBefore("zhongfucheng","fu" )}<br>
          toLowerCase:${fn:toLowerCase("zhonGFUcheng")}<br>
          toUpperCase:${fn:toUpperCase("zhongFUcheng")}<br>
          trim:${fn:trim(" zhong fucheng ")}<br>
          <%--將分割成的字符數(shù)組用"."拼接成一個字符串--%>
          join:${fn:join(fn:split("zhong,fu,cheng","," ),"." )}<br>
          
          • 效果:

          • 使用fn方法庫數(shù)據(jù)回顯
          <%
           User user=new User();
           String likes[]={"sing"};
           user.setLikes(likes);
           //數(shù)據(jù)回顯
           request.setAttribute("user",user);
          %>
          <%--java的字符數(shù)組以","號分割開,首先拼接成一個字符串,再判讀該字符串有沒有包含關(guān)鍵字,如果有就checked--%>
          <input type="checkbox"${ fn:contains(fn:join(user.likes,","),"sing")?'checked':'' }>唱歌
          <input type="checkbox"${ fn:contains(fn:join(user.likes,","),"dance")?'checked':'' }>跳舞
          
          • 效果:

          原文鏈接:https://dwz.cn/bOdF7S6R

          作者:Java3y


          主站蜘蛛池模板: 亚洲AV无码一区二区三区网址| 欧美av色香蕉一区二区蜜桃小说 | 精品中文字幕一区二区三区四区| 免费萌白酱国产一区二区三区| 波多野结衣av高清一区二区三区| 一区 二区 三区 中文字幕| 三上悠亚日韩精品一区在线| 亚洲日韩AV一区二区三区四区| 国产综合无码一区二区色蜜蜜| 国产在线观看一区二区三区精品| 久久久久久一区国产精品| 中文字幕精品无码一区二区三区 | 久久久精品人妻一区二区三区| 亚洲福利一区二区精品秒拍| 国产日韩精品一区二区在线观看| 精品福利一区二区三| 亚洲一区二区三区国产精品| 久久精品无码一区二区三区免费 | 久久精品无码一区二区WWW| 亚洲一区二区三区在线视频| 国模精品一区二区三区视频| 亚洲福利电影一区二区?| 亚洲AV无码一区二区二三区软件| 亚洲国产高清在线一区二区三区| 中文字幕人妻第一区| 亚洲日本一区二区| 国产日本一区二区三区| 老熟女高潮一区二区三区| 久久精品动漫一区二区三区| 久久无码一区二区三区少妇| 国产精品一级香蕉一区| 合区精品久久久中文字幕一区| 中文字幕日韩精品一区二区三区 | 亚洲乱色熟女一区二区三区丝袜| 亚洲中文字幕丝袜制服一区 | 国产品无码一区二区三区在线| 欧洲精品码一区二区三区| 亚洲国产成人精品久久久国产成人一区二区三区综 | 精品国产一区二区三区无码| 国产精品制服丝袜一区| 国产日韩精品一区二区在线观看播放|