JSP概述
JSP概述
什么是jsp
sun公司制定的一种服务器端的动态页面技术规范.
- 虽然使用servlet也可以生成动态页面,但是过于繁琐需要大量使用out.println语句,并且不利于页面的维护(需要修改java源代码),所以sun公司才制定的jsp规范,目的是更简洁,更方便的生成动态页面.
- jsp是一个以.jsp为后缀的文件,该文件的内容主要是html和少量的java代码.容器会将jsp文件转换成一个servlet然后执行.
- jsp的本质就是一个servlet!
如何写一个jsp文件?
-
创建一个以.jsp为后缀的文件.
-
在该文件里面,可以添加如下内容:
- html代码 直接写即可
- java代码
- java代码片段
<% java代码 %>
- jsp表达式
<%= java表达式 %>
- java代码片段
-
9大隐含对象
- out
- request
- response
- session
- application
- page
- config
- exception
- pageContext
-
指令
告诉容器,将jsp转换成servlet类的时候,做一些额外的处理,比如: 导包.
语法:
<%@ 指令名 属性=值 %>
JSP代码块
<% 代码 %>
<%= 表达式 %>
<%! 属性或方法 %>
JSP指令
page指令
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
-
import属性:用于导包,比如
<% page import="java.util.*" %>
多个包使用逗号隔开 -
contentType属性:用于设置response.setContentType方法的参数值.
-
pageEncoding属性:告诉容器,在读取jsp文件的内容时,使用指定的字符集来解码
include指令
<%@ include file="header.jsp"%>
-
file属性:指定被包含的文件名.比如,
<%@ include file="header.jsp"%>
容器在将jsp转换成java时,会将指定的文件的内容插入到该指令所在的位置
taglib指令
<%@ taglib uri="" prefix="c"%>
用于引入JSTL标签库或者其他的自定义标签库
JSP注释
格式: <%-- 注释内容 --%>
注意: 如下三种注释方式
1.使用jsp注释: (没被翻译成serlvet, 也没有被执行, 不会显示到浏览器)
<!-- 使用jsp注释 -->
<%--
out.write("aaaaa<br>");
System.out.println("aaaaa");
--%>
2.使用java注释: (可以翻译为servlet, 但是没有被执行, 不会显示到浏览器)
<%
// out.write("bbbbb<br>");
// System.out.println("bbbbb");
%>
3.使用html注释: (可以翻译为servlet, 可以被执行, 但是被html所注释, 不会显示到浏览器)
<!--
<%
out.write("ccccc<br>");
System.out.println("ccccc");
%>
-->
结果:
浏览器源码:
<!-- 使用jsp注释 -->
<!-- 使用java注释 -->
<!-- 使用html注释 -->
<!--
ccccc<br>
-->
控制台:
ccccc
jsp是如何执行的
阶段一
容器将.jsp文件转换成一个.java文件(即servlet类)
write()只能输出字符类型的值, 不能输出表达式和null(空值)
println()和print()可以输出字符, 也可以输出表达式, 当输出的值为null时输出"null"字符串
graph LR
A[html,js,css] -->B(out.write输出)
C[<% %>] --> D[servlet普通代码]
E[<%= %>] --> F[out.println输出]
G[<%! %>] --> H[增加新的属性或者方法]
阶段二
容器在将该Servlet编译,实例化,调用.