1、JSP
JSP 是简 Servlet 编写的一种技术, 它将 Java 代码和 HTML 语句混合在同一个文件中编写,
只对网页中的要动态产生的内容采用 Java 代码来编写,而对固定不变的静态内容采用普通静态 HTML 页面的方式编写。
2、JSP的运行原理
JSP 本质上是一个 Servlet.
每个JSP 页面在第一次被访问时, JSP 引擎将它翻译成一个 Servlet 源程序, 接着再把这个 Servlet 源程序编译成 Servlet 的 class 类文件.
然后再由WEB容器(Servlet引擎)像调用普通Servlet程序一样的方式来装载和解释执行这个由JSP页面翻译成的Servlet程序。
3、JSP 9隐含对象
request:HttpServletRequest 的一个对象
response:HttpServletResponse 的一个对象
pageContext:页面的上下文, 是 PageContext 的一个对象. 可以从该对象中获取到其他 8 个隐含对象. 也可以从中获取到当前路径
session:代表浏览器和服务器的一次会话, 是 HttpSession 的一个对象
application:代表当前 WEB 应用. 是 ServletContext 对象
config:当前 JSP 对应的 Servlet 的 ServletConfig 对象
out:JspWriter 对象. 调用 out.println() 可以直接把字符串打印到浏览器上
page:指向当前 JSP 对应的 Servlet 对象的引用
exception:在声明了 page 指令的 isErrorPage="true" 时, 才可以使用
<%@ page isErrorPage="true" %>
pageContext, request, session, application(对属性的作用域的范围从小到大)
4、JSP语法
JSP模版元素: JSP页面中的静态HTML内容称
JSP表达式:提供了将一个 java 变量或表达式的计算结果输出到客户端的简化方式,<%= %>
它将要输出的变量或表达式直接封装在<%= 和 %>之中。
JSP脚本片断:指嵌套在<% 和 %>之中的一条或多条Java程序代码。
多个脚本片断中的代码可以相互访问。
SP注释的格式:<%-- JSP 注释 --%> <!-- HTML 注释 -->
区别: JSP 注释可以阻止 Java 代码的执行.
5、4大域对象
pageContext:属性作用范围仅限与当前JSP页面
request:作用范围仅限于同一个请求
session:作用范围为一次会话期间
application:作为范围为当前WEB应用,只要在一处设置,在其他各处JSP或者Servlet中都可以获取到。
6、page 指令
page指令用于定义JSP页面的各种属性,无论page指令出现在JSP页面中的什么地方,
它作用的都是整个JSP页面, 为了保持程序的可读性和遵循良好的编程习惯, page指令最好是放在整个JSP页面的起始位置。
page 指令常用的属性:
import 属性: 指定当前 JSP 页面对应的 Servlet 需要导入的类. <%@page import="java.text.DateFormat"%>
session 属性: 取值为 true 或 false, 指定当前页面的 session 隐藏变量是否可用, 也可以说访问当前页面时是否一定要生成 HttpSession对象.<%@ page session="false" %>
errorPage 属性:errorPage 指定若当前页面出现错误的实际响应页面时什么. 其中 / 表示的是当前 WEB 应用的根目录. <%@ page errorPage="/error.jsp" %> ,在响应 error.jsp 时, JSP 引擎使用的请求转发的方式.
7、include 指令
<%@ include file="b.jsp" %>
include 指令用于通知 JSP 引擎在翻译当前 JSP 页面时将其他文件中的内容合并进当前 JSP 页面转换成的 Servlet 源文件中,
这种在源文件级别进行引入的方式称之为静态引入, 当前JSP页面与静态引入的页面紧密结合为一个Servlet。
8、jsp:incluce 标签
动态引入: 并不是像 include 指令生成一个 Servlet 源文件, 而是生成两个 Servlet 源文件, 然后通过一个方法的方式把目标页面包含进来.
9、jsp:forward
<jsp:forward page="/include/b.jsp"></jsp:forward>
相当于
<%
request.getRequestDispatcher("/include/b.jsp").forward(request, response);
%>
10、EL表达式
https://blog.csdn.net/meibenxiang/article/details/77900714
11、JSTL标签库
c:out:主要用于对特殊字符进行转换. 真正进行输出时
c:set:可以为域赋属性值。
c:remove:移除指定域对象的指定属性值
c:if:在页面上对现实的内容进行过滤, 可以把结果存储到域对象的属性中
注意:没有else