ch10.表达式语言

第三章 C语言运算符与表达式练习题 第三章 运算符与表达式练习题 一、单项选择题 1.下列数据中属于“字符串常量”的是( )。 A.”a” B. {ABC} C. ’abc\0’ D. ’a’ 2.下列数据中属于“字符串常量”的是( )。 A.ABC B. “ABC” C. ’abc’ D. ’a’ 3. 在PC机中,’\n’在内存占用的字节数是( )。 A. 1 B. 2 C. 3... 阅读详情

表达式语言(EL)可以方便的访问标志位(JSP中有四种标志位 :page(pageContext), request, session, application)中的属性,可以避免许多scriptlet代码。

在JSP中,只有三种代码可以出现:

  • 接收属性
  • 判断语句
  • 迭代输出
但是开发中这点很难做到,因为JSP的输出要接收VO对象,所以,要通过表达式来避免导入vo包

表达式语言

四种标识为就是四种属性范围,可以直接通过表达式语言访问:
语法格式:
${属性名称}
表达式语言的主要功能就是进行内容的显示,通过不同内置对象的设置,表达式语言可以输出不同的内容:
内置对象的定义:

本图来自《Java Web 开发实战经典 --基础篇》视频

如果在不同的属性范围中保存了同名属性,则EL的查找范围就是 page --> request ---> session--->application,这是就可以通过内置对象区分四种属性
代码如下:ELdemo.jsp
<%@ page contentType = "text/html" pageEncoding="GBK"%>

<html>
  <head>
    
    <title>My JSP 'ELdemo.jsp' starting page</title>

  </head>
  
  <body>
  <%
  	pageContext.setAttribute("info", "page属性");
  	request.setAttribute("info", "request属性") ;
  	session.setAttribute("info", "session属性");
  	application.setAttribute("info", "application属性");	
  %>
  <h3>${pageScope.info}</h3>
  <h3>${requestScope.info}</h3>
  <h3>${sessionScope.info }</h3>
  <h3>${applicationScope.info }</h3>
  </body>
</html>
显示结果:


接收请求参数:
这个功能与request.getParameter()类似,语法如下:
${param.参数名称}
<h3><%=request.getParameter("ref") %></h3>
<h3>${param.ref }</h3>

也可以通过${paramValues.参数名称}
接收一组参数

集合操作

集合有 Collection(List, Set), Map, Iterator
所有的集合都要通过Iterator方法进行输出,而且List和Set的本质区别在于List接口对Collection接口进行扩充,而Set接口并没有扩充
Map每次保存一对内容,而且都是用Map.Entry接口对象

在MVC中应用:
在:org.thystar.eldemo.vo包中写入Dept.java
package org.thystar.eldemo.vo;

public class Dept {
	private int deptno;
	private String dname;
	private String loc;
	public int getDeptno() {
		return deptno;
	}
	public void setDeptno(int deptno) {
		this.deptno = deptno;
	}
	public String getDname() {
		return dname;
	}
	public void setDname(String dname) {
		this.dname = dname;
	}
	public String getLoc() {
		return loc;
	}
	public void setLoc(String loc) {
		this.loc = loc;
	}
	
}

在:org.thystar.eldemo.servlet包中写入ELServlet.java
package org.thystar.eldemo.servlet;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.thystar.eldemo.vo.Dept;

public class ELServlet extends HttpServlet {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	/**
	 * The doGet method of the servlet. <br>
	 *
	 * This method is called when a form has its tag value method equals to get.
	 * 
	 * @param request the request send by the client to the server
	 * @param response the response send by the server to the client
	 * @throws ServletException if an error occurred
	 * @throws IOException if an error occurred
	 */
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		List<Dept> all = new ArrayList<Dept>();
		Dept dept = null;
		dept = new Dept();
		dept.setDeptno(1);
		dept.setDname("xxxx");
		dept.setLoc("yyyy");
		all.add(dept);
		dept = new Dept();
		dept.setDeptno(2);
		dept.setDname("xxxxxx");
		dept.setLoc("yyyyyyyy");
		all.add(dept);
		request.setAttribute("alldept", all);
		request.getRequestDispatcher("ELdemo.jsp").forward(request, response);
		
	}

	/**
	 * The doPost method of the servlet. <br>
	 *
	 * This method is called when a form has its tag value method equals to post.
	 * 
	 * @param request the request send by the client to the server
	 * @param response the response send by the server to the client
	 * @throws ServletException if an error occurred
	 * @throws IOException if an error occurred
	 */
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		this.doGet(request, response);
	}

}

在:ELdemo.jsp中写入
<%@ page contentType = "text/html" pageEncoding="GBK" import = "java.util.*"%>

<html>
  <head>
    
    <title>My JSP 'ELdemo.jsp' starting page</title>

  </head>
  
  <body>
  <%
  	List all = (List)request.getAttribute("alldept");
  	if(all != null){
   %>
   		<table border = "1" width = "90%">
   			<tr>
   				<td>部门编号</td>
   				<td>部门名称</td>
   				<td>部门位置</td>
   			</tr>
   <%
   		Iterator iter = all.iterator();
 			while(iter.hasNext()){
 				pageContext.setAttribute("dept", iter.next());
    %>
    		<tr>
    			<td>${dept.deptno }</td>
    			<td>${dept.dname }</td>
    			<td>${dept.loc }</td>
    		</tr>
    <%
    		}
    %>
     	</table>
    <%
     	}
    %>
  </body>
</html>

结果如下:


运算符:

简单的运算符可以用表达式完成,复杂的应该交给Servlet完成
主要用到的是三目运算符:
${  ? : }


JSP应用开发详解第三版 源代码 ch10 立即下载

相关推荐

Windows下Fortran调用CGNS库的完整踩坑实录:从HDF5、CMake到VS2019+IVF2020的保姆级配置

本文详细记录了在Windows环境下使用Fortran调用CGNS库的完整配置过程,涵盖HDF5安装、CMake配置、VS2019与IVF2020集成等关键步骤。通过实战经验分享,帮助开发者解决常见编译错误和链接问题,实现高效的Fortran与CGNS库集成。

weixin_28707739的博客 349

c语言中用于判断ch是否是字符的表达式,最新C语言复习题集资料

精品文档C语言复习题集一、 判断题1-1、C语言程序是从源文件的第一条语句开始执行的。正确答案:F1-2、C语言中的变量名不区分大小写。正确答案:F1-3、若变量定义为double x;,则x % 2是符合C语言语法的表达式.正确答案:F1-4、如果变量已经正确定义,则表达式fahr ++ 与fahr + 1等价。正确答案:F1-5、以下C语言表达式的值为“真”。 'D' - 'A' == 'd'...

weixin_42489714的博客 5375

Flutter加载本地HTML的优雅解决方案:轻松实现富文本展示

通过以上步骤,我们实现了Flutter加载本地HTML的完整流程,并简单介绍了如何通过WebView与HTML页面进行交互。HTML文件作为一种灵活、易维护的富文本展示方式,能有效提升Flutter应用的内容呈现能力。这种方法在展示新闻、资讯或帮助文档等内容时非常有用,能够让开发者灵活调整内容的样式和排版。希望这篇文章能对你在Flutter开发中的HTML加载有所帮助!

四楼没电梯的专栏 3641

ch不是小写英文字母的c语言代码,c语言院考习题整理

马上c语言考试了,写一篇博客根据考试范围对应了一下之前微信里老师发过的习题(考试会有很多原题),把题目整理一下,也帮助一下身边的小伙伴。欢迎评论交流。一、考试范围 二、各章微信习题整理第一章习题与知识点1.一个c语言的执行总是从main函数开始,也从main函数结束。✔2.c语言本身没有输入输出语句。✔(c语言的输出输出是调用库函数中提供的函数,例如printf和scanf两个函数.)3.在c程序...

weixin_31554959的博客 3595

【ros】ROS1的安装和相关使用方法

主要学习ros相关内容

Greary的博客 2376

从零到一:手把手教你用Python+LangChain搭建企业级RAG知识库(附避坑指南)

本文为开发者提供了一份详尽的实战指南,手把手教你使用Python和LangChain框架从零构建企业级RAG知识库。内容涵盖环境搭建、文档处理、向量化检索、提示工程及生产部署等核心环节,并重点分享了文档分割、检索优化等关键避坑经验,旨在帮助读者打造稳定、高效且易于维护的智能知识中枢。

weixin_29058331的博客 398

C语言知识串讲(CH2)

数据类型、运算符与表达式 掌握: 1.C的基本数据类型; 2.常量与变量:常量和符号常量、变量; 3.整型数据:整型常量、整型变量; 4.实型数据:实型常量、实型变量; 5.字符型数据:字符常量、字符变量,字符串常量,字符数据在内存中的存储形式及其使用方法; 6.变量赋初值; 7.各类数值型数据间的混合运算,算术运算符和算术表达式,赋值运算符和赋值表达式,逗号运算符和逗号表达式。 1)C语言的标识符,例:以下不正确的C语言标识符是(123abc) 2)2进制、8进制、10进制、16进制的表示方法及其转换,如

亚洲彳亍女的博客 1585

prplOS amx-fxgi调试-订阅subscribe

本文分析了prplOS中amx-fxgi订阅功能(subscribe)的实现与调试过程。通过梳理订阅流程发现,默认订阅失败主要由于acl规则限制导致。文章详细介绍了订阅的两个关键步骤:建立GET长连接和POST设置订阅路径,并通过修改代码绕过acl验证成功实现订阅功能。最终验证了在同一连接下订阅多个路径及实时接收状态更新的可行性,有效降低了设备查询负载。该方案为prplOS的实时数据监控提供了优化思路。

四儿家的小祖宗的博客 329

c语言中printf( %%a a),C语言预赛练习之-数据类型运算符及表达式.doc

C语言预赛练习之-数据类型运算符及表达式C语言预赛练习之-数据类型运算符及表达式1、一个C语言的执行是从:()A) 本程序的主函数开始,到本程序的主函数结束B) 本程序的第一个函数开始,到本程序的最后一个函数结束C) 本程序的主函数开始,到本程序的最后一个函数结束D) 本程序的第一个函数开始,到本程序的主函数结束A2. 以下叙述正确的是:A) 在C程序中,主函数必须位于程序的最前面B) 在C程序中...

weixin_32494473的博客 428

学Simulink--基于风力发电系统的场景实例:海上风电场在复杂海况下的动态响应仿真

本实例将创建一个针对海上风电场在复杂海况下的动态响应模型。该模型不仅考虑了不同风速条件的影响,还引入了波浪和水流对风机塔架及基础结构的影响。通过仿真验证系统的有效性,并探索最佳控制参数设置以提高整体性能和稳定性。本教程展示了如何在Simulink中实现一个海上风电场在复杂海况下的动态响应仿真模型,并分析其性能。通过这种方式,我们不仅可以验证所提出的技术手段在提高海上风电场稳定性和效率方面的有效性,还能进一步探索优化参数以适应特定的应用场景。

xiaoheshang_123的博客 167

YOLOv11目标检测模型性能评价指标详解,涉及混淆矩阵、F1-Score、IoU、mAP、参数量、计算量等,一文打尽所有评价指标

本文主要讲解的是计算机视觉网络模型的性能评价指标,这是每一篇论文中都需要展示的内容。熟悉每一个评价指标也能够帮助我们在训练和改进模型过程中,更好的观察模型的变化效果。

Limiiiing的博客 8410

C#要点简记_CH6-CH10

Lamda箭头=> 在C#6中引入 static <returnType> <FunctionNane>(double Myval1, double MyVal2) => Myval1 * MyVal2; 直接返回两个数相乘的结果 ref关键字 对参数进行引用传递。在函数定义和调用时都要在参数面前使用ref。 使用时注意两个点: 不能引用c...

C__M__H的博客 225

Unreal5 从入门到精通之 如何实现 离线语音识别

本文介绍了如何使用离线语音识别插件 Offline Speech Recognition 进行本地语音转文本处理。该插件支持离线运行,用户可以通过下载并运行语言服务器(如 Vosk)来处理语音数据。文章详细说明了如何设置语言服务器、下载语言模型,并在虚幻引擎(UE)项目中配置麦克风和语音捕获。此外,还介绍了如何将 SoundWave 作为输入,以及如何通过节点将语音数据发送到语言服务器进行处理。最后,提供了相关文档链接以供进一步参考。

TxNet 902

三个等价c语言表达式,C语言习题综合(20页)-原创力文档

第二章练习题—.选择题1. 以下选项中正确的实型常量2A 0 B 3. 1415 C 0.329×10 D .8712.不合法的用户标识符A _123 B printf C A $ D Dim1.表达式3.5+1/2的计算结果是___2.对数学表达式 ,写出三个等价的c语言表达式_____}第三章 练习题一.选择题1.若a ,b,c都是int型变量且初值为0,以下选项中不正确的赋值语句A a ...

weixin_35953844的博客 775

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

c语言条件表达式ppt,C语言ch041关系、逻辑和条件表达式.ppt

C语言ch041关系、逻辑和条件表达式.ppt2019/10/12,1,上一节我们学到了,赋值表达式和赋值语句 、、左值 printf d、f scanf cab 等效于cab abc 等效于 abc abc 等效于 abc whilecgetchar EOF while cgetchar EOF,2019/10/12,8,分清 和 ,int a 1; if a 0 printf“OK“; ...

weixin_28323057的博客 249

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

[C和指针] ch05. 操作符和表达式

第五章:操作符和表达式 GitHub 链接:ch05. 操作符和表达式 本章总结及注意点 部分课后习题解答 5.8 问题 值为 2.0,类型 float 根据编译器而异。第一个函数的调用可能在乘法前,也可能在乘法后。具体可看: 不清楚。个人一般在算法题中被二进制数相关题目疯狂乱秀! 参考答案:它们通常用于对设备控制器进行编程,以设置或测试特定的位位置。如果有人有其他好的答案,请发邮件给我 kar@cs.rit.edu! 速度相当。 if ((year % 4 == 0 &amp

Y-puyu 的博客 435

c语言表达式10 9,cp2 C语言程序设计--运算符与表达式(9-10).ppt

cp2 C语言程序设计--运算符与表达式(9-10)第二章 运算符与表达式 运算符 表达式 本章内容 C语言中运算符的分类 各种运算符的使用方法 表达式的概念 常用的表达式 必须掌握的内容 自增、自减运算符 表达式的概念和使用 常用运算符的使用方法 2.4 运算符和表达式 C 运 算 符 算术运算符:(单目运算: - ++ -- 双目运算: + - * ...

weixin_40009099的博客 239

递归在c语言表达式,递归实现表达式运算(C语言)

通过递归的方法实现简单表达式的运算,支持加减乘除以及多层括号运算。//eval.h////eval.h#if !defined(__EVAL__H__)#define __EVAL__H__// evaluate the value of the str.// It support +-*/ with non-nagetive integers only.// @param str The ...

weixin_39589644的博客 387

C语言--CH06--操作符(下)

这里的意思是,先把a的值给b,即b= 12,再执行b++,即b+1。函数调用操作符有1+n个操作数:函数名(1个),内部参数(n个),n = 0合法。因为sizeof(a)和sizeof a都是合法的,即sizeof可以省略扩号。按位取反即按二进制位取反,是一个整数的补码某一位上为0则变成1,为1则变成0。[]的操作数,一个是arr,一个是7。定义了一个叫s的Stu类型的变量,开辟了一个空间,创建了实参n,拷贝了形参s,并在拷贝的区域储存了值,之后返回的值并不是n的而是,s的,此时s的内存里还是。

2401_83411974的博客 904

汇编语言——计算表达式的值

题目要求:             实现表达式S=(X+4×Y)/Z,其中X为有符号的字节数据,Z、Y为有符号的字数据,结果进行显示   算的是整除。具体看注释,自认为比较详细了 DATA SEGMENT X DB 10 Y DW 5 Z DW 4 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DAT...

hxxjxw的博客 6048

c语言表达式103的结果是,c语言复习题解答2

《c语言复习题解答2》由会员分享,可在线阅读,更多相关《c语言复习题解答2(17页珍藏版)》请在人人文库网上搜索。1、C语言程序设计练习题题型单选题程序填空程序运行结果程序改错编程总分分值2*20=402*10=202*5=103*5=156+9=15100考生注意:所有答案均要填写在答题卡上否则不得分数!一、单项选择题1、 下列转义字符中,错误的是(C)。转义字符可以用八进制表示ddd, 0 y...

weixin_31539461的博客 591

c语言ch 7,二级c语言程序设计习题及解答ch5-7函数&ampamp;字符.doc

二级c语言程序设计习题及解答ch5-7函数&ampamp;字符.docCh5 -6 循环结构 int i;fori0;i26;i chi65;ifi20printfn;printfcc,ASCIIdt,ch,ch;在上面的程序中有对于字符的输入与输出,在C语言中也有另外的输入输出字符的语句。输入变量名getchar输出putchar变量名Ch7 函数includestdio.hdouble...

weixin_42322782的博客 402

字符型变量ch的值为英文字母 的c语言表达式

英文字母包括大写字母和小写字母,用这样的表达式 if((ch>='a'&&ch='A'&&ch

小凡的专栏 1万+

C语言灵活的指针表达式 左值 右值

0. 参考资料 《C和指针》 1. 初始状态 char ch = 'a'; char *cp = &ch; 其中?表示后面的数据内容未知 2. ch 其中ch当作右值就是表达式的值a,使用粗椭圆提示; 其中ch当作左值时就是内存地址,使用粗方框表示 3. &ch 右值表示变量ch的地址,这和cp存储的值是一样的,但是这个表达式并没有通过cp产生,因此椭圆和cp没有关系 左值非法,原因是&ch求值时结果存放在计算机未知的位置,未标识...

crazyfox的博客 769

《Programing in Lua》第一部分:CH1-CH10

CH1: 开始 程序块:Lua执行的每段代码,例如一个源代码文件或在交互模式输入一行代码,也就是一连串的语句或命令(理解这个概念很重要); 小技巧:dofile函数在测试代码时的用处; Lua的标识符: 可由任意字母、数字、下划线构成,不能以数字开头避免以一个下划线开头并跟着一个或多个大写字母。 避免以一个下划线开头并跟着一个或多个大写字母的标识符,lua将之保留作他用。 保留...

weixin_30747253的博客 140

鹏哥C语言操作符[Ch1]

鹏哥C语言 [操作符]

m0_49237554的博客 716
上一篇: 简单易学的机器学习算法——Apriori算法
下一篇: ch13.JSP标准标签库
thystar
博客等级 码龄17年 407粉丝 151原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值