JAVA WEB 重学day05
JSP-EL-JSTL-三层架构
学习目标
- 能够说出jsp 的优势
- 能够编写jsp 代码片段、声明、脚本表达式
- 能够说出 el 表达式的作用
- 能够使用 el 表达式获取 javabean 的属性
- 能够使用jstl 标签库的 if 标签
- 能够使用jstl 标签库的foreach 标签
- 能够使用jstl 标签库的 choose 标签
1.JSP
1.1 JSP概述
-
JSP的概念:Java Server Page Java服务器页面,一开始是运行在服务器端的,最终也会被解析成html响应给浏览器。
-
JSP的优势
既可以开发静态资源:方便编写HTML,CSS,JS代码
也可以开发动态资源:可以编写Java代码操作数据获得动态数据 -
浏览器请求JSP文件时,服务器内部会先将JSP文件进行翻译,翻译得到一个Servlet文件:XxxServlet.java
-
将翻译得到的Servlet文件进行编译产生字节码文件:XxxServlet.class
-
将字节码文件加载到内存中并创建对象:XxxServlet servlet = new XxxServlet();
-
调用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脚本表达式
等同于Servlet的代码
// 定义变量
int age = 18;
out.print(age);
out.write("
\n");
out.print(3*5);
1.3.2 JSP代码片段
1.3.3 JSP声明
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四大作用域
1.6 JSP三大指令概述
1.7 JSP的三大动作概述
2.EL
2.1 EL表达式概述
EL表达式主要用于替换JSP页面中的脚本表达式,让Jsp的代码更加简化。
2.2 EL获取作用域数据
使用EL获取数据的前提:数据必须存储到作用域中
案例
3. JSTL
3.1 JSTL核心标签之<c:if>
作用:用于页面执行判断
语法:<c:if test="${条件表达式}"></c:if>
3.2 JSTL核心标签之<c:choose>
作用:用于多分支判断
语法:
<c:choose>
<c:when test=“条件表达式”>
…
</c:when>
…
<c:otherwise>
…
</c:otherwise>
</c:choose>
3.3 JSTL核心标签之<c:forEach>
forEach标签的作用:用来遍历集合或数组
forEach标签的语法:
<c:forEach items=“数组或集合” var=“元素”>
</c:forEach>
4.三层架构概述
-
三层架构概述
表现层:直接和用户交互:展示数据给用户看或接收用户输入的数据。
业务层:处理业务逻辑,比如转账
数据访问层(持久层):专门和数据库交互:对数据库进行增删改查操作 -
访问方式
用户 --> 表现层 --> 业务层 --> 数据访问层 --> 数据库 -
分层的作用(好处)
提高代码的复用性
提高代码的维护性
提高代码的扩展性 -
分层的方式:不同的层使用不同包
表现层:com.pkx.servlet
业务层:com.pkx.service
数据访问层:com.pkx.dao
工具类:com.pkx.utils
测试类:com.pkx.test
实体类:com.pkx.bean/domain/entity/pojo
… -
开发步骤:一般从下往上开发
dao --> service --> servlet/jsp/html