JSP和EL表达式

一、JSP的含义
1 Jsp是一种建立在Servlet规范提供的功能之上的动态网页技术,允许在网页文件中嵌入java代码和jsp标记。
2 Java 服务器页面 (Java Server Page ,JSP) ;扩展名 .jsp
3 执行过程
(1)Jsp文件在用户第一次请求时,会被编译成Servlet,然后由这个Servlet处理用户的请求,所以jsp可以看成是运行时的Servlet
(2)Jsp容器(也就是Servlet容器)管理jsp页面声明周期分为两个阶段.即转换阶段和执行阶段
(3)当有一个对jsp页面的请求到来时,jsp容器检查jsp页面的语法是否正确,将jsp页面转换为Servlet源文件,然后调用javac命令编译Servlet源文件生成字节码文件.这是转换阶段
(4)Servlet容器加载转换后的Servlet类,这是执行阶段
如图所示:

4 JSP 页面的元素
静态内容 ------------→ HTML、js、css静态文本
指令 ------------→ 以 <%@ 开始,以 %> 结束
表达式 ------------→ <%=Java表达式 %> *
代码块 ------------→ <% Java 代码(变量:_jspService方法的局部变量) %> *
声明 ------------→ <%! 函数或方法、变量(成员变量) %> *
动作 ------------→以 <jsp: 动作名 开始,以 </jsp:动作名> 结束
注释 ------------→ <%-- 这也是注释,但客户端不能查看到 --%> *
5 JSP 指令 用来设置与整个 JSP 页面相关的属性。
<%@ page … %> 定义页面的依赖属性,比如脚本语言、error 页面、缓存需求等等
<%@ include … %> 包含其他文件
<%@ taglib … %> 引入标签库的定义,可以是自定义标签
6 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 页面中对应的异常对象
    7 JSP 作用域包括 page、request、session 和 application
    二、EL表达式
    EL 为表达式语言(Expression Language),可以简化对变量的对象的访问
    语法 : E L E x p r e s s i o n 所 有 的 表 达 式 以 ” {EL Expression}所有的表达式以” ELExpression{”开始,以”}”结束。
    是否启用EL表达式 isELIgnored =“true|false”
    JSP EL 表达式用于以下情形
    静态文本
    标准标签和自定义标签
    EL不能在脚本元素中使用脚本元素不是指JavaScript脚本,而是 <% Java 代码 %>
    JavaScript脚本在jsp中属于静态内容
    EL使用”[ ]”和”.”操作符来访问数据
    对于连字符(-)或者其它特殊字符的字符串只能用“[ ]”操作符,而不能用“.”操作符,这也是“[ ]”和“.”操作符的区别 如 ${header[“User-Agent”]}
    EL表达式的操作内容可以是:常量、变量、jsp隐含对像
    EL表达式还提供了对操作内容的运算:属性取值、运算、逻辑运算
    EL表达式的操作结果会自动输出到输出流对像中
    EL 表达式只能通过内置对象取值,也就是只读操作
    EL 运算符
    a) EL 算术运算符 + - * /(div) %(mod)
    b) EL 关系运算符 ==(eq) !=(ne) <(lt) <=(le) >(gt) >=(ge)
    c) EL 逻辑运算符 &&(and) ||(or) !(not)
    d) 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 类型的值
      el表达式的作用域 PageScope RequestScope sessionScope plicationScope

1、 JSP文件必须在JSP服务器内运行。
2、 JSP文件必须生成Servlet才能执行。
3、 每个JSP页面的第一个访问者速度很慢,因为必须等待JSP编译成Servlet。
4、 JSP页面的访问者无须安装任何客户端,甚至不需要可以运行Java的运行环境,因为JSP页面输送到客户端的是标准HTML页面。
5、 JSP页面的静态内容、JSP脚本都会转换成Servlet的xxxService()方法,类似于自行创建Servlet时service()方法。
6、 JSP声明部分,转换成Servlet的成员部分。所有JSP声明部分可以使用private,protected,public,static等修饰符,其他地方则不行。
7、 JSP的输出表达式(<%= …%>部分),输出表达式会转换成Servlet的xxxService()方法里的输出语句。
8、 九个内置对象要么是xxxService()方法的形参,要么是该方法的局部变量,所以九个内置对象只能在JSP脚本和输出表达式中使用。
<%! %>里声明的变量和方法都是作为类的属性和方法存在的,而<% %>里声明的变量则是作为_jspService这个方法的内部属性 (这也决定了<% %>里不能声明方法)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值