jsp规范

            jsp规范

一。jsp介绍:
来自于javaee规范里面的一种
jsp规范制定了如何开发jsp文件代替响应对象将处理结果写入到响应体的开发流程
规范了Http服务器应该如何调用管理jsp文件
二。响应对象存在的弊端:
适合将数据量较少的处理结果写入响应体
如果处理结果数量过多,使用响应对象增加开发难度
三。jsp文件优势:
jsp文件在执行的时候,自动将文件所有内容写入到响应体,从而节省out.print
jsp中书写java

内置的对象不需要new 直接可以使用:
1.jsp文件内置对象:request
    类型:HttpServletRequest
    作用:在jsp文件运行时读取请求包的信息
    与Servlet在请求转发过程中实现数据共享

2.jsp文件内置对象:session
    类型:HttpSession
    作用:在jsp文件运行时可以通过session指向当前用户私人储物柜,添加共享数据,或读取
    共享数据

3.ServletContext application;全局作用域对象
同一个网站中Servlet与jsp,都可以通过当前网站的全局作用域对象实现数据共享
jsp文件内置对象:application

servlet与jsp分工:
servlet负责处理业务并得到处理结果
jsp负责将处理结果写入响应体
二者调用关系:
Servlet工作完毕之后一般通过请求转发的方式向tomcat申请调用jsp

servlet与jsp之间如何实现数据共享
Servlet将处理结果添加到请求作用域对象
jsp在运行时从请求作用域对象得到处理结果

Http服务器调用jsp文件步骤:
1.Http服务器将jsp文件编辑为一个servlet接口实现类
2.Http服务器将servlet文件编译为一个class文件
3.Http服务器负责创建这个class的实例对象,这个实例对象就是Servlet实例对象
4.Http服务器通过Servlet实例对象调用Service方法,将jsp文件内容写入响应体。

el工具包:
由java开发的一个jar
作用降低jsp开发时java命令开发强度
tomcat服务器本身自带el工具包

使用原始的jsp:

使用el:
学员id${applicationScope.sid}

学员姓名${sessionScope.sname}

学员地址${requestScope.home}

el表达式:
1.命令格式:${作用域对象.共享数据}
2.命令作用:
1)el表达式是el工具包提供的一种特殊命令格式【表达式命令格式】
2)el表达式在jsp文件上使用
3)负责在jsp文件从作用域对象读取指定的共享数据并输出到响应体。

el表达式作用域对象:
jsp文件可以使用的作用域对象:
1)ServletContext application:全局作用域对象
2)HttpSession session:会话作用域对象
3)HttpServletRequest request:请求作用域对象
4)PageContext pageContext:当前页作用域对象,这是jsp文件独有的作用域对象
Servlet中不存在当前页作用域对象,该对象存放的数据只能在当前jsp文件
中使用,不能共享给其他Servlet或其他jsp文件
真是开发过程中,主要用于jstl标签与jsp文件
之间数据共享
jstl—pageContext—–jsp

el表达式提供作用域对象的别名:
    jsp     el表达式
    application ${applicationScope.共享数据名}
    session     ${sessionScope.共享数据名}
    request     ${requestScope.共享数据名}
    pageContext ${pageScope.共享数据名}

el表达式将引用对象属性写入到响应体:
1.命令格式:${作用域对象别名.共享数据名.属性名}
2.命令作用:从作用域对象读取指定共享数据关联的引用对象的属性值
并自动将属性的结果写入到响应体
3.属性名:一定要去引用类型属性名完全一致(大小写)
4.el表达式没有提供遍历集合方法,因此无法从作用域对象读取集合内容输出

el表达式简化版:
1.命令格式:${共享数据名}
2.命令作用:el表达式允许开发人员开发时省略作用域对象名
3.工作原理:
首先到pageContext定位的数据查找,存在就输出
如果没有就到request定位的数据查找,存在就输出
如果还是没有就定位session,最后定位application
都没有则返回null

4.存在的隐患:
    降低程序的速度
    容易导致数据定位错误
5.应用场景:
    设计的目的简化从pageContext读取共享数据并输出难度
6.el表达式虽然存在问题,但是在实际开发中一般使用简化版,拒绝使用标准版

el表达式—-支持运算表达式:
1.前提:咋jsp文件有时需要将读取共享数据进行一番运算之后,将运算结果写入到响应体
2.运算表达式:
1)数学运算

    2)&#x5173;&#x7CFB;&#x8FD0;&#x7B97;&#xFF1A;>(gt) >=(ge) ==(eq) <(lt) <="(le)" !="(!=)" 3)逻辑运算:&& || code></(lt)>

el表达式提供内置对象:
1.命令格式:${param.请求参数名}
2.命令作用:通过请求对象读取当前请求包中请求参数的内容
并将请求参数内容写入到响应体
3.代替命令:index.jsp
发送请求:Http://localhost:8000/myweb/index.jsp?userName=mike&password=123

        %>
        <%=username%>
        <%=userpwd%>

${paramValues.&#x8BF7;&#x6C42;&#x53C2;&#x6570;&#x540D;[&#x4E0B;&#x6807;]}
&#x547D;&#x4EE4;&#x4F5C;&#x7528;&#xFF1A;&#x5982;&#x679C;&#x6D4F;&#x89C8;&#x5668;&#x53D1;&#x9001;&#x7684;&#x8BF7;&#x6C42;&#x53C2;&#x6570;&#x662F;&#x4E00;&#x4E2A;&#x53C2;&#x6570;&#x5173;&#x8054;&#x591A;&#x4E2A;&#x503C;&#x6B64;&#x65F6;&#x53EF;&#x4EE5;
    &#x901A;&#x8FC7;paramValues&#x8BFB;&#x53D6;&#x8BF7;&#x6C42;&#x53C2;&#x6570;&#x4E0B;&#x6307;&#x5B9A;&#x7684;&#x4F4D;&#x7F6E;&#x7684;&#x503C;&#x5E76;&#x5199;&#x5165;&#x54CD;&#x5E94;&#x4F53;

select rand();&#x968F;&#x673A;&#x8FD4;&#x56DE;0-1&#x4E4B;&#x95F4;&#x5C0F;&#x6570;

SELECT * from emp ORDER BY RAND() LIMIT 0,4;&#x968F;&#x673A;&#x67E5;&#x8BE2;&#x56DB;&#x6761;&#x8BED;&#x53E5;
</%=userpwd%></%=username%>

Original: https://www.cnblogs.com/journeyhch/p/15612920.html
Author: journeyhch
Title: jsp规范

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/599156/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Sql的字符串匹配 like

    患者信息表: Patients +————–+———+ | Column Name | Type | +————–+——–…

    数据库 2023年6月14日
    079
  • 工具 | 如何对 MySQL 进行 TPC-C 测试?

    作者:丁源 RadonDB 测试负责人负责 RadonDB 云数据库、容器化数据库的质量性能测试,迭代验证。对包括云数据库以及容器化数据库性能和高可用方案有深入研究。 |背景 根据…

    数据库 2023年5月24日
    094
  • Mybatis-Plus json 格式数据查询

    // List 存储 json 格式后的查询 .apply("JSON_CONTAINS(JSON_EXTRACT(order_id_list, ‘$.data[*]’)…

    数据库 2023年6月6日
    0270
  • 携程二面:讲讲 MySQL 中的 WAL 策略和 CheckPoint 技术

    前段时间我在准备暑期实习嘛,这是当时面携程的时候二面的一道问题,我一脸懵逼,赶紧道歉,不好意思不知道没了解过,面试官又解释说 redo log,我寻思着 redo log 我知道啊…

    数据库 2023年6月6日
    0256
  • Java中的SPI原理浅谈

    在面向对象的程序设计中,模块之间交互采用接口编程,通常情况下调用方不需要知道被调用方的内部实现细节,因为一旦涉及到了具体实现,如果需要换一种实现就需要修改代码,这违反了程序设计的&…

    数据库 2023年6月14日
    070
  • JUC学习笔记(七)

    1.1、读写锁介绍 现实中有这样一种场景:对共享资源有读和写的操作,且写操作没有读操作那么频繁。在没有写操作的时候,多个线程同时读一个资源没有任何问题,所以应该允许多个线程同时读取…

    数据库 2023年6月6日
    0104
  • LIMIT和OFFSET分页性能差!今天来介绍如何高性能分页

    GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。 GreatSQL是MySQL的国产分支版本,使用上与MySQL一致。 前言 之前的大多数人分页采用的都…

    数据库 2023年6月11日
    0127
  • LeetCode 344. 反转字符串

    编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。 //输入一个字符串,输出它的倒序字符串 input: Hello output: olleH …

    数据库 2023年6月11日
    084
  • Asp.Net Core 发布和部署( MacOS + Linux + Nginx )

    在上篇文章中,主要介绍了 Dotnet Core Run 命令,这篇文章主要是讲解如何在Linux中,对 Asp.Net Core 的程序进行发布和部署。 有关如何在 Jexus …

    数据库 2023年6月11日
    0110
  • CompletableFuture的简单使用

    日常开发中,我们都会用到线程池,一般会用execute()和submit()方法提交任务。但是当你用过CompletableFuture之后,就会发现以前的线程池处理任务有多难用,…

    数据库 2023年6月14日
    091
  • Linux

    1、关机命令 命令 说明 sync 将数据由内存同步到硬盘中 shutdown 关机 shutdown -h 10 10分钟后关机 shutdown -h now 立马关机 shu…

    数据库 2023年6月16日
    0103
  • LeetCode 13. 罗马数字转整数

    罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如,罗马数字2写做II,…

    数据库 2023年6月11日
    089
  • SpringMvc(四)- 下载,上传,拦截器

    1、图片下载 图片下载:将服务器端的文件以流的形式写到客户端,通过浏览器保存到本地,实现下载; 1.1 图片下载步骤 1.通过session获取上下文对象(session.getS…

    数据库 2023年6月16日
    065
  • 最新Spring Boot 跨域配置,亲测好用

    背景: 网上有很多跨域配置,但都存在各种各样问题;经过改良和测试后,最终形成一个稳定配置版本,我的Spring Boot版本是2.5.1 问题: 前后端分离后,进行联调,发现浏览器…

    数据库 2023年6月6日
    0105
  • 前后端数据交互利器–Protobuf

    Protobuf 介绍 简而言之,Protobuf 是 Google 开源的一款用于处理前后端数据交互格式的工具。通常来讲前后端使用的编程语言是不同的,使用 Protobuf无需多…

    数据库 2023年6月16日
    097
  • 数据库操作语句大全(sql)

    数据库操作语句大全(sql) 一、基础 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbna…

    数据库 2023年6月9日
    088
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球