JSP,即Java服务端页面,是一种动态网页技,其中既可以定义HTML、JS、CSS等静态内容,还可以定义JAVA代码的动态内容。
如下所示:
一、快速入门
- 导入JSP坐标
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2</version>
<scope>provided</scope>
</dependency>
- 创建JSP文件
- 在JSP文件编写HTML标签和Java代码
二、JSP原理
JSP=HTML+Java,本质上就是一个Servlet。
JSP被访问时,JSP容器(即Tomcat)会将JSP转为JAVA文件(一个Servlet),再由JSP容器将这个JAVA文件编译,最终对外提供服务的就是编译后的.class文件。
三、JSP脚本
(一)EL表达式
- 主要功能:获取JAVA文件中的数据
- 语法:
${key值}
,获取域中指定key值的数据。 - JavaWeb四大域对象:
A. page:当前页面有效
B. request:当前请求有效
C. session:当前会话有效
D. application:当前应用有效
el表达式获取数据时,依次从这四个域中寻找,直到找到为止。
(二)JSTL标签
JSP标签标签库,使用标签取代了JSP页面上的Java代码
使用步骤:
- 导入坐标
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>
- 在JSP文件开头引入标签
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
- 开始使用
<!-- if标签,test里的写表达式,用于条件判断 -->
<c:if test="EL表达式">
<h1>内容</h1>
</c:if>
<!-- forEach标签,相当于for循环,items代表被遍历的对象,var代表对象的某一次值 -->
<c:forEach items="${brands}" var="brand">
<tr align="center">
<td>${brand.id}</td>
<td>${brand.brandName}</td>
<td>${brand.companyName}</td>
<td>${brand.description}</td>
</tr>
</c:forEach>
附:Servlet转发数据到JSP中
//转发一个名为brands的ArrayList数组
request.setAttribute("brands",brands);
request.getRequestDispatcher("/jstl-if.jsp").forward(request,response);
四、MVC模式和三层架构
(一)MVC模式
MVC:一种分层开发的模式
- M:Mode,业务模型,处理业务。
- V:View,视图,界面展示。
- C:Controller,控制器,处理请求,调用模型和视图。
比如Servlet就是一个控制器,用来调用Java代码(业务模型)处理业务,然后将各种数据交给网页(视图)做界面展示。
MVC好处:
- 职责单一,互不影响
- 有利于分工协作
- 有利于组件重用
(二)三层架构
每一个层次都有一些框架,比如
- 表现层框架:SpringMVC/Struts2
- 业务逻辑层:Spring
- 数据访问层:MyBatis/Hibername