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)

大家都在看

  • MySQL 主从同步延迟监控

    MySQL5.7和8.0支持通过 replication_applier_status 表获同步延迟时间,当从库出现延迟后,该表中的字段 REMAINING_DELAY 记录延迟秒…

    数据库 2023年6月11日
    089
  • 记一次部署系列:grafana配置特定指标进行邮件告警

    { "__inputs": [ { "name": "DS_PROMETHEUS", "label"…

    数据库 2023年6月9日
    059
  • try enabling the break write locks option for the cleanup

    如图: 一般是在中断:提交/更新的时候产生的。 一般两种解决方式(可以参考其他的): 1,重启ide(我的就是这么神奇,重启idea后好了); 2,在cleanup时勾选 brea…

    数据库 2023年6月11日
    0113
  • 一、SQL高级语句

    摘抄别的博主的博客主要总去CSDN看不太方便自己整理一下加深记忆! 导入文件至数据库 #将脚本导入 source 加文件路径 mysql> source /backup/te…

    数据库 2023年5月24日
    096
  • MySQL快速创建800w条测试数据表&深度分页

    MySQL快速创建800w条测试数据表&深度分页 如果在普通表格中插入条,效率太低,但内存表的插入速度很快,可以先创建内存表,插入数据,然后再导入到普通表格中。 [En] …

    数据库 2023年5月24日
    0103
  • 设计模式之七大原则

    1.单一职责原则: 不要存在多于一个导致类变更的原因。通俗的说,即一个类只负责一项职责 使用一个列子来表达,一个动物类,动物可以使用里面的方法进行奔跑: //单一职责原则测试 pu…

    数据库 2023年6月6日
    099
  • COM组件中 添加导出函数的方法

    COM组件中 添加导出函数的方法 0准备 类前缀 define ATL_NO_VTABLE __declspec(novtable) 函数前缀 define STDMETHODIM…

    数据库 2023年6月14日
    082
  • spring-boot-starter-actuator

    使用: HTTP方法 路径 描述 鉴权 GET /autoconfig 查看自动配置的使用情况 true GET /configprops 查看配置属性,包括默认配置 true G…

    数据库 2023年6月16日
    070
  • Dubbo源码(八)-负载均衡

    前言 本文基于Dubbo2.6.x版本,中文注释版源码已上传github:xiaoguyu/dubbo 负载均衡,英文名称为Load Balance,其含义就是指将负载(工作任务)…

    数据库 2023年6月11日
    070
  • MySQL函数学习(二)—–数值型函数

    注:笔记旨在记录 二、MySQL 数值型函数 \ 函 数 名 称 作 用 完 成 1 RAND 取随机数,可设置参数种子 勾 2 ABS 求x的绝对值 勾 3 SIGN 求x的正负…

    数据库 2023年6月16日
    072
  • Git 环境搭建

    安装 Git:官网 👉https://git-scm.com/ GIt基础配置(以下操作均在 git bash 窗口下进行) git config –global user.na…

    数据库 2023年6月6日
    067
  • windows安装mysql8.0.29(ZIP解压安装版本)

    一. 下载mysql 8.0.29软件包 二. 解压,初始化安装 1,打开下载后文件所在目录,使用解压软件解压,打开文件夹!(如图,文件路径不要出现中文!) 2,创建my.ini文…

    数据库 2023年5月24日
    071
  • gauss杀进程

    1)查询当前所有连接的状态 select datname,pid,application_name,state from pg_stat_activity; 2)关闭当前state…

    数据库 2023年6月16日
    077
  • [springmvc]ajax异步请求数据详细简单

    10.Ajax异步请求 Ajax即 Asynchronous Javascript And XML(异步JavaScript和XML在 2005年被Jesse James Garr…

    数据库 2023年6月16日
    069
  • Linux_连接工具_SecureCRT的使用教程

    什么是SecureCRT? SecureCRT是一款支持 SSH2、SSH1、Telnet、Telnet/SSH、Relogin、Serial、TAPI、RAW 等协议的终端仿真程…

    数据库 2023年6月11日
    098
  • 3_JavaScript

    JavaScript语言诞生主要是完成页面的数据验证, 因此它运行在客户端, 需要运行浏览器来解析执行JavaScript代码 JS是弱类型, Java是强类型 特点 交互性(它可…

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