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 ...
随机推荐
- 关于监听与控制设备旋转全解析(UIDeviceOrientationDidChangeNotification)
一类情况: 初始化app的方向,比如只支持横屏或者竖屏.下面举例只支持竖屏的案例 在app的属性里面手动设置 上面标注了该app支持的方向种类,要是在app里支持Portrait方向,还需要添加以下代 ...
- 代码收藏系列--javascript--移动端技巧
JS判断是否是手机端访问: var is_mobi = navigator.userAgent.toLowerCase().match(/(ipod|iphone|android|coolpad|mm ...
- Java Socket UDP编程
package com; import java.io.IOException; import java.net.*; /** * UDP Client * * Created by Administ ...
- php开启压缩gzip
php服务的开启压缩,节省带宽 看是否开启压缩的网站 http://www.cnblogs.com/GaZeon/p/5421906.html 找到php.ini,修改下面的 ,重启php-fpm z ...
- 对于redis框架的理解(二)
之前梳理过redis main函数主体流程 大体是 initServerConfig() -> loadServerConfig() -> daemonize() -> initSe ...
- Android的静默安装
原文 Android的静默安装似乎是一个很有趣很诱人的东西,但是,用普通做法,如果手机没有root权限的话,似乎很难实现静默安装,因为Android并不提供显示的Intent调用,一般是通过以下方式安 ...
- UVA 10479 The Hendrie Sequence
https://vjudge.net/problem/UVA-10479 打表找规律: 1.根据n可以确定第n项在上表中第i行 2.减去前i-1行,就得到了n在第i行的第j个 3.第i行的规律:1个i ...
- CF766 ABCDE
LINK A 找最长非公共子序列..如果两串不是完全相同 显然就是最长的那个 /** @Date : 2017-04-15 19:52:34 * @FileName: 766A.cpp * @Plat ...
- Linux高级编程--04.GDB调试程序(入门概述)
GDB概述 GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具.或许,各位比较喜欢那种图形界面方式的,像VC.BCB等IDE的调试,但如果你是在UNIX平台下做软件,你会发现GDB这个调试 ...
- Spring 5.0
Spring 5.0都有什么新功能? 1.最低要求支持JDK8+, J2EE 7+. 2.移除了一些包.类及方法. 3.核心功能加强:全面应用jdk8并兼容jdk9等. 4.SpringMVC:支持s ...