JSP与EL的详细解说
一、JSP(一)、JSP是什么JSP是 Java服务器页面 (Java Server Page,JSP) 的简称;扩展名 .jsp;是一种建立在Servlet规范提供的功能之上的动态网页技术,允许在网页文件中嵌入java代码和jsp标记。本质是一种特殊的Servlet。...
一、JSP
(一)、JSP是什么
JSP是 Java服务器页面 (Java Server Page,JSP) 的简称;扩展名 .jsp;
是一种建立在Servlet规范提供的功能之上的动态网页技术,允许在网页文件中嵌入java代码和jsp标记。
本质是一种特殊的Servlet
(二)、JSP的执行过程
(1)Jsp文件在用户第一次请求时,会被编译成Servlet,然后由这个Servlet处理用户的请求,所以jsp可以看成是运行时的Servlet
(2)Jsp容器(也就是Servlet容器)管理jsp页面声明周期分为两个阶段.即转换阶段和执行阶段
(3)当有一个对jsp页面的请求到来时,jsp容器检查jsp页面的语法是否正确,将jsp页面转换为Servlet源文件,然后调用javac命令编译Servlet源文件生成字节码文件.这是转换阶段
(4)Servlet容器加载转换后的Servlet类,这是执行阶段
(三)、JSP 页面的元素
静态内容 ------------→ HTML、js、css静态文本
指令 ------------→ 以 <%@ 开始,以 %> 结束
表达式 ------------→ <%=Java表达式 %>
代码块 ------------→ <% Java 代码(变量:_jspService方法的局部变量) %>
声明 ------------→ <%! 函数或方法、变量(成员变量) %>
动作 ------------→以 <jsp: 动作名 开始,以 </jsp:动作名> 结束
注释 ------------→ <%-- 这是注释,但客户端不能查看到 --%>
(四)、JSP 指令
用来设置与整个 JSP 页面相关的属性。
<%@ page … %> 定义页面的依赖属性,比如脚本语言、error 页面、缓存需求等等
<%@ include … %> 包含其他文件
<%@ taglib … %> 引入标签库的定义,可以是自定义标签 <%@ taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c” %>
(五)、jsp的九大内置对象
- request HttpServletRequest 类的实例
- response HttpServletResponse 类的实例
- out PrintWriter 类的实例,用于把结果输出至网页上
- session HttpSession 类的实例
- application ServletContext 类的实例,与应用上下文有关
- config ServletConfig 类的实例
- pageContext PageContext 类的实例,提供对 JSP 页面所有对象以及命名空间的访问
- page 类似于 Java 类中的 this 关键字
- Exception Exception 类的对象,代表发生错误的 JSP 页面中对应的异常对象
(六)JSP四大作用域分别为:page、request、session、application。
二、EL 表达式
EL 为表达式语言(Expression Language),可以简化对变量或对象的访问
语法 :所有的表达式以”${”开始,以”}”结束。 ${ }
(一)、开启和禁用El表达式
在page指令中设置 isELIgnored =“true|false”
(二)、JSP EL 表达式用于以下情形
1、静态文本( JavaScript脚本在jsp中属于静态内容)
2、标准标签和自定义标签
注意:EL不能在脚本元素中使用 脚本元素不是指JavaScript脚本,而是 <% Java 代码 %>
(三)、使用EL表达式获取数据
EL使用”[ ]”和”.”操作符来访问数据
对于连字符(-)或者其它特殊字符的字符串只能用“[ ]”操作符,而不能用“.”操作符,这也是“[ ]”和“.”操作符的区别 如 ${header[“User-Agent”]}
EL表达式的操作内容可以是:常量、变量、jsp隐含对像
EL表达式还提供了对操作内容的运算:属性取值、运算、逻辑运算
EL表达式的操作结果会自动输出到输出流对像中
EL 表达式只能通过内置对象取值,也就是只读操作
(四)、EL 运算符
(1)、EL 算术运算符 + - * /(div) %(mod)
(2)、EL 关系运算符 ==(eq) !=(ne) <(lt) <=(le) >(gt) >=(ge)
(3)、EL 逻辑运算符 &&(and) ||(or) !(not)
(4)、EL 其他运算符
1) empty 运算符 用来判断值是否为null 或空的
2) 条件运算符 ${ A ? B : C} 意思是说,当A 为true 时,执行B;而A 为false 时,则执行C
3) () 括号运算符 用来改变执行优先权,例如: ${ A * (B+C) }
(五)、内置对象
隐含对象 类型 说明
pageContext javax.servlet.ServletContext 表示此 JSP 的 PageContext
pageScope java.util.Map 取得Page 范围的属性名称所对应的值
requestScope java.util.Map 取得Request 范围的属性名称所对应的值
sessionScope java.util.Map 取得Session 范围的属性名称所对应的值
applicationScope java.util.Map 取得Application 范围的属性名称所对应的值
param java.util.Map 如同ServletRequest.getParameter(String name)。回传 String 类型的值
paramValues java.util.Map 如同ServletRequest.getParameterValues(String name)。回传 String[] 类型的值
header java.util.Map 如同ServletRequest.getHeader(String name)。回传 String 类型的值
headerValues java.util.Map 如同ServletRequest.getHeaders(String name)。回传 String[] 类型的值
cookie java.util.Map 如同HttpServletRequest.getCookies()
initParam java.util.Map 如同ServletContext.getInitParameter(String name)。回传 String 类型的值
(六)、作用域
PageScope
RequestScope
sessionScope
applicationScope
更多推荐
所有评论(0)