一. 背景
- 由于Servlet必须把给用户响应的视图组装成一个很长的HTML格式的字符串写入println()方法中,故容易出错和可读性差。
- 故JSP的诞生解决了该问题。其思想是:让每个Servlet 只负责其对应的业务逻辑的处理,JSP来负责用户的HTML显示,实现了业务逻辑与视图实现的分离。
二. 异同
- 同
(1)JSP可看作是特殊的Servlet,是对Servlet的扩展 ;
(2)JSP页面最终要转换成Servlet来运行,故处理请求实际上是编译后的Servlet。 - 异
(1)Servlet的实现是在Java中嵌入HTML代码,编辑和修改不方便,故适合做流程控制、业务处理;JSP的实现是在HTML中嵌入Java代码,适合做页面显示;
(2)Servlet没有内置对象,JSP的内置对象必须通过HttpServletRequest、HttpServletResponse、HttpServlet对象得到。
三. 使用JSP与Servlet实现MVC模型
MVC即Model(模型)、View(视图)、Controller(控制器)。
- 模型层实现业务逻辑,采用JavaBean实现;
- 视图层则是与用户交互,采用JSP实现;
- 控制层是模型与视图之间沟通的桥梁,采用Servlet实现。
四. JSP的九大内置对象
五. JSP的动作
六. include指令和include动作
include的主要作用是用来在当前文件中引入另外一个文件,以便在当前文件中使用。include的两种用法:include指令和include动作。
- 使用方法:
include指令:<%@ include file = "test.jsp" %>
incude动作:<jsp:include page = "test.jsp" flush = "true"><jsp:param name = "name = "name" value = "value" /></jsp:include>
- 二者的差异
根本性差异:二者被调用的时间。
include指令是编译阶段的指令,即include指令所包含文件的内容是在编译时插入到JSP页面,但文件内容改变时需要重写编译,故更适合于包含静态页面的情况,如可包含一个Servlet;
include动作是运行时的语法,在页面被请求时,才将用到的页面包含进来,涉及两个文件,类似于方法的调用,故更适合于包含动态页面的情况。