EL&&JSTL

2023-11-13

一、JSP技术

1.jsp脚本和注释

jsp脚本:

1)<%java代码%> ----- 内部的java代码翻译到service方法的内部

2)<%=java变量或表达式> ----- 会被翻译成service方法内部out.print()

3)<%!java代码%> ---- 会被翻译成servlet的成员的内容

 

jsp注释:  不同的注释可见范围是不同

1)Html注释:<!--注释内容--> ---可见范围 jsp源码、翻译后的servlet、页面显示html源码

2)java注释://单行注释  /*多行注释*/ --可见范围 jsp源码 翻译后的servlet

3)jsp注释:<%--注释内容--%> ----- 可见范围 jsp源码可见

 

2.jsp运行原理-----jsp本质就是servlet(面试)

jsp在第一次被访问时会被Web容器翻译成servlet,在执行

过程:

第一次访问---->helloServlet.jsp---->helloServlet_jsp.java---->编译运行

PS:被翻译后的servlet在Tomcat的work目录中可以找到

 

 

3.jsp指令(3个)

jsp的指令是指导jsp翻译和运行的命令,jsp包括三大指令:

1)page指令 --- 属性最多的指令(实际开发中page指令默认)

属性最多的一个指令,根据不同的属性,指导整个页面特性

格式:<%@ page 属性名1= "属性值1" 属性名2= "属性值2" ...%>

常用属性如下:

language:jsp脚本中可以嵌入的语言种类

pageEncoding:当前jsp文件的本身编码---内部可以包含contentType

contentType:response.setContentType(text/html;charset=UTF-8)

session:是否jsp在翻译时自动创建session

import:导入java的包

errorPage:当当前页面出错后跳转到哪个页面

isErrorPage:当前页面是一个处理错误的页面

 

2)include指令

页面包含(静态包含)指令,可以将一个jsp页面包含到另一个jsp页面中

格式:<%@ include file="被包含的文件地址"%>

 

3)taglib指令

在jsp页面中引入标签库(jstl标签库、struts2标签库)

格式:<%@ taglib uri="标签库地址" prefix="前缀"%>

 

 

4.jsp内置/隐式对象(9个)----- 笔试

jsp被翻译成servlet之后,service方法中有9个对象定义并初始化完毕,我们在jsp    脚本中可以直接使用这9个对象

名称

类型

描述

out

javax.servlet.jsp.JspWriter

用于页面输出

request

javax.servlet.http.HttpServletRequest

得到用户请求信息,

response

javax.servlet.http.HttpServletResponse

服务器向客户端的回应信息

config

javax.servlet.ServletConfig

服务器配置,可以取得初始化参数

session

javax.servlet.http.HttpSession

用来保存用户的信息

application

javax.servlet.ServletContext

所有用户的共享信息

page

java.lang.Object

指当前页面转换后的Servlet类的实例

pageContext

javax.servlet.jsp.PageContext

JSP的页面容器

exception

java.lang.Throwable

表示JSP页面所发生的异常,在错误页中才起作用

 

(1)out对象

out的类型:JspWriter

out作用就是想客户端输出内容----out.write()

out缓冲区默认8kb 可以设置成0 代表关闭out缓冲区 内容直接写到respons缓冲   器

 

(2)pageContext对象

jsp页面的上下文对象,作用如下:

page对象与pageContext对象不是一回事

1)pageContext是一个域对象

setAttribute(String name,Object obj)

getAttribute(String name)

removeAttrbute(String name)

 

pageContext可以向指定的其他域中存取数据

setAttribute(String name,Object obj,int scope)

getAttribute(String name,int scope)

removeAttrbute(String name,int scope)

findAttribute(String name)

---依次从pageContext域,request域,session域,application域中获  取属性,在某个域中获取后将不在向后寻找

 

四大作用域的总结:

page域:当前jsp页面范围

request域:一次请求

session域:一次会话

application域:整个web应用

 

2)可以获得其他8大隐式对象

例如: pageContext.getRequest()

pageContext.getSession()

 

5.jsp标签(动作)

1)页面包含(动态包含):<jsp:include page="被包含的页面"/>

2)请求转发:<jsp:forward page="要转发的资源" />

 

二、EL技术

1.EL 表达式概述

EL(Express Lanuage)表达式可以嵌入在jsp页面内部,减少jsp脚本的编写,EL 出现的目的是要替代jsp页面中脚本的编写。

 

2.EL从域中取出数据(EL最重要的作用)

jsp脚本:<%=request.getAttribute(name)%>

EL表达式替代上面的脚本:${requestScope.name}

 

EL最主要的作用是获得四大域中的数据,格式${EL表达式}

EL获得pageContext域中的值:${pageScope.key};

EL获得request域中的值:${requestScope.key};

EL获得session域中的值:${sessionScope.key};

EL获得application域中的值:${applicationScope.key};

EL从四个域中获得某个值${key};

---同样是依次从pageContext域,request域,session域,application域中 获取属性,在某个域中获取后将不在向后寻找

 

1)获得普通字符串

 

2)获得User对象的值

 

3)获得List<User>的值

 

3.EL的内置对象11个

pageScope,requestScope,sessionScope,applicationScope

 ---- 获取JSP中域中的数据

param,paramValues   - 接收参数.

相当于request.getParameter()  rrquest.getParameterValues()

header,headerValues  - 获取请求头信息

相当于request.getHeader(name)

initParam                   - 获取全局初始化参数

相当于this.getServletContext().getInitParameter(name)

cookie                      - WEB开发中cookie

相当于request.getCookies()---cookie.getName()---cookie.getValue()

pageContext             - WEB开发中的pageContext.

pageContext获得其他八大对象

 

${pageContext.request.contextPath}

相当于

<%=pageContext.getRequest().getContextPath%>  这句代码不能实现

获得WEB应用的名称

 

4.EL执行表达式

例如:

${1+1}

${empty user}

${user==null?true:false}

 

三、JSTL技术

1.JSTL概述

JSTL(JSP Standard Tag Library),JSP标准标签库,可以嵌入在jsp页面中使用标签的形式完成业务逻辑等功能。jstl出现的目的同el一样也是要代替jsp页面中的脚本代码。JSTL标准标准标签库有5个子库,但随着发展,目前常使用的是他的核心库

标签库

标签库的URI

前缀

Core

http://java.sun.com/jsp/jstl/core

c

I18N

http://java.sun.com/jsp/jstl/fmt

fmt

SQL

http://java.sun.com/jsp/jstl/sql

sql

XML

http://java.sun.com/jsp/jstl/xml

x

Functions

http://java.sun.com/jsp/jstl/functions

fn

 

2.JSTL下载与导入

JSTL下载:

从Apache的网站下载JSTL的JAR包。进入          “http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/”网址下载      JSTL的安装包。jakarta-taglibs-standard-1.1.2.zip,然后将下载好的JSTL安装包   进行解压,此时,在lib目录下可以看到两个JAR文件,分别为jstl.jar和standard.jar。  其中,jstl.jar文件包含JSTL规范中定义的接口和相关类,standard.jar文件包含用于    实现JSTL的.class文件以及JSTL中5个标签库描述符文件(TLD)

jstl.jar

standdard.jar

将两个jar包导入我们工程的lib中

 

使用jsp的taglib指令导入核心标签库

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

3.JSTL核心库的常用标签

1)<c:if test=””>标签

其中test是返回boolean的条件

2)<c:forEach>标签

使用方式有两种组合形式:

//forEach模式
    for(int i=0;i<5;i++){
    System.out.pritln(i);
    }
    <c:forEach begin="0" end="5" var="i">
        ${i }<br>
    </c:forEach>

 

 

四、javaEE的开发模式

1.什么是模式

模式在开发过程中总结出的“套路”,总结出的一套约定俗成的设计模式

2.javaEE经历的模式

model1模式:

技术组成:jsp+javaBean

model1的弊端:随着业务复杂性 导致jsp页面比较混乱

model2模式

技术组成:jsp+servlet+javaBean

model2的优点:开发中 使用各个技术擅长的方面

servlet:擅长处理java业务代码

jsp:擅长页面的现实

 

MVC:---- web开发的设计模式

M:Model---模型 javaBean:封装数据

V:View-----视图 jsp:单纯进行页面的显示

C:Controller----控制器 Servelt:获取数据--对数据进行封装--传递数据--     指派显示的jsp页面

 

 

3.javaEE的三层架构

服务器开发时 分为三层

web层:与客户端交互

service层:复杂业务处理

dao层:与数据库进行交互

开发实践时 三层架构通过包结构体现

 

MVC与三层架构有什么关系?

 

 

总结:

EL表达式

从域中取出数据 ${域中存储的数据的name}

${pageContext.request.contextPath}

 

JSTL标签(核心库)

<%@ taglib uri=”” prefix=”c”%>

 

<c:if test=””>

 

<c:forEach items=”数组或集合” var=”数组或集合中的每一个元素”>

 

 

javaEE三层架构+MVC

 

web层:收集页面数据,封装数据,传递数据,指定响应jsp页面

service层:逻辑业务代码的编写

dao层:数据库的访问代码的编写

转载于:https://www.cnblogs.com/appc/p/7716396.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

EL&&JSTL 的相关文章

  • 猫头虎博主的MySQL救援指南:轻松解决初始化问题(nysqld: Can create directort :mysgl mysg! 9-winx64 data errno such file o)

    博主猫头虎的技术世界 欢迎来到 猫头虎的博客 探索技术的无限可能 专栏链接 精选专栏 面试题大全 面试准备的宝典 IDEA开发秘籍 提升你的IDEA技能 100天精通Golang Go语言学习之旅 领域矩阵 猫头虎技术领域矩阵 深入探索各技
  • 拓数派加入 OpenCloudOS 操作系统开源社区,作为成员单位参与社区共建

    近日 拓数派签署 CLA Contributor License Agreement 贡献者许可协议 正式加入 OpenCloudOS 操作系统开源社区 拓数派 英文名称 OpenPie 是国内基础数据计算领域的高科技创新企业 作为国内云上
  • 如何处理不稳定的自动化测试?

    abluecolor 在解决这个问题之前 请停止编写更多测试 因为这将花费你较高的测试维护成本 你需要尽快行动起来对不稳定的原因进行深入研究 找到不稳定的根因 并且尝试在流程 环境和代码方面做一些优化工作解决它 MasterKindew 如
  • ERROR 5025 (HY000): Insert has filtered data in strict mode, tracking_url=http://IP

    通过http api批量插入数据的时候报Reason null value for not null column column xxx src line 解决方法 检查是否有null值存在 增加数据库字段长度 如下语句更改长度 ALTER
  • 进程间通信

    进程间通信 进程间通信介绍 进程间通信目的 数据传输 一个进程需要将它的数据发送给另一个进程 资源共享 多个进程之间共享同样的资源 通知事件 一个进程需要向另一个或一组进程发送消息 通知它 它们 发生了某种事件 如进程终止 时要通知父进程
  • 神州信息一表通监管合规系统

    什么是 一表通 国家金融监督管理总局为进一步建立健全数据统计监管体系 规范数据报送指标体系 明确检测数据规则 而推行建立的一套新体系监管报送方式 提升校验准确性和信息安全性 近期 国家金融监督管理总局更是进一步加大推动 一表通 的实行试点范
  • 内网穿透的应用-使用Net2FTP轻松部署本地Web网站并公网访问管理内网资源

    文章目录 1 前言 2 Net2FTP网站搭建 2 1 Net2FTP下载和安装 2 2 Net2FTP网页测试 3 cpolar内网穿透 3 1 Cpolar云端设置 3 2 Cpolar本地设置
  • 拼多多详情API开启运营比价新纪元

    随着互联网的快速发展 电商行业正在迅速崛起 拼多多作为一家新兴的电商平台 凭借其独特的营销策略和创新的商业模式 成为了电商行业的一匹黑马 在拼多多的成功背后 其详情API接口营销起到了至关重要的作用 本文将详细介绍拼多多详情API接口营销的
  • 亚信安慧AntDB引领数字化转型:浙江移动成功实现CRM系统全域改造

    数字时代 通信运营商在不断迭代的背景下 需要不断探索数字化转型的路径 以适应快速发展的市场和技术环境 在这一浪潮中 浙江移动站在前沿 率先完成了其CRM系统的全域改造 采用了亚信安慧公司研发的AntDB数据库 为整个行业树立了数字化转型的标
  • 6 - 数据备份与恢复|innobackupex

    数据备份与恢复 innobackupex 数据备份与恢复 数据备份相关概念 物理备份与恢复 逻辑备份 推荐 使用binlog日志文件实现对数据的时时备份 使用日志 恢复数据
  • 【计算机毕业设计】个人日常事务管理系统

    进入21世纪网络和计算机得到了飞速发展 并和生活进行了紧密的结合 目前 网络的运行速度以达到了千兆 覆盖范围更是深入到生活中的角角落落 这就促使 管理系统的发展 管理系统可以实现远程处理事务 远程工作信息和随时追踪工作的状态 网上管理系统给
  • 38条Web测试经验分享

    1 页面链接检查 每一个链接是否都有对应的页面 并且页面之间切换正确 可以使用一些工具 如LinkBotPro File AIDCS HTML Link Validater Xenu等工具 LinkBotPro不支持中文 中文字符显示为乱码
  • 图解python | 字符串及操作

    1 Python元组 Python的元组与列表类似 不同之处在于元组的元素不能修改 元组使用小括号 列表使用方括号 元组创建很简单 只需要在括号中添加元素 并使用逗号隔开即可 tup1 ByteDance ShowMeAI 1997 202
  • python超详细基础文件操作【建议收藏】

    文章目录 前言 发现宝藏 1 文件操作 1 1 文件打开与关闭 1 1 1 打开文件 1 1 2 关闭文件 1 2 访问模式及说明 2 文件读写 2 1 写数据 write 2 2 读数据 read 2 3 读数据 readlines 2
  • 电商数据api拼多多接口获取商品实时数据价格比价api代码演示案例

    拼多多商品详情接口 接口接入入口 它的主要功能是允许卖家从自己的系统中快速获取商品详细信息 通过这个接口 卖家可以提取到商品的各类数据 包括但不限于商品标题 价格 优惠价 收藏数 下单人数 月销售量等 此外 还可以获取到商品的SKU图 详情
  • 深入了解 Python MongoDB 查询:find 和 find_one 方法完全解析

    在 MongoDB 中 我们使用 find 和 find one 方法来在集合中查找数据 就像在MySQL数据库中使用 SELECT 语句来在表中查找数据一样 查找单个文档 要从MongoDB的集合中选择数据 我们可以使用 find one
  • 【计算机毕业设计】白优校园社团网站的设计与实现

    近些年 随着中国经济发展 人民的生活质量逐渐提高 对网络的依赖性越来越高 通过网络处理的事务越来越多 随着白优校园社团网站的常态化 如果依然采用传统的管理方式 将会为工作人员带来庞大的工作量 这将是一个巨大考验 需要投入大量人力开展对社团
  • 面试官问,如何在十亿级别用户中检查用户名是否存在?

    面试官问 如何在十亿级别用户中检查用户名是否存在 前言 不知道大家有没有留意过 在使用一些app注册的时候 提示你用户名已经被占用了 需要更换一个 这是如何实现的呢 你可能想这不是很简单吗 去数据库里查一下有没有不就行了吗 那么假如用户数量
  • 毕业设计:基于python人脸识别系统 LBPH算法 sqlite数据库 (源码)✅

    博主介绍 全网粉丝10W 前互联网大厂软件研发 集结硕博英豪成立工作室 专注于计算机相关专业 毕业设计 项目实战6年之久 选择我们就是选择放心 选择安心毕业 感兴趣的可以先收藏起来 点赞 关注不迷路 毕业设计 2023 2024年计算机毕业
  • Python 使用 NoSQL 数据库的优选方案

    NoSQL 数据库因其高性能 可扩展性和灵活性而风靡一时 然而 对于 Python 程序员而言 选择合适的 NoSQL 数据库可能会令人困惑 因为有多种选择可供选择 那么 哪种 NoSQL 数据库最适合 Python 呢 2 解决方案 根据

随机推荐

  • ctfshow web 练习记录(1,2)

    web1 查看源代码 base64解码 web2 sql注入 使用万能公式username 1 or 1 1 passwd 123 有回显 再使用order by 查询列数 username 1 or 1 1 order by 1 到4没有
  • 国内访问github速度过慢的问题解决

    1 在浏览器上输入网址 http tool chinaz com dns 2 查询http github com 3 找到TTL值最低的响应IP 比如IP20 32 253 113的TTL值最低你就选这个IP 4 打开我的电脑 进入到C W
  • 粒子群算法组卷_CVRP问题求解(一)整数编码的粒子群算法

    CVRP问题求解 一 整数编码的粒子群算法 粒子群算法概述 粒子群算法 Particle Swarm Optimization 是由鸟群捕食得到启发的一种算法 在鸟类觅食过程中 每只鸟都会利用自身经验和群体信息来寻找食物 在觅食过程中 每只
  • 跳槽季到了,Linux运维跳槽40道面试精华题

    1 什么是运维 什么是游戏运维 1 运维是指大型组织已经建立好的网络软硬件的维护 就是要保证业务的上线与运作的正常 在他运转的过程中 对他进行维护 他集合了网络 系统 数据库 开发 安全 监控于一身的技术 运维又包括很多种 有DBA运维 网
  • C++寻找数组中的最大值

    include
  • OpenCV——高斯滤波

    目录 一 高斯滤波 二 C 代码 三 python代码 四 结果展示 1 原始图像 2 5x5卷积 3 9x9卷积 一 高斯滤波 高斯滤波是一种线性平滑滤波 适用于消除高斯噪声 广泛应用于图像处理的减噪过程 1 通俗的讲 高斯滤波就是对整幅
  • PC端页面适应不同的分辨率的方法

    上周完成一个PC端的项目 对于我这样的小白来说 这个项目里面最大的问题就是 如何做到让HTML页面适应电脑的不同分辨率 通过师傅的指导和自己查阅资料 最终成功适配不同的分辨率 完成了这个项目 现在回头再来看这个项目 突然发现适配不同的分辨率
  • js弹出窗口总结6种弹窗方法

    关闭 父窗口弹出对话框 子窗口直接关闭 this Response Write 关闭 父窗口和子窗口都不弹出对话框 直接关闭 this Response Write 弹出窗口刷新当前页面width 200 height 200菜单 菜单栏
  • 【图像处理】OpenCV截图小工具

    还存在一些小Bug 需要改进 include
  • 查询表结构信息sql

    select DQMS 库名 A Table Name 表名 C comments 表中文名 A column name 字段名 B comments 备注 A data type 数据类型 A data length 长度 A data
  • 基于SpringBoot左岸小区车位管理系统的设计与实现

    随着信息化时代的到来 管理系统都趋向于智能化 系统化 小区车位管理系统也不例外 但目前不少小区车位的管理仍都使用人工管理 小区规模越来越大 入住率越高 小区车辆信息量也越来越庞大 人工管理显然已无法应对时代的变化 而小区车位管理系统能很好地
  • STM32裸机串口接收方案

    点击下面 进入总目录索引 STM32系列精品Demo集 总目录 一 UART接收方案汇总 补充说明 上述接收方案中有协议帧 本协议帧指的是有帧头帧尾这种协议 不包含类似AT指令这种协议方案 二 UART丢包问题分析 2 1 裸跑机制 裸跑时
  • SpringBoot配置日志每天输出到指定文件

    在使用springboot搭建项目时 它内部引入了logback作为日志框架 默认只有info级别的控制台日志输出 在线上环境都是输出到文件的 并且每日一个文件夹 自动更换文件 文件内容超出一定大小 自动切分 并且以递增的序号排列 不同级别
  • 前端 JavaScript js PDF转img PDF转base64 PDF转图片

    需求是将前端加载的PDF转化到base64上传服务器
  • 【解决】当你不小心将桌面文件位置直接位移到D盘,且桌面上出现D盘所有目录的解决办法!!!

    首先能够出现这个问题的话 必定是你想要将桌面文件位置放在D盘 而不是系统默认的C盘 这样你在桌面显示的东西都可以是占用D盘的内存而不是C盘的内存 在这其中有些人可能出现失误出现了如题目所示的麻烦 我们直接进入主题 首先 在开始菜单搜索 re
  • 【内网穿透】远程访问后端编写中的接口,可用于前后端Swagger远程调试,和https微信开发测试

    之前在家和项目组的同学分开了 无法在同一个路由下通过访问局域网下的ip进行接口对接 只有借助第三方工具 开进行远程访问 NATAPP 我们可以在这个网址购买隧道 与自己电脑上配置后 便可以远程发问idea项目运行的的链接 其次由于连接支持h
  • 海康SDK:C3690 应该为字符串文本,但找到的是用户定义的字符串文本; C4430 缺少类型说明符 - 假定为 int

    海康SDK C 严重性代码说明项目文件行禁止显示状态错误 C3690 应该为字符串文本 但找到的是用户定义的字符串文本 Alarm严重性代码 说明 项目 文件行禁止显示状态错误 C4430 缺少类型说明符 假定为 int 注意 C 不支持默
  • JS面试——宏任务与微任务

    JavaScript的宏任务与微任务 1 问题的由来 2 JavaScript的宏任务与微任务 2 1promise的使用方法 2 2async与await的使用方法 3 面试题实战分析 程序执行顺序 参考文献 1 问题的由来 我相信 你也
  • GAMES101笔记_Lec07~09_着色 Shading

    0 我们已经学了什么 What We ve Covered So Far 空间中定义了一个摄像机 通过某些变换使模型摆好姿势 Model 通过观测变换让摄像机放在原点 得到标准的 1 1
  • EL&&JSTL

    一 JSP技术 1 jsp脚本和注释 jsp脚本 1 内部的java代码翻译到service方法的内部 2 会被翻译成servlet的成员的内容 jsp注释 不同的注释可见范围是不同 1 Html注释 可见范围 jsp源码 翻译后的serv