JSP新手必会
组成
一般由java代码块 静态HTML内容 和 jsp方法组成
属于动态页面
jsp是单例多线程的 本质是servlet 与servlet不同的是 jsp是专门用进行数据展示的servlet 普通的servlet只用于完成业务逻辑处理的
jsp规范
将jsp翻译成servlet的过程,是由Tomcat完成 在Tomcat中内置了一个jsp引擎,当第一次访问该jsp页面时,翻译引擎会将jsp页面翻译为servlet的
.java文件 然后再将其编译为.class文件
jsp注释
<%-- 内容–%>
注意:和HTML注释的区别 HTML的注释会被翻译引擎翻译到servlet的标准输出流中 一般重要的注释写在jsp注释中 这样客户端f12也看不得
java代码块
注释:java代码块写在的是类的方法里面
<%
java代码块 和java格式一样 位置可以随便写 哪里都可以
但是不允许写访问权限控制符
不能定义方法
不能写静态语句块
%>
声明语句块
<%! 基本不用
这个代码写在类中 所以权限 方法都可以使用
%>
表达式语句块
<%=
在jsp页面中使用 其可以再jsp页面中输出变量 常量 和各种表达式的值
注意:是表达式 不是语句 没有分号
%>
静态联动
<%@ include file="/..."%> 写你想导入的文件
在当前的jsp页面中,你把include写在哪里 它就会将你到如的文件的内容输出到那里 这样做可以统一修改 减少代码量 当你输入一个重复得到的时候就可以用include插入 比如目录 菜单 导航条等等…
注意:你使用include之后 两个jsp文件是共享的 编译引擎会将这两个jsp全部写入一个.java文件中
jsp动作
七个动作 主要用forword 与 include 和servlet时候的请求连接相似
forward使用后 当前jsp页面没有开启标准输出流 所以当前jsp的out啥的无法显示
include使用后 标准输出流已经开启
jsp动作又称为动态联动 注意 这个两个jsp页面代码 会被 编译引擎编辑到两个.java文件中 所以变量啥的不共享
静态联编和动态联编的应用场景
1.在均可使用时候 一般使用静态联编 因为在程序运行时候只存在一个servlet
2.对资源的消耗少 且不存在调用问题 执行效率高
3.若两个文件共享数据 使用静态联编
4.若使用同名变量 并且不能混淆 使用动态联编
EL表达式
只能接受数据 不能创建数据 而且只能接受四大域中的数据 并且只能接受静态数据
使用方式:${数据}
四大域:
pageContext.setAttribute("address","tiaodan");
request.setAttribute("address","molitie");
session.setAttribute("address","ziweibang");
application.setAttribute("address","gangsai");
address = ${address}<br>
<%--
getjspbody()获取标签体对象
getjspbody().invoke(null)将标签体内容写入到输出流
getcontext().getout()获取标签输出流
--%>
EL不会抛出空指针异常 如果找不到数据 就不会显示
EL不会抛出数组访问越界异常 若访问一个数据不存在的元素 那就什么都显示
EL不具有对字符串的处理能力 就连简单的字符串拼接都不行
注意:当你调用四大域中相同键的数据时候 他会从大到小搜索
顺序:page>request>session>application