JSP常用标签

JSP常用标签可以理解为JSTL

user:普通用户
admin:站点管理员




JSTL1.1.2下载地址:http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/
第一个JSTL小程序

<c:out>输出标签:是属于JSTL核心标签中的一个,所以要先导入核心标签库

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- 使用out标签输出常量 -->
<c:out value="this is our first JSTL demo"></c:out><br>
</body>
</html>
运行结果



value中的值可以输出变量以及常量
常量:直接输出
变量:EL表达式进行变量的获取

普通的写法:通过JSP内置的session对象去获取name这个value
EL表达式写法:从session的范围中取出name的值





如果没有直接做范围的限定,它会按以下顺序依次去找:从小到大的顺序

如果四个范围都没有找到,说明页面中没有这个变量。没有的话正常应该输出null,但是EL变量做了优化,不会输出null,它会直接输出一个为空的字符串。
例:<c:out value = "${username}"></c:out> 如果四个范围都没有找到,说明页面中没有username这个变量

获取用户的输入
如果想通过count进行运算的话,要转换成Int值的类型
用于计算。要是没进行字符串的转换,计算结果只是字符串的拼接


<%String username="zhangsan";request.setAttribute("username",username);%>
<c:out value="${empty username}"></c:out>
输出结果为false
<%String username="null";request.setAttribute("username",username);%> 为空
<c:out value="${empty username}"></c:out>
输出结果为true
<%String username="";request.setAttribute("username",username);%> 为空字符串
<c:out value="${empty username}"></c:out>
输出结果为true
注意:如果没有request.setAttribute("username",username);EL表达式取不到username的值


输出变量首先要向某一个scope赋值,存储变量值
<!-- 使用out标签输出变量 -->
<!-- 直接输出变量 -->
<%session.setAttribute("name","Jessica");%>
<c:out value="${name}"></c:out><br>
<!-- 当变量不存在时,通过default属性输出默认值error -->
<c:out value="${name1}" default="error"></c:out><br>
<!-- 设置输出转义后的字符需要escapeXml属性值设置成false -->
<c:out value="<out标签>" escapeXml="false"></c:out><br
输出结果


快捷键:Alt+↑ 将选中的代码块上移
package com.imooc.test;
public class Person {
private String name2;
private String age2;
private String address;
public String getName2() {
return name2;
}
public void setName2(String name2) {
this.name2 = name2;
}
public String getAge2() {
return age2;
}
public void setAge2(String age2) {
this.age2 = age2;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
将Person类实例化,实例化的变量名叫person
firstDemo.jsp
<jsp:useBean id="person" class="com.imooc.test.Person"></jsp:useBean>
<!-- 存值到scope中 -->
<c:set value="today" var="day" scope="session"></c:set>
<c:out value="${day}"></c:out><br> <c:set var="age" scope="application">eleven</c:set>
<c:out value="${age}"></c:out><br> <!-- 通过set标签向person中赋值 -->
<c:set target="${person}" property="name2" value="zhangsan"></c:set>
<c:out value="${person.name2}"></c:out>
<c:set target="${person}" property="age2" value="26"></c:set>
<c:out value="${person.age2}"></c:out>
<c:set target="${person}" property="address" value="北京市 朝阳区"></c:set>
<c:out value="${person.address}"></c:out> <br> <!-- value值可以写在两个标签之间 -->
<c:set target="${person}" property="name2">zhangsan</c:set>
<c:out value="${person.name2}"></c:out>
<c:set target="${person}" property="age2">26</c:set>
<c:out value="${person.age2}"></c:out>
<c:set target="${person}" property="address">北京市 朝阳区</c:set>
<c:out value="${person.address}"></c:out> <br>
运行结果


<!-- remove标签的用法 -->
<c:set var="lastName" value="Lily"></c:set>
<c:out value="${lastName}"></c:out>
<c:set var="firstName" value="Wang"></c:set>
<c:remove var="firstName"/>
<c:out value="${firstName}"></c:out><br>
注意:remove只能直接remove掉某一个变量,对象中的某一个属性就不可以。

<!-- catch标签的用法 -->
<c:catch var="error">
<c:set target="aa" property="bb">asasa</c:set>
</c:catch>
<c:out value="${error}"></c:out><br>

<form action="firstDemo.jsp" method="post" >
<!-- 通过表单接收用户的输入,表单中包含文本框,name:记录用户的成绩,value:用户的输入,接收到用户的输入之后,把它直接存到我们param范围内的score变量中去
用户点击提交到firstDemo.jsp页面,提交方式:post -->
<input type="text" name="score" value="${param.score}"/>
<input type="submit"/>
</form>
<!-- 优秀 score>=90 -->
<c:if test="${param.score>=90}" var="result" scope="application">
<c:out value="恭喜,您的成绩是优秀!"></c:out>
</c:if>
<c:out value="${applicationScope.result}"></c:out>
通过表单接收用户的输入,表单中包含文本框,name:记录用户的成绩,value:用户的输入,接收到用户的输入之后,把它直接存到我们param范围内的score变量中去
用户点击提交到firstDemo.jsp页面,提交方式:post


<form action="firstDemo.jsp" method="post" >
<input type="text" name="score" value="${param.score}"/>
<input type="submit"/>
</form> <!-- choose、when、otherwise -->
<c:choose>
<c:when test="${param.score>=90 && param.score<=100}">
<c:out value="优秀"></c:out>
</c:when>
<c:when test="${param.score>=80 && param.score<90}">
<c:out value="良好"></c:out>
</c:when>
<c:when test="${param.score>=70 && param.score<80}">
<c:out value="中等"></c:out>
</c:when>
<c:when test="${param.score>=60 && param.score<70}">
<c:out value="及格"></c:out>
</c:when>
<c:when test="${param.score>=0 && param.score<60}">
<c:out value="不及格"></c:out>
</c:when>
<c:otherwise>
<c:out value="您的输入有问题"></c:out>
</c:otherwise>
</c:choose>

<c:choose>
<c:when test="${param.score==100}">
<c:out value="太棒了,你是第一名!"></c:out>
</c:when>
</c:choose>


var:给当前遍历的变量取一个名字
<!-- 用法一:全部遍历 -->
<c:forEach var="fruit" items="${fruits}">
<c:out value="${fruit}"></c:out><br>
</c:forEach>

<!-- 用法二:部分遍历 -->
<c:forEach var="fruit" items="${fruits}" begin="1" end="4">
<c:out value="${fruit}"></c:out><br>
</c:forEach>
<!-- 用法三:部分遍历并指定步长 -->
<c:forEach var="fruit" items="${fruits}" begin="1" end="4" step="2">
<c:out value="${fruit}"></c:out><br>
</c:forEach>
<!-- 用法四:部分遍历并输出元素状态 -->
<c:forEach var="fruit" items="${fruits}" begin="1" end="4" varStatus="fru">
<c:out value="${fruit}的四个属性值"></c:out><br>
<c:out value="index属性:${fru.index}"></c:out><br><!-- (集合元素中的下标)下标 -->
<c:out value="count属性:${fru.count}"></c:out><br><!-- (计算在集合中的是第几个数)集合中计数,从1开始 -->
<c:out value="first属性:${fru.first}"></c:out><br><!-- 第一个值为true,其它都为false -->
<c:out value="last属性:${fru.last}"></c:out><br><!-- 最后一个值为true,其它都为false -->
<c:out value="-----------------------------"></c:out><br>
</c:forEach>

<!-- forTokens标签的用法 -->
<c:forTokens items="010-88096789-123" delims="-" var="num">
<c:out value="${num}"></c:out><br>
</c:forTokens>



<!-- import标签的用法 -->
<!-- 导入网络上的绝对路径 -->
<c:catch var="error09">
<c:import url="https://www.imooc.com"></c:import>
</c:catch>
<c:out value="${error09}"></c:out> <!-- 导入相对路径文件 -->
<c:catch var="error08">
<c:import url="tt.txt" charEncoding="gbk"></c:import>
</c:catch>
<c:out value="${error08}"></c:out><br>
引入同一个服务器的发布路径下的AnotherWebProject下的importFile.jsp页面到当前的project路径来
<!-- context属性的用法 -->
<c:catch var="error06">
<c:import url="/importFile.jsp" context="/AnotherWebProject" charEncoding="gbk"></c:import>
</c:catch>
<c:out value="${error06}"></c:out><br>





常用JSTL函数
fn:contains
fn:escapeXml

JSP常用标签的更多相关文章
- JavaWeb学习之JSP常用标签、EL表达式的运算符、JSTL标签库(6)
1.JSP常用标签 * 只要支持JSP文件,常用标签有可以直接使用 * 格式: jsp:xxxx * jsp:forward ,完成jsp页面的转发 * page属性:转发的地址 <% requ ...
- jsp学习--JSP运行原理,九大隐式对象和JSP常用标签
一.JSP运行原理 每个JSP 页面在第一次被访问时,WEB容器都会把请求交给JSP引擎(即一个Java程序)去处理.JSP引擎先将JSP翻译成一个_jspServlet(实质上也是一个servlet ...
- 咸鱼入门到放弃7--jsp<二>jsp常用标签
一.JSP标签介绍 JSP标签也称之为Jsp Action(JSP动作)元素,它用于在Jsp页面中提供业务逻辑功能,避免在JSP页面中直接编写java代码,造成jsp页面难以维护. 二.JSP常用标签 ...
- jsp常用标签和标签库及javaBean规范
1 常用标签forward,pararm,include <jsp:forward page=""></jsp:forward> <jsp:param ...
- [转]Jsp 常用标签
<jsp:include> 动态引入,涉及到的多个 jsp 页面会翻译成多个 servlet 并在执行时合并. include 指令 是静态引入,涉及到的多个 jsp 页面会翻译成一个 s ...
- JSP常用标签——JSTL标签和EL表达式
一.JSTL简介 1.什么是JSTL JSTL是Java中的一个定制标记库集.(这个标记库集不需要自己编写,可以直接使用) 2.为什么要使用JSTL 实现了JSP页面中的代码复用(基于标签库原理,重复 ...
- java web中jsp常用标签
在jsp页面开发过程中,经常需要使用JSTL(Java Server Pages Standard Tag Library)标签开开发页面,是看起来更加的规整舒服. JSTL主要提供了5大类标签库: ...
- jsp 常用标签的使用
jsp中定义实体bean<jsp:useBean id="clu" class="cn.domain.CacluBean"></jsp:use ...
- jsp的标签
一.JSP标签介绍 JSP标签也称之为Jsp Action(JSP动作)元素,它用于在Jsp页面中提供业务逻辑功能,避免在JSP页面中直接编写java代码,造成jsp页面难以维护. 二.JSP常用标签 ...
随机推荐
- 理解、学习与使用 JAVA 中的 Optional【转载】
这是一篇转载的文章.刚学java的时候看了好久这个Optional,但一直是懵的.今天又又遇到了,重新回来再看的时候,发现并没有那么难道那个. 转载的文章再开头处写了一个对于理解Optional很关键 ...
- CVPapers - Computer Vision Resource
To add links (PDF, project,...) you can use the online tool. Computer Vision Paper Indexes ICCV: 20 ...
- 理解clientX、clientY、offsetLeft、event.offsetTop、offsetWidth、offsetHeight、clientWidth、clientHeight、scrollTop、scrollHeight
一.clientX和clientY 事件发生时,鼠标距离浏览器的可视区域的X.Y轴的位置,不包含滚动条的区域的部分.就算是页面进行了滚动,鼠标的坐标值还是参考可视区域的. 二.offsetLeft和o ...
- Encoding.GetEncoding 编码列表
代码页 名称 显示名称 37 IBM037 IBM EBCDIC(美国 - 加拿大) 437 IBM437 OEM 美国 500 IBM500 IBM EBCDIC(国际) 708 A ...
- 小菜鸟之liunx
目录 第一章:Linux简介 1 Linux特点 1 CentOS 1 第二章:Linux安装 2 Linux目录结构 2 第三章:Linux常用命令 2 Linux命令的分类 3 操作文件或目录常用 ...
- Linux中实用的命令
1. 查看linux机器是32位还是64位的方法: 1.file /sbin/init 或者file /bin/ls (注意命令中的空格) /sbin/init: ELF64- ...
- APM之原理篇
APM,应用性能监控,有new relic等产品,对APM感兴趣的应该不会不知道它了.主要功能就是统计分析应用的CPU.内存.网络.数据库.UI等性能,并提供错误日志捕获.编码人员需要做的仅仅是使用它 ...
- 把人都送到房子里的最小花费--最小费用最大流MCMF
题意:http://acm.hdu.edu.cn/showproblem.php?pid=1533 相邻的容量为inf,费用为1,S到m容量为1,费用为0 ,H到T容量为1,费用为0. 建图跑-最小费 ...
- linux学习笔记(1) -- 关于命令的一些操作
Linux 目录 /:根目录,一般根目录下只存放目录,在Linux下有且只有一个根目录.所有的东西都是从这里开始.当你在终端里输入“/home”,你其实是在告诉电脑,先从/(根目录)开始,再进入到ho ...
- 计算机网络(TCP/IP)
概述:网络协议通常分不同的层次进行开发,每一层分别不同的通信功能.TCP/IP通常分为4层协议系统. 1.链路层,有时也称为数据链路层或者网络接口层,通常包括操作系统中的设备驱动程序和计算机中对应的网 ...