一、Jsp
JSP(Java Server Pages),是一种动态网页开发技术。它使用JSP标签在HTML网页中插入Java代码。标签格式为 <% %>
。
JSP是一种Java servlet,主要用于实现Java web应用程序的用户界面部分。网页开发者们通过结合HTML代码、XHTML代码、XML元素以及嵌入JSP操作和命令来编写JSP。
JSP通过网页表单获取用户输入数据、访问数据库及其他数据源,然后动态地创建网页。
JSP标签有多种功能,比如访问数据库、记录用户选择信息、访问JavaBeans组件等,还可以在不同的网页中传递控制信息和共享信息。
二、 JSTL标签
2.1JSTL是什么?
概念
JSTL(JSP Standard Tag Library)是JSP标准标签,由apache实现。是sun公司制定的,类似于HTML标签的jsp标签技术。俗称C标签。
核心标签库
2.2为什么要用JSTL?
使用了EL表达式可以简化JSP页面代码,但是如果需要进行逻辑判断、循环遍历怎么办?
JSTL就来了。
2.3怎么用?
1.导入依赖jar:jstl.jar、standrad.jar,将两个JSTL的jar包放到WebContent->WEB-INF->lib下 2.在所需的JSP页面添加taglib指令,引入JSTL中core包依赖约束 taglib指令:<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
2.4通用标签:set remove out
2.4.1 out标签
<c:out>
标签:用于将结果输出。类似于JSP中的<%= %>表达式,或者是EL表达式${} expression }。
<%--取值--%> <c:out value="${userName}"></c:out>
- 内部属性介绍:
- value:设置要输出到页面的数据,要使用EL表达式
- default:设置一个默认值,当value所设置的EL表达式的值为null时,则将default所对应的值输出到页面
- escapeXml:设置输出到页面中的内容是否转义,默认值为true,表示转义,即原样输出;若设置为false,表示不转义,输出到页面中的内容会被浏览器解析
2.5.2 set标签
<c:set>
标签:用于把某一个对象存在指定的域范围内,或者将某一个对象存储到Map或者JavaBean对象中。
<%--设值--%> <c:set var="userName" value="tanghaorong" scope="session"></c:set>
- 内部属性介绍:
- var:设置共享数据的属性名
- value:设置共享数据的属性值
- scope:设置共享数据的域对象的范围,若不指定域对象的范围,则默认在pageContext域对象中共享数据,scope=“page(默认)|request|session|application”
2.5.3 remove标签
<c:remove>
标签:相较于<c:set>
,作用是移除范围域中的变量。
<%--删除userName变量--%> <c:remove var="userName"></c:remove>
- 内部属性介绍:
- var:要删除的域对象中共享数据的属性名
- scope:要删除共享数据的域对象的范围,
- scope=“page|request|session|application”,若不指定scope,则删除所有域对象中以var的值作为属性名的数据
2.5条件标签if
2.5.1 if标签
<c:if>
标签:和程序中的if语句作用相同,用来实现条件控制,但是没else功能。
<c:if test="testCondition" [var="varName"] [scope="{page|request|session|application}"]> 标签体内容 </c:if>
- 其中参数说明:
- test属性用于存放判断的条件,一般使用EL表达式来编写。
- var属性用来存放判断的结果,类型为true或false。
- scopes属性用来指定var属性存放的范围。
2.5.2 <c:choose>、<c:when>和<c:otherwise>标签
- <c:choose>、<c:when>和<c:otherwise>标签:这三个标签通常一起使用,<c:choose>标签作为<c:when>和<c:otherwise>标签的父标签来使用。类似于程序中if-else,其中<c:when>表示if,<c:otherwise>表else。
<% //在session中设置值 session.setAttribute("score",50); %> <c:choose> <c:when test="${score>60}"> <span>恭喜!及格了</span> </c:when> <c:otherwise> <span>不好意思!不及格</span> </c:otherwise> </c:choose>
2.6迭代标签:forEach forTokens
2.6.1 forEach标签
<c:forEach>
:相当于 for 循环。java中有增强for循环和普通for循环,JSTL 中的<c:forEach>
也有两种用法- 作用:根据循环条件遍历集合中的元素
- 属性:
- var设定变量名用于存储从集合中取出的元素(必须无默认值)
- items指定要遍历的集合
- begin、and用于指定遍历的起始位置和终止位置(有默认值)
- step指定循环的步长(有默认值)
- varStatus通过index、count、first、last几个状态值,描述begin和end子集中的元素的状态。
- index 下标
- count 技术
- first 是否是第一个
- last 是否是最后一个
<!--1、完整语法--> <c:forEach items="要遍历的集合对象" var="变量" varStatus="状态" begin="开始" end="结束" step="增量"> 循环体代码… </forEach> <!--第一种用法:forEach增强--> <c:forEach items="要遍历的集合对象" var="变量" > 循环体代码… </forEach> <!-- 第二种用法:类似于 Java 中的普通for循环 从0循环到10,变量名是 `i` ,每次自增1 --> <c:forEach begin="0" end="10" step="1" var="i"> ${i} </c:forEach>
2.6.2 forTokens标签
<c:forTokens>
标签:该标签用于浏览字符串,并根据指定的字符将字符串截取。- 语法
<c:forTokens items=”strigOfTokens” delims=”delimiters” [var=”name”] [begin=”begin”] [end=”end”] [step=”len”] [varStatus=”statusName”] > 主体内容 </c:forTokens>
其中参数说明:
- items指定被迭代的字符串。
- delims指定使用的分隔符。
- var指定用来存放遍历到的成员。
- begin指定遍历的开始位置(int型从取值0开始)。
- end指定遍历结束的位置(int型,默认集合中最后一个元素)。
- step遍历的步长(大于0的整型)。
- varStatus存放遍历到的成员的状态信息。
<c:out value="根据一个分隔符截取:"/><hr> <c:forTokens items="123-4567-8910" delims="-" var="tel"> <c:out value="${tel}"></c:out><br/> </c:forTokens> <br/><br/><br/> <c:out value="根据多个分隔符截取:"/><hr> <c:forTokens var="str" items="太阳、星星、月亮;地球|火星" delims="、;|"> <c:out value="${str}"></c:out><br/> </c:forTokens> <br/><br/><br/> <c:out value="输出其它属性信息:"/><br><hr> <c:forTokens items="1*2*3*4*5*6*7" delims="*" begin="1" end="3" var="n" varStatus="s"> 数字 <c:out value="${n}"/> 的四种属性:<br> 所在位置,即索引:<c:out value="${s.index}"/><br> 总共已迭代的次数:<c:out value="${s.count}"/><br> 是否为第一个位置:<c:out value="${s.first}"/><br> 是否为最后一个位置:<c:out value="${s.last}"/><br> <hr> </c:forTokens>
三、Jsp自定义标签
3.1标签
标记语言是一种用于描述文档结构和内容的计算机语言。常见的标记语言包括HTML、XML、Markdown,以及TeX等。
标签是标记语言中的一种基本元素,它用于指示文档中某个特定的元素或信息,例如html中的 < p >标签。
3.2Jsp自定义标签
JSP自定义标签是用户在JSP中定义的一种标记,可以用于执行一些Java代码和动态页面生成。JSP自定义标签可以将相同的任务组合成独立的模块,从而增加了JSP页面的可重用性和可维护性。
3.3标记语言的特点
1.形式 :<开始标签 属性=“属性值”>标签体</结束标签>
2.分类 :
- 空标签 br、hr…
- ui标签 input、table…
- 控制标签 if、foreach…
- 数据标签 out