JAVA WEB 重学day05

学习目标

  • 能够说出jsp 的优势
  • 能够编写jsp 代码片段、声明、脚本表达式
  • 能够说出 el 表达式的作用
  • 能够使用 el 表达式获取 javabean 的属性
  • 能够使用jstl 标签库的 if 标签
  • 能够使用jstl 标签库的foreach 标签
  • 能够使用jstl 标签库的 choose 标签

1.JSP

1.1 JSP概述

  1. JSP的概念:Java Server Page Java服务器页面,一开始是运行在服务器端的,最终也会被解析成html响应给浏览器。

  2. JSP的优势
    既可以开发静态资源:方便编写HTML,CSS,JS代码
    也可以开发动态资源:可以编写Java代码操作数据获得动态数据
    JAVA WEB 重学day05

  3. 浏览器请求JSP文件时,服务器内部会先将JSP文件进行翻译,翻译得到一个Servlet文件:XxxServlet.java

  4. 将翻译得到的Servlet文件进行编译产生字节码文件:XxxServlet.class

  5. 将字节码文件加载到内存中并创建对象:XxxServlet servlet = new XxxServlet();

  6. 调用Servlet对象的service方法处理请求和响应数据

1.2 注意事项

JSP和Servlet的关系

  • 查看源码:看类的继承体系

    public final class showTime_jsp extendsorg.apache.jasper.runtime.HttpJspBase

    public abstract class HttpJspBase extends HttpServlet

  • 得出结论:JSP就是Servle

JSP什么时候翻译成Servlet

浏览器第一次访问时翻译,如果下一次访问内容没有发生变化,则不会翻译了,直接创建Servlet对象调用service方法。如果JSP文件的内容改变了,则会再次执行翻译和编译等动作。

1.3 案例

1.3.1 JSP脚本表达式

JAVA WEB 重学day05

JAVA WEB 重学day05
等同于Servlet的代码

// 定义变量
int age = 18;

out.print(age);
out.write("
\n");
out.print(3*5);

1.3.2 JSP代码片段

JAVA WEB 重学day05

JAVA WEB 重学day05

1.3.3 JSP声明

JAVA WEB 重学day05

JAVA WEB 重学day05

1.4 JSP内置对象概述

对象名 类型 描述
request HttpServletRequest 请求对象
response HttpServleResonse 响应对象
out JspWriter 具有缓冲区的字符输出流
session HttpSession 会话域对象
application ServletContext 上下文对象
config ServltConfig Servlet配置对象
exception Throwable 异常对象
page this 代表js当前页面
pageContext PageContext 页面域对象

JSP九大内置对象分别是

request,response,session,application,config,page,pageContext,exception,out

1.5 JSP四大作用域

JAVA WEB 重学day05

1.6 JSP三大指令概述

JAVA WEB 重学day05

1.7 JSP的三大动作概述

JAVA WEB 重学day05

2.EL

2.1 EL表达式概述

EL表达式主要用于替换JSP页面中的脚本表达式,让Jsp的代码更加简化。
JAVA WEB 重学day05

2.2 EL获取作用域数据

使用EL获取数据的前提:数据必须存储到作用域中

案例
JAVA WEB 重学day05
JAVA WEB 重学day05

3. JSTL

3.1 JSTL核心标签之<c:if>

作用:用于页面执行判断
语法:<c:if test="${条件表达式}"></c:if>
JAVA WEB 重学day05

3.2 JSTL核心标签之<c:choose>

作用:用于多分支判断
语法:
<c:choose>
<c:when test=“条件表达式”>

</c:when>

<c:otherwise>

</c:otherwise>
</c:choose>

JAVA WEB 重学day05

3.3 JSTL核心标签之<c:forEach>

forEach标签的作用:用来遍历集合或数组
forEach标签的语法:
<c:forEach items=“数组或集合” var=“元素”>

</c:forEach>
JAVA WEB 重学day05

4.三层架构概述

  1. 三层架构概述
    表现层:直接和用户交互:展示数据给用户看或接收用户输入的数据。
    业务层:处理业务逻辑,比如转账
    数据访问层(持久层):专门和数据库交互:对数据库进行增删改查操作

  2. 访问方式
    用户 --> 表现层 --> 业务层 --> 数据访问层 --> 数据库

  3. 分层的作用(好处)
    提高代码的复用性
    提高代码的维护性
    提高代码的扩展性

  4. 分层的方式:不同的层使用不同包
    表现层:com.pkx.servlet
    业务层:com.pkx.service
    数据访问层:com.pkx.dao
    工具类:com.pkx.utils
    测试类:com.pkx.test
    实体类:com.pkx.bean/domain/entity/pojo

  5. 开发步骤:一般从下往上开发
    dao --> service --> servlet/jsp/html