JavaWeb学习之JSP常用标签、EL表达式的运算符、JSTL标签库(6)
1、JSP常用标签
* 只要支持JSP文件,常用标签有可以直接使用
* 格式: jsp:xxxx
* jsp:forward ,完成jsp页面的转发
* page属性:转发的地址
<% request.setCharacterEncoding("UTF-8"); %>
<jsp:forward page="/index.jsp">
<jsp:param value="张三" name="userName"/>
</jsp:forward>
浏览这个页面会跳转到index.jsp页面,浏览器地址不变
${param.userName}
* 运行原理
JSP引擎,处理JSP文件,自己解析特定的标签,然后将其编译成java代码
jsp:forward -- application.getRequestDispatcher("/forward.jsp");
* 注意:在JSP页面中可以不用斜杠开头
* String path = getAbsolutePathRelativeToContext(relativeUrlPath);自己单独处理,如果不是/开头,自动添加
* jsp:include ,动态包含,在执行当前servlet时才进行文件的合并
* page属性:包含的页面
* 执行原理
* org.apache.jasper.runtime.JspRuntimeLibrary.include
* request.getRequestDispatcher.include
* jsp:param,设置参数,与jsp:forward或jsp:include一起使用
* name属性:指定参数的名称
* value属性:指定参数的值
* jsp:useBean标签:创建class指定的类,并将此类添加到作用域中
* class属性:指定类的完整路径名
* id属性:确定对象的实例对象
<jsp:useBean id="cal" class="cn.itcast.domain.Calculator"></jsp:useBean>
* jsp:setProperty标签:给指定的Javabean对象设置属性值
* name属性:已有的JavaBean在web域中的对象
* property属性:确定需要使用的Javabean的属性
* value属性:确定设置的具体的内容
* param属性:获得指定参数的内容
* 注意:当内容是null时,将不会赋值
<jsp:setProperty property="*" name="cal" param=""/>获取所有cal值
param为获取某个参数的值,比如获取<input type="text" name="firstNum"/>,可以这样写<jsp:setProperty property="*" name="cal" param="firstNum"/>
如果param和property的值相同,可以省略不写
<jsp:setProperty property="firstNum" name="cal" value="1"/>给cal对象的firstNum属性设置值为1
2、EL表达式的运算符
* 执行运算
* .
* 获得当前对象的属性的值
* []
* 书写数字及获得下标所对应的值
* 书写属性名称,获得相应的值
* 转义字符:
* \
* 使EL表达式失效
* 算术运算符、逻辑运算符、关系运算符
* empty 三目运算符
${empty user}返回true或false
3.JSTL标签库
1、使用标签库的流程
* 导包(Myeclipse自带)
* 在当前的JSP页面头部声明引用
* <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
* taglib指令:确定所使用的标签库
* uri:确定使用的标签库,具体的名称
* prefix:为当前标签库起一个别名
* 使用
* <prefix:xxx或者<别名:xxx
2、域对象操作
* set:给web域设置值的
var 属性:属性的名称
value属性:属性的值
scope属性:确定作用域
* page
* request
* session
* application
<c:set var="gf" value="fengjie" scope="page"></c:set>
<c:set var="gf" value="fengjie" scope="request"></c:set>
<c:set var="gf" value="fengjie" scope="session"></c:set>
<c:set var="gf" value="fengjie" scope="application"></c:set>
\${gf} -- ${requestScope.gf}<br/>
\${gf} -- ${requestScope.gf}<br/>
\${gf} -- ${sessionScope.gf}<br/>
\${gf} -- ${applicationScope.gf}<br/>
* remove:删除指定名称的web域的值
* var属性:确定名称
* 注意:删除所有作用域的内容
<c:remove var="gf"/>
* out:将内容输出
* value:指定内容
* 注意:可以使用EL表达式
* escapeXml:是否转义html规定的字符
* 默认值true,转义
* default:当前输出内容为空时,显示默认值
<c:set var="gf" value="<a href='#'>fengjieout</a>" scope="page"></c:set>
<c:out value="${gf2}" default="没有值"></c:out>
3、数据操作
* if标签:逻辑判断
* test属性:逻辑值true|false
* 支持EL表达式
<c:set var="user" value="xx"></c:set>
<c:if test="${empty user}">
user对象是null <br/>
</c:if>
* choose标签:确定一组可以进行选择的显示结果
* 必须放置when标签
* 子标签
* when标签:逻辑判断
* test属性:填写逻辑值
* otherwise标签:处理没有处理项,默认项
<c:choose>
<c:when test="${empty user}">
when:user null
</c:when>
<c:when test="${!empty user2}">
when:user not null
</c:when>
<c:otherwise>
没有任何处理项
</c:otherwise>
</c:choose>
* forEach标签:进行迭代,每一条信息将显示在标签体
* items属性:确定遍历的对象
* 支持EL表达式
或
* begin属性:
* end属性:
* 共有
* var属性:确定遍历变量
* step属性:步长 i+=2 i++ -- i+=1
<c:forEach items="${headerValues}" var="hvs">
\${hvs} -- ${hvs.key}:
<c:forEach items="${hvs.value}" var="h">
${h} *****
</c:forEach>
<br/>
</c:forEach>
*url标签:生成当前响应的相对于web站点的完成路径
* value属性:指定的页面的位置
* 注意:内容如果/开头,相对于当前web项目
<c:url var="demoUrl" value="/demo1/calculator.jsp"></c:url>