JSP
JSP脚本片段:用于在JSP页面写java代码
<% %>
<%
int num = 0;
num++;
System.out.println(num);
//向页面打印输出
out.print(num);
%>
注意事项:
- JSP脚本片段中只能出现java代码,不能出现HTml元素。在访问JSP时,JSP引擎翻译JSP页面中的脚本
- JSP脚本片段中的java代码必须严格遵守java的规则
- 一个JSP页面是可以有多个脚本片段的
- 多个脚本片段中的代码可以相互访问
JSP表达式
<%= 变量 %>
<%= num %>
JSP声明片段
<%!
int x = 10;
static{}
public void fun(){}
%>
JSP的配置指令
-
page指令:定义整个JSP页面的相关属性
-
include指令:引入其他的JSP页面。先把两个页面结合,在去编译成Servlet
-
taglib指令:引入页面上其他需要用到的标签
-
autoFlush:自动刷新---[当缓存满了,自动刷新]
-
errorPage:出现错误自动跳转指定页面
-
iserrorPage:指定是不是错误的页面---[可以用exception,不设置为true不能使用]
JSP标签
- 内置标签
- jsp:include 引入指定的页面
- jsp:forward 转发页面
- jsp:param 传参数
- JSTL标签,需要导入JSTL标签库
- 自定义标签
JSP作用域
- 当前页(pageContext):一个属性只能在一个页面中获取
- 一次请求(request):一个页面中设置的属性,范围是一次请求
- 一次会话(session):一个会话中的属性,只要页面不关闭,都能获取到
- 整个web应用(application):在这个服务器上,当前项目下的任何一个位置都能获取
EL表达式
EL表达式的内置作用域
- pageContext
- requestScope
- sessionScope
- applicationScope
EL表达式的缺陷
- 只能读不能写
- 不支持流程控制语句
面试题
JSP和Servlet的区别?
- JSP本质上就是一个servlet
- JSP更侧重于视图的展示,Servlet更侧重于逻辑处理
- 先有Servlet,后有JSP
jsp:include标签和include指令的区别?
- include标签:先把要引入的页面编译,再合并
- include指令:先把要引入的页面合并,再编译
JSP的四大作用域
- 当前页(pageContext):一个属性只能在一个页面中获取
- 一次请求(request):一个页面中设置的属性,范围是一次请求
- 一次会话(session):一个会话中的属性,只要页面不关闭,都能获取到
- 整个web应用(application):在这个服务器上,当前项目下的任何一个位置都能获取
JSP的九大内置对象----内置:不需要创建,直接就能用
- request 请求
- response 响应
- session 会话
- out 输出
- page 当前JSP页面本身
- application 应用
- exception 异常----只能指定在isErrorPage="true"
- pageContext 当前页-----作用域
- config 配置