一、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的九大内置对象

  1. request HttpServletRequest 类的实例
  2. response HttpServletResponse 类的实例
  3. out PrintWriter 类的实例,用于把结果输出至网页上
  4. session HttpSession 类的实例
  5. application ServletContext 类的实例,与应用上下文有关
  6. config ServletConfig 类的实例
  7. pageContext PageContext 类的实例,提供对 JSP 页面所有对象以及命名空间的访问
  8. page 类似于 Java 类中的 this 关键字
  9. 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

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐