遇到出错自己解决:出错先看控制台,前端就f12看开发中工具,最后再查看路径
目录
(面试题)jsp:include标签和include指令的区别?
jsp语言与PHP、ASP、ASP.NET等语言类似,都是运行在服务端的语言
JSP技术是以Java语言作为脚本语言的,JSP网页为整个服务器端的Java库单元提供了一个接口来服务于HTTP的应用程序。
JSP文件后缀名为*.jsp
JSP开发的WEB应用可以跨平台使用,既可以运行在Linux上也能运行在Windows上
1.JSP本质上就是servlet
2.JSP更侧重于视图展示,servlet更侧重于逻辑处理
3.先有的servlet,后有的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.多个脚本片段中的代码可以相互访问
格式:<%=%>,用于将已经声明的变量或者表达式输出到网页上面。
<%= num %>
其中写的内容将来会直接翻译在Servlet类中,因为我们可以在类中定义方法和属性以及全局变量,所以我们可以在<%!%>中声明方法、属性、全局变量。
- <%!
- int x = 10;
-
- static{
-
- }
-
- public void fun(){
-
- }
- %>
<%@ 指令名 属性1=“值1” 属性2=“值2”.....%>
那都有什么指令呢:
page指令:定义整个JSP页面的相关属性
include指令:引入其他的JSP页面。先把两个页面结合,在去编译成servlet。
taglib指令:引入页面上需要用到的标签库
使用语法格式:一般在页面最顶上:<%@ 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 file="文件相对 url 地址" %>
语法格式:<%@ taglib uri="uri" prefix="prefixOfTag" %>
(1)jsp:include:引入指定的页面
(2)jsp:forward:转发页面
(3)jsp:param:传参数
使用格式:
或:
include标签:先把要引入的页面编译,再合并
include指令:先把要引入的页面合并,再编译
静态引入:
<%@ include file="/xxx.jsp" %>
静态引入会生成一个java文件,两个jsp文件中可以共享同一个变量,但不能定义重名的变量。
动态引入:
<jsp:include page="/xxx.jsp"/>
动态引入会生成两个java文件,两个jsp文件中不可以共享同一个变量,可以定义重名的变量。
在静态引入与动态引入均可使用时,一般使用静态引入。因为在程序运行时只存在一个Servlet,对资源的消耗较少,且不存在调用问题,执行效率较高。
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");
- %>
获取:
pageContext:<%= pageContext.getAttribute("pageContext")%>
request:<%= request.getAttribute("request")%>
session:<%= session.getAttribute("session")%>
application:<%= application.getAttribute("application")%>
内置:不需要创建,直接就能用。
***request | 请求 |
***response | 响应 |
***session | 会话 |
out | 输出 |
page | 当前JSP页面对象 |
application | 应用 |
exception | 异常,只能在指定了isErrorPage="true"使用 |
pageContext | 当前页,作用域 |
config | 配置 |
SP表达式语言(EL)使得可以轻松访问存储在JavaBeans组件中的应用程序数据。JSP EL允许用来创建算术和逻辑表达式。在JSP EL表达式中,可以使用整数,浮点数,字符串,布尔值的内置常量为true和false以及null值。
语法:
通常,当在JSP标记中指定属性值时,只需使用字符串即可。 例如
setProperty name = "box" property = "perimeter" value = "100"/>
JSP EL允许为这些属性值指定一个表达式。JSP EL的语法如下:
${expr}
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、不支持流程控制语句
pageContext
requestScope
sessionScope
applicationScope
JSP虽然是使用方面较少了,但是它在面试题仍然不能马虎,我将老师特意讲的面试题标红以备不时之需