JSP,EL,JSTL

JSP存在的意义:
需要在html当中插入java代码,而存静态html不予许插入java代码,虽然jsp最终会变翻译成java文件,并且会被编译成class文件,成为一个servlet,但是,如果是直接使用servlet将网页输出到浏览器,太过于复杂繁琐,所以为方便实用,就出现了jsp.

因为jsp是基于java技术开发的,所以也具备了java的特点:

跨平台性(从一个平台移植到另外一个平台时,jsp和javaBean的代码不需要重新编译,因为,java的字节码与平台无关,也就验证了java语言"一次编译,到处运行"的特点)
业务代码相分离:在使用JSP技术开发Web应用时,可以将界面的开发与应用程序的开发分离开。开发人员使用HTML来设计界面,使用JSP标签和脚本来动态生成页面上的内容。在服务器端,JSP引擎(或容器,Tomcat)负责解析JSP标签和脚本程序,生成所请求的内容,并将执行结果以HTML页面的形式返回到浏览器。
组件重用:JSP中可以使用JavaBean编写业务组件,也就是使用一个JavaBean类封装业务处理代码或者作为一个数据存储模型,在JSP页面中,甚至在整个项目中,都可以重复使用这个JavaBean,同时,JavaBean也可以应用到其他Java应用程序中。
预编译:预编译就是在用户第一次通过浏览器访问JSP页面时,服务器将对JSP页面代码进行编译,并且仅执行一次编译。编译好的代码将被保存,在用户下一次访问时,会直接执行编译好的代码。这样不仅节约了服务器的CPU资源,还大大的提升了客户端的访问速度。

JSP的使用:
JSP的注释: <%-- jsp注释 --%> HTML的注释 <!‐‐‐html注释‐‐>
在访问页面查看源代码的时候,可以看见HTML注释,而JSP注释在页面访问时的源代码当中不可见 总结: jsp的注释不会显示在源码上,更加安全 , 所以在jsp页面中推荐使用jsp的注释。
JSP书写Java代码的三种格式:

                  脚本片段:     <%    %>        允许分开写,然后组合在一起
                  脚本声明:     <%!    %>          总结:脚本声明书写的java代码会翻译在类的成员位置上
                  脚本表达式:  <%=    %>        总结:脚本表达式书写的java代码,会翻译到java文件中的_jspService方法内,被out.print输出到页面。

EL表达式的存在的意义:

       作用:代替jsp中脚本表达式的功能,简化对java代码的操作。
        1. EL表达式的格式:${表达式内容}        2. EL表达式的作用: 主要是从域对象中查找指定的数据。
注意事项:
        1. 设置map集合数据的key,尽量不要出现”.“2. 凡是在EL表达式中使用”.“可以获取的数据,使用"[]"也可以获取
        2. 如果el表达式获取不到数据,页面没有显示内容,不是显示”null“    java脚本表达式获取不到数据,会显示null
        3. el在获取JavaBean的数据时候,底层调用的是getXXX方法。

EL表达式执行运算:
支持算术运算、逻辑运算、比较运算、empty运算符、三元运算

<%‐‐注意事项:1 在EL中,只要是数字就能执行运算,EL在执行计算的时候,默认,将所有数据转换成Long类 2 在EL中,如果在一个算式中有数据不存在,那么这个数据不参与运算,不报错继续执行。注意:逻辑运算中的异或"^"EL不支持。‐‐%>
empty运算符是用来判断当前获取的数据是否为空或者当前获取的集合是否没有任何数据,三元运算符和java的三元运算符功能一致。

JSTL标签核心库存在的意义:

    使用标签标签代替java代码,提高代码的重用性(JSTL底层是封装好的Java), 以获取最佳性能
    JSTL核心标签库列表
    <c:if> 用户java代码if(){}语句功能 重点掌握
            test:判断是否执行标签内的内容(true:执行标签中的内容,false:不执行)。
            var:用来保存test属性的结果(使用var属性给他取个名字),这个结果可以保存到指定的容器中。
            scope:指定保存数据的容器。注:是否支持EL表达式指的是 是否可以在属性中书写EL表达式。
    <c:forEach> 用户代替java代码for循环语句 重点掌握
            var:在不循环对象的时候,保存的是控制循环的变量;在循环对象的时候,保存的是被循环对象中的元素
            items:指定要循环的对象
            varStatus:保存了当前循环过程中的信息(循环的开始、结束、步长、次数等)
            begin:设置循环的开始
            end:设置循环的结束
            step:设置步长——间隔几次循环,执行一次循环体中的内容
    <c:choose> 用于指定多个条件选择的组合边界,它必须与c:when和c:otherwise标签一起使用,三个标签组合发挥java代码if(){}else if(){} else{}语句的作用。 三个标签必须组合使用,一组标签中不能出现两个<c:otherwise>。
            <c:when>,相当于else if(){}。<c:when>标签含有test属性,作用与if相同<c:otherwise>,相当于else{}。               
    <c:out> 通常用于输出一段文本内容到客户端浏览器
    <c:set> 用于设置各种Web域中的属性
    <c:remove> 用于删除各种Web域中的属性
    <c:catch> 用于捕获嵌套在标签体中的内容抛出的异常
    <c:forTokens> 用户迭代操作String字符
    <c:param> 给请求路径添加参数<c:url> 重写url,在请求路径添加sessionid
    <c:import> 用于在JSP页面中导入一个URL地址指向的资源内容
    <c:redirect> 用于将当前的访问请求转发或重定向到其他资源

注意 : jsp本质上也是servlet,以前也会在jsp中处理业务逻辑,现在jsp的主要作用就是数据的展示,所以我们需要掌握在页面上遍历和判断的操作.

JSTL核心标签库的使用需要导包: javax.servlet.jsp.jstl.jar jstl‐impl.jar
使用taglib指令在jsp页面导入要使用的jstl标签库<%@ taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core” %>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值