当前位置: 首页 > news >正文

2022-8-31 第七小组 学习日记 (day55)JSP

遇到出错自己解决:出错先看控制台,前端就f12看开发中工具,最后再查看路径

目录

JSP简介

面试题:JSP和servlet区别?

JSP脚本片段:

JSP表达式:

JSP声明片段:

JSP的指令标识:

page的属性:

Include指令

Taglib指令

JSP标签

1、内置标签

2、JSTL标签,需要导入JSTL标签库

3、自定义标签

(面试题)jsp:include标签和include指令的区别?

动态引入和静态引入的区别

 (面试题)JSP四大作用域:

(面试题)JSP的九大内置对象。

EL表达式

EL中的基础操作符

EL表达式的内置作用域对象

总结 


JSP简介

jsp语言与PHP、ASP、ASP.NET等语言类似,都是运行在服务端的语言

JSP技术是以Java语言作为脚本语言的,JSP网页为整个服务器端的Java库单元提供了一个接口来服务于HTTP的应用程序。

JSP文件后缀名为*.jsp

JSP开发的WEB应用可以跨平台使用,既可以运行在Linux上也能运行在Windows上

面试题:JSP和servlet区别?

1.JSP本质上就是servlet

2.JSP更侧重于视图展示,servlet更侧重于逻辑处理

3.先有的servlet,后有的JSP 

JSP脚本片段:

用于在JSP页面内写JAVA代码

<%
    int num=0;
    num++;
    System.out.println(num);
%>

注意: 

1.JSP脚本片段中只能出现java代码,不能出现HTML元素,在访问JSP时,JSP引擎翻译JSP页面中的脚本片段。
2.JSP脚本片段中JAVA代码必须严格遵守JAVA的规则
3.一个JSP页面可以有多个脚本片段
4.多个脚本片段中的代码可以相互访问

JSP表达式:

格式:<%=%>,用于将已经声明的变量或者表达式输出到网页上面。

<%= num %>

JSP声明片段:

其中写的内容将来会直接翻译在Servlet类中,因为我们可以在类中定义方法和属性以及全局变量,所以我们可以在<%!%>中声明方法、属性、全局变量。

<%!
    int x = 10;
 
    static{
 
    }
 
    public void fun(){
 
    }
%>

JSP的指令标识:

<%@ 指令名 属性1=“值1” 属性2=“值2”.....%>

那都有什么指令呢:

page指令:定义整个JSP页面的相关属性

include指令:引入其他的JSP页面。先把两个页面结合,在去编译成servlet。

taglib指令:引入页面上需要用到的标签库

page的属性:

使用语法格式:一般在页面最顶上:<%@ page attribute="value" %>

属性描述
buffer指定out对象使用缓冲区的大小
autoFlush控制out对象的 缓存区
contentType指定当前JSP页面的MIME类型和字符编码
errorPage指定当JSP页面发生异常时需要转向的错误处理页面
isErrorPage指定当前页面是否可以作为另一个JSP页面的错误处理页面
extends指定servlet从哪一个类继承
import导入要使用的Java类
info定义JSP页面的描述信息
isThreadSafe指定对JSP页面的访问是否为线程安全
language定义JSP页面所用的脚本语言,默认是Java
session指定JSP页面是否使用session
isELIgnored指定是否执行EL表达式
isScriptingEnabled确定脚本元素能否被使用

Include指令

语法格式:<%@ include file="文件相对 url 地址" %>

Taglib指令

语法格式:<%@ taglib uri="uri" prefix="prefixOfTag" %>

JSP标签

1、内置标签

        (1)jsp:include:引入指定的页面

        (2)jsp:forward:转发页面

        (3)jsp:param:传参数

2、JSTL标签,需要导入JSTL标签库

3、自定义标签

使用格式:<jsp:标签名称 属性名=属性值 ... ></jsp:标签名称>

 或:<jsp:标签名称 属性名=属性值 ... />

(面试题)jsp:include标签和include指令的区别?

        include标签:先把要引入的页面编译,再合并

        include指令:先把要引入的页面合并,再编译

动态引入和静态引入的区别

静态引入:

<%@ include file="/xxx.jsp" %>

静态引入会生成一个java文件,两个jsp文件中可以共享同一个变量,但不能定义重名的变量。

动态引入:

<jsp:include page="/xxx.jsp"/>

动态引入会生成两个java文件,两个jsp文件中不可以共享同一个变量,可以定义重名的变量。

在静态引入与动态引入均可使用时,一般使用静态引入。因为在程序运行时只存在一个Servlet,对资源的消耗较少,且不存在调用问题,执行效率较高。

 (面试题)JSP四大作用域:

1、当前页(pageContext):一个属性只能在一个页面中获取。

2、一次请求(request):一个页面中设置的属性,范围是一次请求。

3、一次会话(session):一个会话中的属性,只要页面不关闭,都能获取到

4、整个web应用(application):在这个服务器上,当前项目下的任何一个位置都能获取。

 往作用域中放置数据:

<%
    pageContext.setAttribute("pageContext","pageContext");
    request.setAttribute("request","request");
    session.setAttribute("session","session");
    application.setAttribute("application","application");
%>

 获取:

<h1>pageContext:<%= pageContext.getAttribute("pageContext")%></h1>
<h1>request:<%= request.getAttribute("request")%></h1>
<h1>session:<%= session.getAttribute("session")%></h1>
<h1>application:<%= application.getAttribute("application")%></h1>

(面试题)JSP的九大内置对象。

        内置:不需要创建,直接就能用。

***request

请求

***response

响应

***session

会话

out

输出

page

当前JSP页面对象

application

应用

exception

异常,只能在指定了isErrorPage="true"使用

pageContext

当前页,作用域

config

配置

EL表达式

SP表达式语言(EL)使得可以轻松访问存储在JavaBeans组件中的应用程序数据。JSP EL允许用来创建算术和逻辑表达式。在JSP EL表达式中,可以使用整数,浮点数,字符串,布尔值的内置常量为true和false以及null值。

语法:

通常,当在JSP标记中指定属性值时,只需使用字符串即可。 例如 

<jsp:setProperty name = "box" property = "perimeter" value = "100"/>

JSP EL允许为这些属性值指定一个表达式。JSP EL的语法如下:

${expr}

EL中的基础操作符

EL表达式支持大部分Java所提供的算术和逻辑操作符:

操作符描述
.访问一个Bean属性或者一个映射条目
[]访问一个数组或者链表的元素
( )组织一个子表达式以改变优先级
+
-减或负
*
/ or div
% or mod取模
== or eq测试是否相等
!= or ne测试是否不等
< or lt测试是否小于
> or gt测试是否大于
<= or le测试是否小于等于
>= or ge测试是否大于等于
&& or and测试逻辑与
|| or or测试逻辑或
! or not测试取反
empty测试是否空值

EL表达式的缺陷:1、只能读,不能写  2、不支持流程控制语句 

EL表达式的内置作用域对象

pageContext

requestScope

sessionScope

applicationScope

总结 

        JSP虽然是使用方面较少了,但是它在面试题仍然不能马虎,我将老师特意讲的面试题标红以备不时之需 

相关文章:

  • 全球与中国吸油烟机行业市场规模调研及未来前瞻报告2022-2028年
  • 金仓数据库KingbaseES客户端应用参考手册--14. sys_receivewal
  • 软件测试自学不知道如何下手?一篇文章7个步骤带你找准方向
  • 金仓数据库KingbaseES客户端应用参考手册--15. sys_restore
  • map函数传入parseInt函数处理数字输出有误
  • C++ 小游戏 视频及资料集(9)
  • git--查看信息的命令--使用/实例
  • 中秋味的可视化大屏 【以python pyecharts为工具】
  • nodejs+vue+elementui办公用品电商家具网站python
  • 金仓数据库KingbaseES客户端应用参考手册--11. sys_dump
  • 基础知识:英文/计算机/电路/51/汇编
  • QML中的模板方法模式
  • 2022年9月1日:在 Visual Studio Code 中使用 Git 版本控制工具(未完成)
  • 让mybatis-plus支持NOT逻辑运算
  • 金仓数据库KingbaseES客户端应用参考手册--16. reindexdb
  • 【140天】尚学堂高淇Java300集视频精华笔记(86-87)
  • 【附node操作实例】redis简明入门系列—字符串类型
  • 【跃迁之路】【669天】程序员高效学习方法论探索系列(实验阶段426-2018.12.13)...
  • angular2开源库收集
  • CentOS 7 防火墙操作
  • JS进阶 - JS 、JS-Web-API与DOM、BOM
  • Nacos系列:Nacos的Java SDK使用
  • Node 版本管理
  • Spark RDD学习: aggregate函数
  • 翻译 | 老司机带你秒懂内存管理 - 第一部(共三部)
  • 翻译:Hystrix - How To Use
  • 翻译--Thinking in React
  • 服务器之间,相同帐号,实现免密钥登录
  • 记录一下第一次使用npm
  • 400多位云计算专家和开发者,加入了同一个组织 ...
  • 资深实践篇 | 基于Kubernetes 1.61的Kubernetes Scheduler 调度详解 ...
  • # Java NIO(一)FileChannel
  • #### go map 底层结构 ####
  • (1综述)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练
  • (html转换)StringEscapeUtils类的转义与反转义方法
  • (Spark3.2.0)Spark SQL 初探: 使用大数据分析2000万KF数据
  • (二)正点原子I.MX6ULL u-boot移植
  • (附源码)springboot掌上博客系统 毕业设计063131
  • (附源码)ssm高校升本考试管理系统 毕业设计 201631
  • (附源码)计算机毕业设计SSM教师教学质量评价系统
  • (附源码)计算机毕业设计SSM疫情下的学生出入管理系统
  • (理论篇)httpmoudle和httphandler一览
  • (十八)devops持续集成开发——使用docker安装部署jenkins流水线服务
  • (四)【Jmeter】 JMeter的界面布局与组件概述
  • (一)Java算法:二分查找
  • (转)3D模板阴影原理
  • (转)树状数组
  • .NET 6 在已知拓扑路径的情况下使用 Dijkstra,A*算法搜索最短路径
  • .NET Core IdentityServer4实战-开篇介绍与规划
  • .Net Redis的秒杀Dome和异步执行
  • .NET 应用架构指导 V2 学习笔记(一) 软件架构的关键原则
  • .NET/C# 阻止屏幕关闭,阻止系统进入睡眠状态
  • .NETCORE 开发登录接口MFA谷歌多因子身份验证
  • .Net下使用 Geb.Video.FFMPEG 操作视频文件
  • /usr/bin/perl:bad interpreter:No such file or directory 的解决办法