Ⅰ 请写出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标签库。