Ⅰ 請寫出jsp的全部指令並簡單描述它們的用法
java">1、page指令:
首先,我們要明確一點就是page指令是一個全局指令,針對當前頁面,其次我們再來深挖他的功能,它到底有哪些功能那,在我們程序中起到什麼作用???
a、語法結構:<%page%>
b、<%@pagelanguage="java"%>:這個屬性用於設定jsp的編程語言,目前java是唯一有效的編程語言。
c、<%@pageextends=""%>:我們知道jsp的底層其實是Servlet,這里的這個屬性就是指我們的這個jsp是繼承那個Servlet的。這個我們一般不做修改,默認繼承的是HttpJspBase.
d、<%@pageerropage=""%>:這個標簽的屬性指的是當我們的這個jsp頁面發生變化的時候,會跳轉到我們這個頁面。
e、<%@pageisErrotpage=""%>:這個屬性其實是和errorpage的屬性配合使用的,如果我們把它設置成true,則該頁面就可以做為錯誤頁面。
f、<%@pagecontentType="text/html"charset="gb123"%>:這個屬性是我們最常用的,用於設置文件格式和編碼格式。
g、<%@pagesession="true"%>:指的是該頁面是否可以用到Session對象,說白了就是設置該頁面有沒有資格參與http會話。
h、<%@pageimport=""%>:這個屬性用來引入我們需要用到的jar包。
i、<%@pagebuffer=""%>:指定到客戶輸出流的緩沖模式。如果為none,則不緩沖;如果指定數值,那麼輸出就用不小於這個值的緩沖區進行緩沖。與autoFlash一起使用。默認不小於8KB,根據不同的伺服器可設置。例如,buffer="64kb"。
j、<%@pageautoFlash=""%>:如果為true緩沖區滿時,到客戶端輸出被刷新;如果為false緩沖區滿時,出現運行異常,表示緩沖區溢出。默認為true,例如autoFlash="true"。
k、<%@pageinfo=""%>:關於JSP頁面的信息,定義一個字元串,可以使用servlet.getServletInfo()獲得。默認省略。例如,info="測試頁面"。
l、<%@pageisThreadSafe=""%>:用來設置JSP文件是否能多線程使用。如果設置為true,那麼一個JSP能夠同時處理多個用戶的請求;相反,如果設置為false,一個JSP只能一次處理一個請求。例如,isThreadSafe="true"。
m、<2、include指令
首先,我們明確這個指令是幹啥的??顧名思義,就是包含一個文件的,說白了該指令可以把外部的一個jsp頁面載入到當前的jsp頁面中,但有一點我們要注意,jsp頁面只能解析靜態的外部jsp頁面。
a、語法結構:<%includefile=""%>:file中添加我們要引入文件的url。
b、一個比較好的Include指令例子就是使用多頁面來包含一個通用的頭模塊和尾模塊的內容。
就像這樣:
3、taglib指令
a、這個指令是干什麼的那???這個指令是引入標簽庫或者自定義標簽庫的一個指令。
b、語法結構:<%@tagliburi=""prefix="">
c、自定義taglib標簽:
第一步:開發自定義標簽類
原理:底層是由標簽處理類提供支持,從而實現簡單的標簽來封裝復雜的功能,從而使團隊更好的協作開發。
自定義標簽類都必須繼承一個父類:javax.servlet.jsp.tagext.SimpleTagSupport,或者TagSupport除此之外,JSP自定義標簽類還有如下要求。
1)、如果標簽類包含屬性,每個屬性都有對應的getter和setter方法。
2)、重寫doTag()或者doStartTag()或doEndTag()方法方法,這個方法負責生成頁面內容。
不帶屬性的標簽代碼:
這個關繫到的東西很多,希望itjob能幫到你
Ⅱ jsp如何用c標簽實現分頁
jsp用c標簽實現分頁的方式如下:
<%@="java"pageEncoding="UTF-8"%>
<%@tagliburi="/WEB-INF/tld/c.tld"prefix="c"%>
<%@attributename="curIndex"type="java.lang.Long"required="true"%>
<%@attributename="pageSize"type="java.lang.Long"required="true"%>
<%@attributename="pagerRange"type="java.lang.Long"required="true"%>
<%@attributename="totalPage"type="java.lang.Long"required="true"%>
<%@attributename="formId"type="java.lang.String"required="true"%>
<%
longbegin=Math.max(1,curIndex-pagerRange/2);
longend=Math.min(begin+(pagerRange-1),totalPage);
request.setAttribute("p_begin",begin);
request.setAttribute("p_end",end);
%>
<tableclass="pager">
<tr>
<%if(curIndex!=1){%>
<td><ahref="javascript:gotoPage(1)">首頁</a></td>
<td><ahref="javascript:gotoPage(<%=curIndex-1%>)">上一頁</a></td>
<%}else{%>
<tdclass="disabled"><ahref="#">首頁</a></td>
<tdclass="disabled"><ahref="#">上一頁</a></td>
<%}%>
<c:forEachvar="i"begin="${p_begin}"end="${p_end}">
<c:choose>
<c:whentest="${i==curIndex}">
<tdclass="active"><ahref="#">${i}</a></td>
</c:when>
<c:otherwise>
<td><ahref="javascript:gotoPage(${i})">${i}</a></td>
</c:otherwise>
</c:choose>
</c:forEach>
<%if(curIndex!=totalPage){%>
<td><ahref="#">下一頁</a></td>
<td><ahref="#">末頁</a></td>
<%}else{%>
<tdclass="disabled"><ahref="javascript:gotoPage(<%=curIndex+1%>)">下一頁</a></td>
<tdclass="disabled"><ahref="javascript:gotoPage(<%=totalPage%>)">末頁</a></td>
<%}%>
<td><a>共${totalPage}頁</a></td>
<tdclass="input_li">跳轉到:<inputtype="text"id="p_pageIndex"size="2"value="<c:outvalue="${pageIndex}"/>"/>頁<inputtype="button"id="gotoBtn"onclick="gotoPageByBtn()"value="GO"/></td>
<tdclass="input_li"> 每頁:
<selectid="p_pageSizeSelect"onchange="gotoPage(<%=curIndex%>)">
<optionvalue="10"<c:iftest="${pageSize==10}">selected</c:if>>10條</option>
<optionvalue="20"<c:iftest="${pageSize==20}">selected</c:if>>20條</option>
<optionvalue="50"<c:iftest="${pageSize==50}">selected</c:if>>50條</option>
</select>
</td>
</tr>
</table>
控制分頁的代碼如下
<%@tagliburi="/WEB-INF/tld/c.tld"prefix="c"%>
<%@tagliburi="/WEB-INF/tld/fmt.tld"prefix="fmt"%>
<%@taglibtagdir="/WEB-INF/tags"prefix="tags"%>
<head>
<style><!--分頁樣式-->
.pager{font:12pxArial,Helvetica,sans-serif;}
.pagera{padding:1px6px;border:solid1px#ddd;background:#fff;text-decoration:none;margin-right:2px;line-height:30px;vertical-align:middle;}
.pager.activea{color:red;border:none;}
.pagera:visited{padding:1px6px;border:solid1px#ddd;background:#fff;text-decoration:none;}
.pagera:hover{color:#fff;background:#ffa501;border-color:#ffa501;text-decoration:none;}
.pager.input_li{padding:1px6px;}
</style>
<script><!--分頁跳轉腳本-->
functiongotoPage(pageIndex){
varqueryForm=document.getElementById("queryForm");
varaction=queryForm.action;
varpageSize=document.getElementById("p_pageSizeSelect").value;
action+="?pageIndex="+pageIndex+"&pageSize="+pageSize;
//alert(action);
queryForm.action=action;
queryForm.submit();
}
functiongotoPageByBtn(){
varpageIndex=document.getElementById("p_pageIndex").value;
varpageIndexInt=parseInt(pageIndex);
vartotalPage=${totalPage};
if(pageIndexInt>0&&pageIndexInt<totalPage){
gotoPage(pageIndex);
}
else{
alert("輸入頁數超出范圍!");
}
}
</script>
</head>
<body>
<formid="queryForm"action="${basePath}/log/list"method="post">
<table>
<tr>
<td>用戶名:</td>
<td><inputtype="text"name="userName"value="<c:outvalue="${userName}"/>"/> </td>
<td><inputtype="submit"text="查詢"/></td>
</tr>
</table>
</form>
<tags:pagerpagerRange="10"pageSize="${pageSize}"totalPage="${totalPage}"curIndex="${pageIndex}"formId="queryForm"></tags:pager>
<tableclass="border">
<thead>
<tr>
<thwidth="100">用戶名稱</th>
<thwidth="500">操作內容</th>
<thwidth="200">操作時間</th>
</tr>
</thead>
<tbody>
<c:forEachitems="${logList}"var="log">
<tr>
<td>${log.userName}</td>
<td>${log.result}</td>
<td>
<fmt:formatDatevalue="${log.createTime}"pattern="yyyy-MM-ddHH:mm:ss"/>
</td>
</tr>
</c:forEach>
</tbody>
</table>
<tags:pagerpagerRange="10"pageSize="${pageSize}"totalPage="${totalPage}"curIndex="${pageIndex}"formId="queryForm"></tags:pager>
</body>
Ⅲ 怎樣用mvc模式讓一個jsp頁面可以被登錄過的直接訪問,沒登陸的不能訪問
這個很好辦:在jsp用c標簽
<c:if test="${sessionScope.user==null}">
<c:redirect url="登錄頁面.jsp"></c:redirect>
</c:if>
//如果已登陸則將用戶信息存進session,如果沒登陸則直接跳轉到登錄頁面
Ⅳ 怎麼樣在Jsp頁面中通過判斷來取不同的值
jsp頁面判斷可以使用jstl和el標簽
單個判斷:回
<c:iftest="${resource.value=='GALL'&&resource.checked==true}">
contexthere!
</c:if>
多重答判斷:
<c:choose>
<c:whentest="${resource.value=='GALL'&&resource.checked==true}">
Yourcontexthere!
</c:when>
<c:otherwise>Yourcontexthere!</c:otherwise>
</c:choose>
Ⅳ jsp頁面循環輸出list
<% ArrayList list = new ArrayList();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5);
list.add(6);
pageContext.setAttribute("list",list);
%>
<c:forEach items="${list}" var="i">
<c:out value="${i}"></c:out>
<c:if test="${i%4==0}"><br></c:if>
</c:forEach>
核心代碼。。加入你的jsp 文件中,不過還要加個<%@taglib。。。>標簽。
Ⅵ jsp中c標簽foreach的使用
FOREACH標簽部分.
首先確認MAP中有沒有取得數據.
<c:forEach [var="varName"] items="" [varStatus="varStatusName"]
FOREACH標簽含義: items存放被迭代的集合對象,var用來存放現在指到的成員。
3. var元素輸出的參數需要與MAP中存放的參數對應,(通常用一個JAVABEAN對像封裝放在LIST等集合對像中).案例中的,NAME等值是否在JAVABEAN中存在.如果存在,EL表達式寫法為: ${entry.name}即可直接輸入,其他值也是一樣.
IF標簽部分.
EL表達式有自己的判斷方式,無法直接用==,!=,>=,<=直接判斷.
如果要判斷封裝對像是否為空.請用empty關鍵字....
以下是IF標簽與FOREACH綜合用法的示例:
<!-- 如果集合中不為空,輸出數據! --><c:if test="${!empty adminlist}"> <c:forEach items="${adminlist}" var="list"> <tr> <td>${list.id}</td> <td>${list.name}</td> <td>${list.pwd}</td> </tr> </c:forEach> </c:if><!-- 如果集合中為空,直接在HTML中輸出提示! --> <c:if test="${empty adminlist}"> 未能找到數據! </c:if>
為了能更好的顯示出FOREACH的效果.通常先用choose標簽進行判斷,以下是JSP頁面中的完整標簽片段示例:(IF標簽不再舉例.)
<table cellpadding="5" cellspacing="1" border="0" width="100%" align="center"> <tr align="center"> <td>ID</td> <td>用戶帳號</td> <td>用戶密碼</td> <td colspan="2">管理</td> </tr> <c:choose> <c:when test="${!empty userlist}"> <c:forEach items="${userlist}" var="list"> <tr> <td>${list.id}</td> <td>${list.name}</td> <td>${list.pwd}</td> <td> <a href="UserEdit.jspx?action=update&id=${list.id}">編緝</a> </td> <td> <div onClick="return del();"> <a href="UserEdit.jspx?action=delete&id=${list.id}">刪除</a> </div> </td> </tr> </c:forEach> </c:when> <c:otherwise> <tr> <td colspan="5">未能找到符合條件的數據!</td> </tr> </c:otherwise> </c:choose></table>
Ⅶ jsp頁面怎麼判斷foreach循環了幾次,或者說怎麼判斷list循環到下標幾
代碼:<c:forEach items="listTest" var="test" varStatus="index"></c:forEach>
在頁面上輸出的值,最後一個就是循環的次數了。
如果要知道當前的值是第幾次循環的結果,那麼可以在頁面上加一列序號,把index顯示出來。
Ⅷ jstl標簽里c:if的使用
1、< c:if > 的使用
c:if 相當於if..else..語句,但c:if裡面並沒有類似於else的寫法,只能寫成多個c:if。
<select id="machinename" name="machinename" style="width: 226px" class="required">
<e:forEach items="${projectsList}" varStatus="status" var="item">
<c:if test="${machine.machinename==item}">
<option value="${item}" selected="selected">${item}</option>
</c:if>
<c:if test="${machine.machinename!=item}">
<option value="${item}">${item}</option>
</c:if>
</e:forEach>
</select>
2、< c:if test=」value ne, eq, lt, gt,….」> 用法。
算術運算符 :+ 、 - 、 * 、 / (或 div )和 % (或 mod )
關系運算符 :== (或 eq )、 != (或 ne )、 < (或 lt )、 > (或 gt )、 <= (或 le )和 >= (或 ge )
邏輯運算符 :&& (或 and )、 || (或 or )和 ! (或 not )
驗證運算符 :empty
3、 備註:
1』 < c:if test="${machine.machinename==item}">
不能寫成 < c:if test="${machine.machinename==item} ">,最後不要有空格。
(8)jsp頁面c標簽的用法擴展閱讀
JSTL是apache對EL表達式的擴展(也就是說JSTL依賴EL),JSTL是標簽語言!JSTL標簽使用以來非常方便。
它與JSP動作標簽一樣,只不過它不是JSP內置的標簽,需要自己導包,以及指定標簽庫而已。
如果使用MyEclipse開發JavaWeb,那麼在把項目發布到Tomcat時,會發現,MyEclipse會在lib目錄下存放jstl的Jar包!如果沒有使用MyEclipse開發那麼需要自己來導入這個JSTL的Jar包:jstl-1.2.jar。
2、JSTL標簽庫:
JSTL一共包含四大標簽庫:
core:核心標簽庫,我們學習的重點;
fmt:格式化標簽庫,只需要學習兩個標簽即可;
sql:資料庫標簽庫。
xml:xml標簽庫。