day24-服务器端渲染技术02
charset=UTF-8″ language=”java” %>h3>%=request.getAttribute(“name”)%>/h3>“<:EL表达式全称:Expression Language,是表达式语言EL表达式主要是代替jsp页面的表达式脚本
EL表达式输出数据时,比jsp的表达式脚本简洁
EL表达式基本语法:${key}
底层其实走的还是jsp表达式脚本,可以理解为就是一个语法糖
11.2EL表达式快速入门
el_qs.jsp:
el表达式的快速入门
el表达式的快速入门
1.jsp 表达式脚本
名字:
2.el 表达式
名字:${name}
https://1rscc.1rsc.com/kaibai02/2023/04/20230317113534167902413455965.png
注意:
EL表达式在输出null时,输出的是空串””
jsp脚本在输出null时,输出的是 “null” 字符串
https://1rscc.1rsc.com/kaibai02/2023/04/20230317113534167902413426652.png
11.3EL常用输出形式
EL表达式常用输出Bean的普通属性,数组属性,List集合属性和map集合属性
应用实例
book.java:
package com.li.entity;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
public class Book {
private String name;//书名
private String[] writer;//作者
private List reader;//读者
private Map topics;//评价
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String[] getWriter() {
return writer;
}
public void setWriter(String[] writer) {
this.writer = writer;
}
public List getReader() {
return reader;
}
public void setReader(List reader) {
this.reader = reader;
}
public Map getTopics() {
return topics;
}
public void setTopics(Map topics) {
this.topics = topics;
}
@Override
public String toString() {
return "Book{" +
"name='" + name + '\'' +
", writer=" + Arrays.toString(writer) +
", reader=" + reader +
", topics=" + topics +
'}';
}
}
el_output.jsp:
el表达式输出数据演示
el表达式输出数据演示
readers = new ArrayList();
readers.add("小李");
readers.add("小王");
book.setReader(readers);
//创建topics
HashMap topics = new HashMap();
topics.put("topic1", "这是我看过的最好的动画片");
topics.put("topic2", "不错的电影~~");
book.setTopics(topics);
//把book放入到request域对象中
request.setAttribute("bookKey", book);
%>
book对象:${bookKey}
book.name=${bookKey.name}
book.writer=${bookKey.writer}
第一个作者book.writer=${bookKey.writer}
book.readers=${bookKey.reader}
第二个读者book.readers=${bookKey.reader}
book.topics=${bookKey.topics}
第一个评价=${bookKey.topics.get("topic1")}
第一个评价=${bookKey.topics["topic1"]}
https://1rscc.1rsc.com/kaibai02/2023/04/20230317113534167902413483110.png
11.4EL运算操作符
EL的运算操作符和java基础的操作符在概念和用法上都是一样的,只是形式上有些变化。
基本语法:${运算表达式}
关系运算
https://1rscc.1rsc.com/kaibai02/2023/04/20230317113535167902413545691.png
逻辑运算
https://1rscc.1rsc.com/kaibai02/2023/04/20230317113540167902414053274.png
算术运算
https://1rscc.1rsc.com/kaibai02/2023/04/20230317113541167902414195570.png
应用实例
el运算符
el运算符
num1+num2=${num1+num2}
num1>num2?=${num1>num2}
https://1rscc.1rsc.com/kaibai02/2023/04/20230317113541167902414194513.png
11.5EL的empty运算
empty运算可以判断一个数是否为空,如果为空,返回true,否则返回false
以下几种情况为空:
值为null
值为空串时
值是Object类型数据,但长度为零时
list集合,元素个数为零时
map集合,元素个数为零时
应用实例
el empty的运算
());//为空的list集合
request.setAttribute("k5", new HashMap());//为空的map集合
%>
k1是否为空=${empty k1}
k2是否为空=${empty k2}
k3是否为空=${empty k3}
k4是否为空=${empty k4}
k5是否为空=${empty k5}
https://1rscc.1rsc.com/kaibai02/2023/04/20230317113542167902414210628.png
11.6EL的三元运算
表达式1?表达式2:表达式3
如果表达式1的值为真,返回表达式2的值,反之返回表达式3的值
https://1rscc.1rsc.com/kaibai02/2023/04/20230317113542167902414291602.png
11.7EL的11个隐含/内置对象
https://1rscc.1rsc.com/kaibai02/2023/04/20230317113544167902414435796.png
下面以pageScope,requestScope,sessionScope,applicationScope四个常用的隐含对象为例子演示。
演示el常用的四个隐含对象(域对象)
演示el的四个常用的隐含对象(域对象)
演示el的四个常用的隐含对象(域对象)
1.jsp脚本方式获取
2.el方式来获取域对象的数据
request域中的k1=${requestScope.k1}
pageContext域中的k1=${pageScope.k1}
session域中的k1=${sessionScope.k1}
application域中的k1=${applicationScope.k1}
https://1rscc.1rsc.com/kaibai02/2023/04/20230317113545167902414520342.png
11.7.1pageContext对象的使用
我们可以通过pageContext.request.xxx来获取和http协议相关的信息:
通过request对象来获取和HTTP协议相关的数据:
request.getScheme() 它可以获取请求的协议
request.getServerName() 获取请求的服务器 ip 或域名
request.getServerPort() 获取请求的服务器端口号
getContextPath() 获取当前工程路径
request.getMethod() 获取请求的方式(GET 或 POST)
request.getRemoteHost() 获取客户端的 ip 地址
session.getId() 获取会话的唯一标识
例子
https://1rscc.1rsc.com/kaibai02/2023/04/20230317113545167902414525720.png
pageContext 对象的使用
pageContext 对象的使用
协议: ${ pageContext.request.scheme }
服务器 ip:${ pageContext.request.serverName }
服务器端口:${ pageContext.request.serverPort }
工程路径:${ pageContext.request.contextPath }
请求方法:${ pageContext.request.method }
客户端 ip 地址:${ pageContext.request.remoteHost }
会话 id :${ pageContext.session.id }
使用 jsp 表达式脚本获取如上信息
ip 地址:
会话 id :
...
使用 el 表达式形式获取信息-简化写法
ip 地址: ${req.remoteHost}
获取请求方法: ${req.method}
客户端 ip 地址:${ req.remoteHost }
...
https://1rscc.1rsc.com/kaibai02/2023/04/20230317113545167902414524656.png
12.JSTL 12.1JSTL介绍
JSTL(Java server pages standarded tag library,即JSP标准标签库。
EL表达式是为了替换jsp中的表达式脚本,JSTL是为了替换代码脚本,这样可以使jsp页面变得更加简洁。
JSTL由五个标签库组成:
https://1rscc.1rsc.com/kaibai02/2023/04/20230317113546167902414632058.png
使用JSTL,需要导入相关的jar包:
下载连接:https://tomcat.apache.org/download-taglibs.cgi
https://1rscc.1rsc.com/kaibai02/2023/04/20230317113546167902414637167.png
12.2快速入门
将两个jar包直接复制粘贴到web应用程序的WEB-INF\lib目录下,add as library
https://1rscc.1rsc.com/kaibai02/2023/04/20230317113546167902414664992.png
在jsp页面的引入标签,要放在文件第一行
https://1rscc.1rsc.com/kaibai02/2023/04/20230317113547167902414759473.png
导入jstl jar包后,要重新发布web工程,否则不识别jstl
jstl的快速入门
jstl的快速入门
2){
out.println("xxx")
}
--%>
2}">
10>2成立~~~
https://1rscc.1rsc.com/kaibai02/2023/04/20230317113547167902414729075.png
12.3core核心库 12.3.1标签
例子:
set标签可以往域中保存数据
等价于 域对象.setAttribute(key,value);
scope 属性设置保存到哪个域
page表示PageContext域(默认值)
request表示Request域
session表示Session域
application表示ServletContext域
var 属性设置 key 是什么
value 属性设置值
例子
c:set标签的使用
c:set标签的使用
c:set-name的值:${requestScope.name}
https://1rscc.1rsc.com/kaibai02/2023/04/20230317113547167902414712686.png
12.3.2标签
例子:2″>hello
if标签用来做if判断
test属性表示判断的条件(用EL表达式输出)
例子
c:if标签使用
c:if标签使用
num2}">
${num1}>${num2}
https://1rscc.1rsc.com/kaibai02/2023/04/20230317113547167902414730862.png
12.3.3标签
介绍:多路判断。跟switch…case…default非常接近
例子
c:choose标签的使用
request-> session->application
--%>
k1=${k1}
c:choose标签的使用
80}">
${scope}-成绩优秀!
60}">
${scope}-成绩及格!
${scope}-成绩不及格,继续努力!
https://1rscc.1rsc.com/kaibai02/2023/04/20230317113547167902414762911.png
12.3.4标签
介绍:c:forEach标签用来遍历输出,主要有4种形式
普通遍历输出i到j
遍历数组
遍历Map
遍历List
例子
c:forEach标签
c:forEach标签
第一种遍历方式:从i到j
[*]排名=${i}
第二种遍历方式:遍历数组
运动名称=${sp}
第三种遍历方式:遍历Map
map = new HashMap();
map.put("key1", "北京");
map.put("key2", "上海");
map.put("key3", "天津");
request.setAttribute("cities", map);
%>
城市信息=${city.key}--${city.value}
第四种遍历方式:遍历List
monsters = new ArrayList();
monsters.add(new Monster(100, "小妖怪", "巡山的"));
monsters.add(new Monster(200, "大妖怪", "做饭的"));
monsters.add(new Monster(300, "老妖怪", "打扫位置的"));
request.setAttribute("monsters", monsters);
%>
妖怪信息=${monster.id}-${monster.name}-${monster.skill}
https://1rscc.1rsc.com/kaibai02/2023/04/20230317113547167902414754156.png
13.练习
需求分析:使用jsp+servlet+jstl+el完成查询-显示案例,需求如下:
点击超链接,可以显示所有的妖怪信息
要求显示的数据在servlet中准备,并放入到request域对象中
扩展,如果要求增加根据薪水sal条件过滤,怎么处理?
https://1rscc.1rsc.com/kaibai02/2023/04/20230317113547167902414747286.png
https://1rscc.1rsc.com/kaibai02/2023/04/20230317113547167902414790346.png
练习
思路:
https://1rscc.1rsc.com/kaibai02/2023/04/20230317113548167902414879598.png
总结
以上是真正的电脑专家为你收集整理的day24-服务器端渲染技术02的全部内容,希望文章能够帮你解决所遇到的问题。
如果觉得真正的电脑专家网站内容还不错,欢迎将真正的电脑专家推荐给好友。
页:
[1]