jsp

动态页面技术

一、JSP

1. 简介

  • JSP:Java Server Page,Java服务器端页面技术,是Sun公司提供的一套规范。表面上是HTML+Java,但是JSP的本质是Servlet

  • JSP和Servlet的对比:

    • JSP:擅长页面显示的内容(直接写HTML代码);不擅长于功能逻辑的处理(在JSP里嵌套Java代码)

    • Servlet:擅长于功能逻辑的处理(就是Java类);不擅长于页面显示的内容(response.getWriter().print())

  • 实际开发中,是JSP+Servlet配合使用

2. 原理

  • 了解JSP的运行原理(运行过程)

  • JSP必须要部署在服务器软件里:由服务器软件把JSP文件,翻译转换成Servlet,实际运行的是Servlet的代码

  • 过程:

    • jsp文件 ------翻译----->Java文件(Servlet)------编译------>class文件(Servlet)------>有客户端访问,Tomcat就调用这个Servlet的代码

  • 什么时候,Tomcat会把JSP翻译成Servlet?

    • 第一次访问时

3. 语法(了解)

3.1 JSP的注释

<%-- JSP的注释,可以注释JSP文件里的一切内容 --%>

3.2 JSP里嵌套Java代码

  • 嵌套Java表达式:<%=Java表达式 %>, 被EL表达式代替了

    • 用于把Java表达式的结果,显示到页面上

  • 嵌套Java代码片段:<% Java代码片段 %>, 被JSTL代替了

    • 通常用于写if判断、for循环等逻辑代码

  • 嵌套Java声明:<%! Java声明 %>,不使用这种方式

    • 声明的是Servlet类的成员变量或者成员方法

二、EL

1. 什么是EL

  • EL:Expression Language,EL表达式。目的是用于:代替<%=Java表达式 %>,向页面输出显示内容

  • 基本语法:${表达式内容}

2. EL的使用

2.1 从域对象里取数据并显示到页面

${pageScope.key}  <!-- 从pageContext里取key对应的数据,显示到页面上 -->
${requestScope.key} <!-- 从request里取key对应的数据,显示到页面上 -->
${sessionScope.key} <!-- 从session里取key对应的数据,显示到页面上 -->
${applicationScope.key} <!-- 从ServletContext里取key对应的数据,显示到页面上 -->
​
​
${key} <!-- 从四个域对象, 按从小到大的顺序,查找key对应的数据 --> 
  • ${key[索引].key}:根据索引找,使用[索引].key可以是获取键值对里key对应的值,也可以是方法getKey()的值

2.2 可以进行数据运算

  • 基本数学运算:+, -, *, /, %

  • 比较运算:>,<,>=,<=,==,!= 或者 gt, lt, ge, le, eq, ne

  • 逻辑运算:&&, ||, ! 或者 and, or , not

  • 判空:empty

  • 三元运算:判断条件?结果为true的值:结果为false的值

三、JSTL

1. 简介

  • JSTL:JSP Standard Tag Library, JSP标准标签库。提供了一些标签,这些标签有逻辑功能,比如:if判断、forEach循环等等。可以用来代替JSP里<% Java代码片段 %>

  • JSTL标签库包含5个子库,但是目前还用的上的只剩一个:core核心库,提供了if判断和循环遍历的标签

2. 引入JSTL

  • 引入jar包

  • 在JSP里引入要使用标签库:在JSP里page指令下增加代码

    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

3. JSTL的标签使用

JSTL标签本身,不具备从域里取数据的能力,也不具备数据运算的能力。需要配合EL表达式来完成功能

3.1 c:if标签

  • 作用:用来进行判断的

  • 语法:

    <c:if test="判断条件,使用EL表达式进行判断">
        如果判断为true,这里的内容会生效
    </c:if>
  • 示例:

    <c:if test="${age < 18}">
        <span style="color:red;">未成年</span>
    </c:if>
    <c:if test="${age >= 18}">
        <span style="color:green;">已成年</span>
    </c:if>

3.2 c:forEach标签

  • 作用:用来进行循环遍历的

  • 基本for循环

    • 语法:

    <c:forEach var="变量名" begin="变量开始值" end="变量结束值" step="步长,每次循环加几">
        当前值是:${变量名}
    </c:forEach>
    • 示例:

    <c:forEach var="i" begin="1" end="10" step="1">
        <span style="color:red;">${i}</span>
    </c:forEach>
  • 增强for循环

    • 语法:

    <c:forEach items="循环遍历的对象,使用EL表达式获取到" var="变量名" varStatus="vs">
        当前对象:${变量名},
        当前序号:${vs.count},
        当前索引:${vs.index},
        当前是否第一个:${vs.first},
        当前是否最后一个:${vs.last}
    </c:forEach>
    • 示例:

    <table border="1" width="500px" cellspacing="0">
        <tr>
            <th>序号</th>
            <th>索引</th>
            <th>姓名</th>
            <th>年龄</th>
        </tr>
        <!-- 把域里的用户信息,循环显示到表格里。每个用户是一行 -->
        <c:forEach items="${userList}" var="user" varStatus="vs">
            <tr>
                <td>${vs.count}</td>
                <td>${vs.index}</td>
                <td>${user.name}</td>
                <td>${user.age}</td>
            </tr>
        </c:forEach>
    </table>

四、JSP开发模式

1. MVC模式

  • Model1阶段的第一代:JSP

    • JSP:负责一切,数据库操作、功能逻辑、页面的显示

  • Model1阶段的第二代:JSP+JavaBean

    • JavaBean:数据库实体封装

    • JSP:功能逻辑、页面的显示

  • Model2阶段:JSP+JavaBean+Servlet

    • JavaBean:数据库实体封装

    • JSP:负责页面的显示

    • Servlet:功能逻辑

  • MVC思想:Model2阶段符合MVC模式的

    • M:Model模型层,JavaBean

    • V:View视图层,JSP

    • C:Controller控制层,Servlet

2. JavaEE三层架构

指服务端代码的分层:

  • web层(表现层、表示层):和客户端交互的,对应一个package(web),放Servlet

  • service层(业务逻辑层):完成功能逻辑的,对应一个package(service),放XXXService

  • dao层(数据访问层、持久层):操作数据库的,对应一个package(dao),放XXXDao

     

  • domain包:放JavaBean

  • util包:放工具类

3.练习

 

内容回顾

  1. 理解JSP的运行原理(运行过程)

    JSP---->Java文件(Servlet)---->class文件

    客户端访问JSP时,Tomcat会调用class(Servlet代码)

  2. 能够使用EL表达式从域里获取数据:${key[索引].key}

  3. 能够使用EL表达式进行运算:基本数学运算、比较运算、逻辑运算、empty判空和三元运算

  4. 能够使用JSTL的if标签,进行判断

  5. 能够使用JSTL的forEach标签,进行基本for循环和增强for循环

  6. 能够按照JavaEE三层架构进行开发

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值