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 ...
随机推荐
- 监听input内容改变的oninput与onpropertychange在ie9的bug
在做autocomplate的时候发现,ie9中,剪切.退格.删除不触发oninput事件,而ie9和ie9+已经移除了onpropertychange事件. 只好尝试添加退格.delete.剪切事件 ...
- 【bzoj4002】有意义的字符串
Portal --> bzoj4002 Solution 虽然说这题有点强行但是感觉还是挺妙的,给你通项让你反推数列的这种==有点毒 补档时间 首先有一个东西叫做特征方程,我们可以 ...
- js中字符串全部替换
废话不多说,直接发结果 在js中字符串全部替换可以用以下方法: str.replace(/需要替换的字符串/g,"新字符串") 比如: "yyyy-MM-dd-hh-mm ...
- OpenCV图像变换(仿射变换与透视变换)
仿射变换(affine transform)与透视变换(perspective transform)在图像还原.图像局部变化处理方面有重要意义.通常,在2D平面中,仿射变换的应用较多,而在3D平面中, ...
- 手脱nSPack 2.2
1.PEID查壳 深度扫描下:nSPack 2.2 -> North Star/Liu Xing Ping 2.载入OD,上来就是一个大跳转,F8单步跟下去 0040101B >- E9 ...
- 【转】虚拟机克隆之后,网卡名称从eth0变成eth1之后的解决办法
使用VMware安装了CentOS虚拟机,克隆之后使用service network restart指令来重新启动网络服务时,会看到有eth0网卡不存在的提示. 出现这种现象的原因是,很多Linu ...
- git clone 无权限
错误提示: remote: Coding.net Tips : [You have no permission to access this repo.] fatal: unable to acces ...
- I/O多路复用一些概念
一.前言 在事件驱动模型中,我们说当程序遇到I/O操作时,注册 一个回调到事件循环中,主程序继续做其他事情.当I/O操作完成后,再切换回原来的任务.这就是说I/O操作是和程序本身没关系的,其实I/O操 ...
- 「Linux」VMware安装centos7(一)
1.点击:创建虚拟机 2.选择:自定义(高级),下一步 3.点击:下一步 4.选择:稍后安装操作系统,下一步 5.选择:操作系统和对应的版本,下一步 6.设置:虚拟机名称和安装位置,下一步 7.设置: ...
- McNemar test麦克尼马尔检验
sklearn实战-乳腺癌细胞数据挖掘(博主亲自录视频) https://study.163.com/course/introduction.htm?courseId=1005269003&u ...