Java web后端6 java Bean EL表达式

EL表达式和JSTL概述

在这里插入图片描述

java Bean规范

java中成员变量使用类Integer

private Integer count;

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

java Bean的创建

创建java Bean: BookTest.java

package com.example.elandjstl.bean;public class BookTest {//java中成员变量使用类Integerprivate Integer count;private Boolean isBuy;//无参构造方法public BookTest() {}public BookTest(Integer count, Boolean isBuy) {this.count = count;this.isBuy = isBuy;}public Integer getCount() {return count;}public void setCount(Integer count) {this.count = count;}public Boolean getIsBuy() {return isBuy;}public void setBuy(Boolean buy) {isBuy = buy;}}

在jsp中简单使用Java Bean

1.java代码
在这里插入图片描述

2.jsp:useBean方式:只赋值常量值:整型,小数,字符串等,如果是java的数组之类的直接使用java代码
在这里插入图片描述
总代码:

<%@ page import="com.example.elandjstl.bean.BookTest" %><%--Created by IntelliJ IDEA.User: DQDate: 2021/11/1Time: 14:18To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body>
<%//使用java bean创建//1.java代码,但尽量在jsp中不使用java代码BookTest book1=new BookTest();book1.setBuy(true);book1.setCount(10);out.println(book1.getIsBuy());//输出out.println(book1.getCount());//输出
%><br>
<%--2.jsp:useBean--%>
<%--实例化--%>
<%--id:对象,class:类--%>
<jsp:useBean id="book2" class="com.example.elandjstl.bean.BookTest"/>
<%--为对象属性赋值--%>
<%--name:对象名 property:属性 value:赋值--%>
<jsp:setProperty name="book2" property="count" value="888"/>
<%--获取属性,直接就输出在浏览器了--%>
<jsp:getProperty name="book2" property="count"/></body>
</html>

jsp中定义java bean

1.java 代码
在这里插入图片描述
2.jsp:useBean
在这里插入图片描述
代码:

<%--定义--%>
<%//使用java bean创建//1.java代码,但尽量在jsp中不使用java代码BookTest book1 = new BookTest();book1.setCount(10);%>
<%--2.jsp:useBean--%>
<%--实例化--%>
<%--id:对象,class:类--%>
<jsp:useBean id="book2" class="com.example.elandjstl.bean.BookTest"/>
<%--为对象属性赋值--%>
<%--name:对象名 property:属性 value:赋值--%>
<jsp:setProperty name="book2" property="count" value="888"/>

jsp中获取java bean

1.java代码
在这里插入图片描述
2.jsp表达式
在这里插入图片描述
3.jsp动作标签
不能获取java中定义的对象book1,并且会报错
在这里插入图片描述
4.EL表达式
不能获取java中定义的对象book1,但显示时,不会出现任何内容,不会轻易报错
在这里插入图片描述

访问代码:


<%--访问--%>
<%out.print("java代码方式:<br>");out.print("book1-count:" + book1.getCount() + "<br>");//输出out.print("book2-count:" + book2.getCount() + "<br>");//输出
%>jsp表达式方式:<br>
book1.getCount()=<%=book1.getCount()%><br>
book2.getCount()=<%=book2.getCount()%><br>jsp:getProperty动作元素:<br>
<%--获取属性,直接就输出在浏览器了--%>
<%--<jsp:getProperty name="book1" property="count"/>报错,动作标签不能访问java中定义的对象--%>
<br>
<jsp:getProperty name="book2" property="count"/>EL表达式:<br>
book1-count:${book1.count}<br>
book2-count:${book2.count}<br>

jsp中java bean定义和获取总代码

<%@ page import="com.example.elandjstl.bean.BookTest" %><%--Created by IntelliJ IDEA.User: DQDate: 2021/11/1Time: 14:18To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body>
<%--定义--%>
<%//使用java bean创建//1.java代码,但尽量在jsp中不使用java代码BookTest book1 = new BookTest();book1.setCount(10);%>
<%--2.jsp:useBean--%>
<%--实例化--%>
<%--id:对象,class:类--%>
<jsp:useBean id="book2" class="com.example.elandjstl.bean.BookTest"/>
<%--为对象属性赋值--%>
<%--name:对象名 property:属性 value:赋值--%>
<jsp:setProperty name="book2" property="count" value="888"/><%--访问--%>
<%out.print("java代码方式:<br>");out.print("book1-count:" + book1.getCount() + "<br>");//输出out.print("book2-count:" + book2.getCount() + "<br>");//输出
%>jsp表达式方式:<br>
book1.getCount()=<%=book1.getCount()%><br>
book2.getCount()=<%=book2.getCount()%><br>jsp:getProperty动作元素:<br>
<%--获取属性,直接就输出在浏览器了--%>
<%--<jsp:getProperty name="book1" property="count"/>报错,动作标签不能访问java中定义的对象--%>
<br>
<jsp:getProperty name="book2" property="count"/>EL表达式:<br>
book1-count:${book1.count}<br>
book2-count:${book2.count}<br></body>
</html>

EL表达式

获取Seervlet域对象
在这里插入图片描述
在jsp代码中书写:
在这里插入图片描述

不会轻易报错,只是显示时不会出现任何内容
如:
不能获取java中定义的对象book1,但显示时,不会出现任何内容
在这里插入图片描述
EL表达式的book2.count实际上是调用java bean的getter方法

EL表达式的请求转发案例

ElServlet1.java代码:


@WebServlet(name = "ElServlet1", value = "/ElServlet1")
public class ElServlet1 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setAttribute("username", "dq");request.setAttribute("password", "password");//请求转发RequestDispatcher requestDispatcher = request.getRequestDispatcher("/elServlet1.jsp");requestDispatcher.forward(request,response);}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {}
}

elServlet1.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body>
1、第一种方式获取:<br>
username=<%=request.getAttribute("username")%><br>
password=<%=request.getAttribute("password")%><br>
<hr>2、El表达式获取域对象:<br>
<%--字符串--%>
<%--输出结果:
El表达式获取域对象:
username=username
password=password
--%>
username=${"username"}<br>
password=${"password"}<br><%--输出结果:
username=dq
password=password
--%>
username=${username}<br>
password=${password}<br>等效于:
<%--输出
username=dq
password=password
--%>
username=${requestScope.username}<br>
password=${requestScope.password}<br>
</body>
</html>

EL表达式的标识符

所有自己命名的地方
命名规则:
1.不能以数字开头;
2.不能是EL中的保留字,如and、or、gt;
3.不能是EL隐式对象,如pageContext;
4.不能包含单引号(’)、双引号(")、减号(-)和正斜线等特殊字符。

EL表达式的保留字/关键字

保留字就是编程语言里事先定义好并赋予了特殊含义的单词,和其他语言一样,EL表达式中也定义了许多保留字,如false、not等:

and,or,not:与或非
ne不等于,eq等于
le小于 ge大于
lt小于等于 gt大于等于
在这里插入图片描述

EL表达式的常量

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
说明:
在这里插入图片描述

EL表达式的运算符

点运算符

取对象的属性,使用.而不是get
在这里插入图片描述
在这里插入图片描述

方括号运算符

.运算符不能访问具有特殊字符的属性
方括号访问数组对象的元素
在这里插入图片描述

在这里插入图片描述
使用案例1:
定义:
在这里插入图片描述
输出:
在这里插入图片描述
使用案例2:
在这里插入图片描述

算术运算符

在这里插入图片描述
在这里插入图片描述

比较运算符

在这里插入图片描述
在这里插入图片描述

逻辑运算符

在这里插入图片描述

empty运算符

在这里插入图片描述
案例:返回结果为true或false
在这里插入图片描述

条件运算符

在这里插入图片描述

注意

在这里插入图片描述
在这里插入图片描述

EL表达式运算符总结

在这里插入图片描述
代码案例:
在这里插入图片描述

<jsp:useBean id="book" class="com.example.elandjstl.bean.BookTest"/>
<jsp:setProperty name="book" property="count" value="77"/>el点运算符:${book.count}<br>
el方括号运算符:${book["count"]}<br>
el算术运算符:-3/1=${-3/1}<br>
el比较运算符:-3>1=${-3>1}<br>
el逻辑运算符:${(3-2==1)&&(8+5==13)}<br>
el empty:${empty book.count}<br>
el三目运算符:${("if"=="IF")?"great":"bad"}<br><%--输出
el点运算符:77
el方括号运算符:77
el算术运算符:-3/1=-3.0
el比较运算符:-3>1=false
el逻辑运算符:true
el empty:false
el三目运算符:bad
--%>

EL表达式的隐式对象

在这里插入图片描述

pageContext对象

在这里插入图片描述
案例:
在这里插入图片描述
代码:

el隐式对象:pageContext
获取当前项目的路径:${pageContext.request.contextPath}<br>
获取请求的URL:${pageContext.request.requestURI}<br/><%--输出:
el隐式对象:pageContext 获取当前项目的路径:/ELAndJSTL_war_exploded
获取请求的URL:/ELAndJSTL_war_exploded/elTest3.jsp
--%>

web域对象

在这里插入图片描述
案例:
在这里插入图片描述
代码:

el隐式对象:web域相关的对象:<br/>
<%//设置不同web域下的属性pageContext.setAttribute("page","pageContext");request.setAttribute("request","request");session.setAttribute("session","session");application.setAttribute("application","application");
%>
<%--通过Scope获取域对象的属性--%>
<%--${page}:可以直接这样,从范围小的开始搜索;
pageScope这样的web域对象是为了避免有重名的,因为不同域下的有重名的就会先获取最小范围的--%>
pageScope.page=${pageScope.page}=====${page}<br/>
requestScope.request=${requestScope.request}=====${request}<br/>
sessionScope.session=${sessionScope.session}=====${session}<br/>
applicationScope.application=${applicationScope.application}====${application}<br/><%--输出:
el隐式对象:web域相关的对象:
pageScope.page=pageContext=====pageContext
requestScope.request=request=====request
sessionScope.session=session=====session
applicationScope.application=application====application
--%>

param和paramValues

在这里插入图片描述

在这里插入图片描述
param案例:获取表单的提交的数据并显示
浏览器显示:
在这里插入图片描述
jsp代码:
在这里插入图片描述

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body><%--自己跳转到自己--%>
<form action="elTest4.jsp" method="get"><br/>name:<input type="text" name="name"><br/>age:<input type="text" name="age"><br/>age:<input type="text" name="age"><br/>love:<input type="text" name="love"><br/><%--&nbsp;空格--%><input type="submit" value="提交"/>&nbsp;&nbsp;<input type="reset" value="重填"><hr/><%--通过param.name:获取表单提交的值--%>name:${param.name}<br/><%--paramValues.age[0]:获取name名称相同的不同对象--%>age1:${paramValues.age[0]}<br/>age2:${paramValues.age[1]}<br/>love:${param.love}<br/></form></body>
</html>

cookie对象

在这里插入图片描述
Cookie案例:
在这里插入图片描述
代码:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body>
<%--el表达式:Cookie--%>
<%//添加Cookieresponse.addCookie(new Cookie("username","dq"));
%>
<%--等同于: request.getCookies()--%>
获取Cookie对象:${cookie.username}<br/><%--等同于:cookie.getName()--%>
获取Cookie对象的名称:${cookie.username.name}<br/><%--等同于: cookie.getValue()--%>
获取Cookie对象的值:${cookie.username.value}<br/><%--输出:
获取Cookie对象:javax.servlet.http.Cookie@7a01e62a
获取Cookie对象的名称:username
获取Cookie对象的值:dq
--%>
</body>
</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/446305.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python根须系统斜杠_深入浅出Python中的os模块

「Author&#xff1a;Runsen」当初学Python的时候&#xff0c;把一些标准库和第三方开源库学的七零八落&#xff0c;不成系统&#xff0c;正好趁这个机会来系统的整理一下&#xff0c;先从Python常用的标准库os开始吧。osOS模块简单的来说它是一个Python的系统编程的操作模块&a…

密码学专题 随机数文件

无论使用OpenSSL的指令还是其API&#xff0c;随机数文件都是会经常碰到的一个概念。大部分密码算法的安全性都跟随机数的好坏相关&#xff0c;所以一个成功的密码学应用软件&#xff0c;对随机数的处理是不能随便的。OpenSSL虽然没有提供很完美的随机数生成程序&#xff0c;但是…

Java web后端7JSTL

概括 下载jstl的jar包 官网&#xff1a;https://mvnrepository.com/ 网址1&#xff1a;https://search.maven.org/ 在pomxml中插入依赖&#xff1a; <dependency><groupId>taglibs</groupId><artifactId>standard</artifactId><version>1…

python输入程序_python程序的输入输出(acm的几个小程序)

#!/usr/bin/env python#codingutf-8 a[]for x inraw_input().split(): a.append(int(x))print sum(a) 下面的代码只有一行&#xff0c;&#xff0c;可惜不是我想出来的&#xff01;&#xff01;&#xff01;&#xff01;&#xff1a; print sum(int(x) for x in raw_input().sp…

密码学专题 口令输入的方式

虽然口令的安全性很值得担忧&#xff0c;但是口令在OpenSSL中是经常使用的&#xff0c;这是没有办法替代的一种简易的保护数据的方法。OpenSSL中使用口令的地方很多&#xff0c;比如密钥的加密和解密&#xff0c;等等。OpenSSL的指令提供了多种灵活的口令输入方法&#xff0c;但…

Python学习14 模块和包

模块 公共类、函数都可以放在独立的文件中&#xff0c;这样其他多个程序都可以使用&#xff0c;而不必把这些公共性的类、函数等在每个程序中复制一份&#xff0c;这样独立的文件就叫做模块&#xff0c;它们的扩展名为.py 标准库中的模块 使用help查看模块 代码&#xff1a; …

python语句分为_python以什么划分语句块

语句块是在条件为真&#xff08;条件语句&#xff09;时执行或者执行多次&#xff08;循环语句&#xff09;的一组语句&#xff1b;在代码前放置空格来缩进语句即可创建语句块&#xff0c;语句块中的每行必须是同样的缩进量&#xff1b;&#xff08;推荐学习&#xff1a;Python…

Python学习15 正则表达式1

网址 正则表达式测试网址&#xff1a;https://regex101.com/ 概述 正则表达式&#xff1a; 正则表达式(Regular Expression)是一种文本模式&#xff0c;包括普通字符&#xff08;例如&#xff0c;a 到 z 之间的字母&#xff09;和特殊字符&#xff08;称为"元字符"…

STL源码剖析 空间配置器 查漏补缺

ptrdiff_t含义 减去两个指针的结果的带符号整数类型ptrdiff_t (Type support) - C 中文开发手册 - 开发者手册 - 云社区 - 腾讯云 std::set_new_handler&#xff08;&#xff09;函数的理解 关于set_new_handler的理解_wck0617-CSDN博客new分配内存的时候 如果分配的空间不…

python每天定时9点执行_python定时器每天订时执行的实例方法

python定时器,实现每天凌晨3点执行的方法 如下所示&#xff1a;Created on 2018-4-20 例子:每天凌晨3点执行func方法import datetime import threading def func(): print("haha") #如果需要循环调用&#xff0c;就要添加以下方法 timer threading.Timer(86400, fun…

Python学习16 正则表达式2 re模块

re 模块 re 模块&#xff1a; Python的 re 模块实现了正则表达式处理的功能。 导入re模块后&#xff0c;使用findall、search函数可以进行匹配 查找&#xff1a;match和search 多个匹配上的&#xff0c;也只会返回第一个匹配上的 re.match()&#xff1a; 需要特别注意的是&…

STL源码剖析 内存基本处理工具 初始化空间的五个函数

初始化空间的五个函数构造函数 construct()析构函数 destroy()剩余三个底层函数 和 高层函数之间的对应关系如下uninitialized_copy() 对应 copy()uninitialized_fill() 对应 fill()uninitialized_fill_n() 对应 fill_n()使用<memory>使用上述三个底层函数 uninitiali…

单基因gsea_筛到5分的核心基因以后你可以怎么做?

这一次我们从一些已经发表的文章拆解&#xff0c;我们来看看&#xff0c;你找到了一个核心基因以后&#xff0c;你可以怎么做呢&#xff1f;我们就不说那么多废话了&#xff0c;直接用几篇文章的解读来带着大家领会一下如何去进行下一步的分析。Case1&#xff1a;预后标志物免疫…

安卓 原生okhttp使用get与post获取网络数据

网址 https://square.github.io/okhttp/ 配置 依赖 在module的build.gradle中&#xff1a; implementation com.squareup.okhttp3:okhttp:3.14.7implementation com.squareup.okio:okio:1.17.5AndroidManifest.xml <uses-permission android:name"android.permissi…

STL源码剖析 迭代器的概念和traits编程技法

迭代器&#xff1a;依序巡防某个聚合物(容器)所含的各个元素&#xff0c;但是不需要暴露这个聚合物的内部表述方式核心思想&#xff1a;将容器和算法分开&#xff0c;彼此独立设计容器和算法的泛型化&#xff0c;均可以使用模板&#xff0c;使用迭代器连接容器和算法例子 templ…

.sql文件如何执行_干货|一条SQL查询语句是如何执行的

作者&#xff1a;wanber链接&#xff1a;https://blog.nowcoder.net/n/9e120e8f1314466bb44fe706b283dc20

STL源码剖析 5中迭代器型别

最常使用的5种迭代器的型别 为 value_type、difference_type、pointer、reference、iterator_category。如果想要自己开发的容器和STL进行适配&#xff0c;就需要定义上述5种类型 iteraor_traits 必须针对传入的型别为 pointer 或者 pointer-to-const设计偏特化版本 template &…

Python学习16 正则表达式3 练习题

用户名匹配 1.用户名匹配&#xff1a;由数字、大小写字母、下划线_、中横线-组成&#xff0c;长度为6-12位&#xff0c;不能以数字开头。 import re usernameab578_-SDF resultre.search(^[a-zA-Z_-][0-9a-zA-Z_-]{5,12}$,username) print(result)邮箱 2.验证输入的邮箱&…

加载tf模型 正确率很低_深度学习模型训练全流程!

↑↑↑关注后"星标"Datawhale每日干货 & 每月组队学习&#xff0c;不错过Datawhale干货 作者&#xff1a;黄星源、奉现&#xff0c;Datawhale优秀学习者本文从构建数据验证集、模型训练、模型加载和模型调参四个部分对深度学习中模型训练的全流程进行讲解。一个成…

Python学习17 Turtle库绘图

学习网址&#xff1a;https://docs.python.org/zh-cn/3/library/turtle.html Turtle库 Turtle库是Python语言中一个很流行的绘制图像的函数库&#xff0c;一个小乌龟&#xff0c;在一个横轴为x、纵轴为y的坐标系原点&#xff08;画布中心&#xff09;&#xff0c;(0,0)位置开…