JSP、EL表达式、JSTL
JSP
1.什么是jsp?
Java Server Pages: java服务器端页面。可以理解为一个特殊的页面,其中既可以指定定义html标签,又可以定义java代码。其本质就是一个Servlet。
2.JSP定义Java代码的方式
(1)<% 代码 %>:定义的java代码,在service方法中。service方法中可以定义什么,该脚本中就可以定义什么。
(2)<%! 代码 %>:定义的java代码,在jsp转换后的java类的成员位置。
(3)<%= 代码 %>:定义的java代码,会输出到页面上。输出语句中可以定义什么,该脚本中就可以定义什么。
3.JSP的内置对象
在jsp页面中不需要获取和创建,可以直接使用的对象。一共有9个。
变量名 | 真实类型 | 作用 |
pageContext | pageContext | 当前页面共享数据,还可以获取其他八个内置对象 |
request | HttpServletRequest | 一次请求访问的多个资源(转发) |
session | HttpSession | 一次会话的多个请求间 |
application | ServletContext | 所有用户间共享数据 |
response | HttpServletResponse | 响应对象 |
page | Object | 当前页面(Servlet)的对象,相当于this |
out | JspWriter | 输出对象,数据输出到页面上 |
config | ServletConfig | Servlet的配置对象 |
exception | Throwable | 异常对象 |
4.JSP的注释
(1)html注释:<!-- -->:只能注释html代码片段
(2)jsp注释:<%-- --%>:可以注释所有,包括html和jsp代码
5.JSP指令
JSP指令用于配置JSP页面,导入资源文件的。
格式:<%@ 指令名称 属性名1=属性值1 属性名2=属性值2 ... %>
(1)page:配置JSP页面的
1.contentType:等同于response.setContentType()。可以设置响应体的mime类型以及字符集以及当前jsp页面的编码。
2.import:导包。
3.errorPage:当前页面发生异常后,会自动跳转到指定的错误页面。
4.isErrorPage:标识当前也是是否是错误页面。true:是,可以使用内置对象exception。false:否。默认值。不可以使用内置对象exception。
(2)include:导入页面的资源文件
<%@include file="top.jsp"%>
(3)taglib:导入资源
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
EL表达式
1.什么是EL表达式?
Expression Language 表达式语言,用于替换和简化jsp页面中java代码的编写。
2.EL语法
${表达式}
jsp默认支持el表达式的。如果要忽略el表达式
1. 设置jsp中page指令中:isELIgnored="true" 忽略当前jsp页面中所有的el表达式
2. \${表达式} :忽略当前这个el表达式
3.EL表达式的运算符
1. 算数运算符: + - * /(div) %(mod)
2. 比较运算符: > < >= <= == !=
3. 逻辑运算符: &&(and) ||(or) !(not)
4. 空运算符: empty
* 功能:用于判断字符串、集合、数组对象是否为null或者长度是否为0
* ${empty list}:判断字符串、集合、数组对象是否为null或者长度为0
* ${not empty str}:表示判断字符串、集合、数组对象是否不为null 并且 长度>0
4.EL表达式获取值
el表达式只能从域对象中获取值。
${域名称.键名}:从指定域中获取指定键的值。
域名 | |
pageScope | pageContext |
requestScope | request |
sessionScope | session |
applicationScope | application(ServletContext) |
还有一种语法:${键名}:表示依次从最小的域中(上面的表从上到下)查找是否有该键对应的值,直到找到为止。
5.EL表达式获取对象、List集合、Map集合的值
(1)对象:${域名称.键名.属性名}。本质上会去调用对象的getter方法
(2)List集合:${域名称.键名[索引]}。
(3)Map集合:${域名称.键名.key名称} 或 ${域名称.键名["key名称"]}
6.EL表达式中的隐式对象
隐式对象类似与jsp的内置对象,可以直接使用,一共有11个,用得也不多。比较常用的只有一个。pageContext。
它可以获取jsp其他八个内置对象。
最重要的,它可以动态获取虚拟目录。
${pageContext.request.contextPath}
JSTL
1.什么是JSTL?
JavaServer Pages Tag Library,JSP标准标签库。是由Apache组织提供的开源的免费的jsp标签。
用于简化和替代JSP页面上的java代码。
2.使用步骤
1.导入jstl相关的jar包
下载 jakarta-taglibs-standard-1.1.2.zip 包并解压,将 jakarta-taglibs-standard-1.1.2/lib/ 下的两个 jar 文件:standard.jar 和 jstl.jar 文件拷贝到 /WEB-INF/lib/ 下。
2.引入标签库:用JSP的taglib指令:<%@ taglib %>
3.使用标签
3.常用的JSTL标签
(1)if:相当于java代码的if语句
属性:test 必须属性,接受boolean表达式。如果表达式为true,则显示if标签体内容,如果为false,则不显示标签体内容。一般情况下,test属性值会结合el表达式一起使用。
注意:c:if标签没有else情况,想要else情况,则可以在定义一个c:if标签。
示例:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>$Title$</title>
</head>
<body>
<c:if test="${3<4}">
<h1>3是小于4的</h1>
</c:if>
</body>
</html>
(2)choose标签:相当于java代码的switch语句
1. 使用choose标签声明 相当于switch声明
2. 使用when标签做判断 相当于case
3. 使用otherwise标签做其他情况的声明 相当于default
示例:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
request.setAttribute("number",10);
%> <c:choose>
<c:when test="${number == 1}">星期一</c:when>
<c:when test="${number == 2}">星期二</c:when>
<c:when test="${number == 3}">星期三</c:when>
<c:when test="${number == 4}">星期四</c:when>
<c:when test="${number == 5}">星期五</c:when>
<c:when test="${number == 6}">星期六</c:when>
<c:when test="${number == 7}">星期日</c:when> <c:otherwise>你输入的数字有误</c:otherwise>
</c:choose>
</body>
</html>
(3)foreach:相当于java代码的for语句
示例1(打印1-10):
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<c:forEach begin="1" end="10" var="i" step="1">
${i}<br>
</c:forEach>
</body>
</html>
示例2(遍历打印集合):
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
List<String> list = new ArrayList<>();
list.add("aaa");
list.add("bbb");
list.add("ccc");
request.setAttribute("list",list);
%>
<c:forEach items="${requestScope.list}" varStatus="s" var="str">
${s.index} ${s.count} ${str}<br> <%-- s.index表示索引,从0开始。s.count表示循环次数--%>
</c:forEach>
</body>
</html>
输出结果:
0 1 aaa
1 2 bbb
2 3 ccc
JSP、EL表达式、JSTL的更多相关文章
- JavaWeb基础Day17 (JSP EL表达式 jstl标签库 beanutil工具类)
JSP jsp的实质就是指在html界面中嵌入Java代码 jsp脚本 <% Java代码 %> 相当于写在service方法中. <%=java 变量或者表达式 %> ...
- jsp EL表达式和JSTL标签if-else if-else用法
java web javaEE ,jsp EL表达式和JSTL标签if-else if-else四种用法一.条件运算符 ${user.gender==?'男':'女'} 二.if() <c:if ...
- Jsp,EL表达式的入门
Jsp,EL表达式的入门 *Servlet/JSP 是两种动态的WEB资源的两种技术 使用Servlet生成HTML的页面是可以的 response.getWriter("<form ...
- jsp EL表达式 字符串的比较
jsp EL表达式 字符串的比较 跟JavaScript一样,直接使用两个等于号即可:== 代码如下: <c:if test="${highLight == 'visa'}" ...
- JSP EL表达式 获得 request的GET/POST方法
JSP EL表达式 获得 request的GET/POST方法: 不在requestScopse中: <p>得到request的方法</p> <p>pageCont ...
- JSP EL表达式 param、paramValues的使用
JSP EL表达式 param.paramValues的使用: <%@ page language="java" import="java.util.*" ...
- JSP EL表达式使用
JSP EL表达式使用: Servlet: package com.stono.servlet; import java.io.IOException; import java.util.HashMa ...
- JSP EL表达式忽略方法
JSP EL表达式忽略方法: web.xml中,和jsp中:jsp中的等级要高一些: web.xml: <?xml version="1.0" encoding=" ...
- JSP,EL和JSTL
JSP,EL和JSTL 内容待添加...
- jsp学习---mvc模式介绍和el表达式,jstl标签库的使用入门
一.mvc模式介绍 下图是常用的mvc分层模式: 项目中的包命名规则,一般如下: com.amos.domain 封装JavaBean,一般我喜欢用model命名这个包com.amos.dao 封装d ...
随机推荐
- [AT2377] [agc014_e] Blue and Red Tree
题目链接 AtCoder:https://agc014.contest.atcoder.jp/tasks/agc014_e 洛谷:https://www.luogu.org/problemnew/sh ...
- Linux正确的关机方式
本人还未入门,仅看书所得. Linux不建议的是直接关电源.Linux后台可能有多人在工作,直接关电源可能造成文件的毁坏. 正常关机之前应该干两件事:一.查看一下谁在线:二.通知一下别人啦,通知别人可 ...
- Hbase(五) hbase内部原理
一.系统架构 客户端连接hbase依赖于zookeeper,hbase存储依赖于hadoop client: 1.包含访问 hbase 的接口, client 维护着一些 cache(缓存) 来加快对 ...
- [JOI 2015 Final] 分蛋糕 2
link 试题分析 容易发现性质,选择的是一段区间,但是贪心无法去维护这件事情,所以考虑$dp$,且我们只要去设计关于$JOI$的选择. 设$dp(i,j)$为现在要在$[l,r]$区间内选择,然后就 ...
- 【Nowcoder】玩游戏
Portal --> Nowcoder197D Solution 所以说这是一道==纯粹的人类智慧题是这样吗qwq 一开始的时候想sg函数qwq然后发现..好像根本不能拆成独立的子游戏嘛qw ...
- 洛谷P3740 [HAOI2014]贴海报
题目描述 Bytetown城市要进行市长竞选,所有的选民可以畅所欲言地对竞选市长的候选人发表言论.为了统一管理,城市委员会为选民准备了一个张贴海报的electoral墙. 张贴规则如下: electo ...
- Qt ------ 判断运行在何种系统下
#ifdef Q_OS_WIN // Windows上的代码 #endif #ifdef Q_OS_LINUX // Linux上的代码 #endif #ifdef Q_OS_MAC // Mac上的 ...
- crontab 自动执行脚本
crontab -e ================>自动执行某脚本!!!!!!! 1001 ls 1002 cd /home/wwwroot/default/ 1003 ls 1004 cr ...
- bzoj 2844: albus就是要第一个出场 高斯消元
LINK 题意:看题目不如看样例解释.给出有n个数的集合,对这些子集中的数求异或,升序统计所有子集得到的数(重复会被计入),询问一个数x,问这个数出现的第一个位置 思路:在这里要求一个所有可能出现的异 ...
- cin.getline()与getline()
C++中有两个getline函数, cin.getline()与getline() 这两个函数相似,但是 这两个函数分别定义在不同的头文件中. cin.getline()属于istream流,而 ...