JSP是Java Server Page的简称,和Servlet是Java EE的两个基本成员。其实JSP和Servlet本质上是一样的,JSP最终是编译成Servlet才能运行的。
JSP其实就是一个html页面里面嵌入java代码片段。
JSP基本原理
上面提到,JSP的本质就是Servlet。
JSP是如何出现的?
Servlet可以通过接受用户的请求动态生成对应的HTML页面,如果这个页面很多的HTML标签的时候,Servlet就会显得很重,而且这些HTML页面都是静态,不会因为用户请求而改变,该怎么做呢?
JSP的出现就解决了这样一个问题,JSP分为两个部分:
- 静态部分
- 动态部分
静态部分中也就是那些不会因用户请求而改变的页面,而动态部分中就是受Java程序控制的内容,用来动态生成对应的元素。
工作原理
- 客户端向服务器发出请求
- JSP服务器:
- 如果该JSP页面第一次收到请求,则编译JSP文件,生成对应的Servlet。
- 如果该JSP页面有对应的Servlet,则动态生成标准的HTML页面。
- 返回标准的HTML页面给客户端。
生命周期
编译阶段
Servlet容器编译Servlet源文件,生成Servlet类。
初始化阶段:
public void jspInit(){
// 初始化代码
}
执行阶段
void _jspService(HttpServletRequest request, HttpServletResponse response){
// 服务端处理代码
}
销毁阶段
public void jspDestroy(){
// 清理代码
}
JSP的生命周期和Servlet的周期特别相似。
注意
- JSP文件必须在JSP服务器内运行
- JSP文件必须生成Servlet才能执行
- 每个JSP页面第一次访问都很慢,因为要等待JSP编译Servlet
JSP的基本语法
JSP需要在头部加上类似语句:
<%@ page contentType="text/Html;charset=GBK" language="java" errorPage=""%>
JSP声明
<%! 声明部分%>
- 用于声明变量和方法
- 不需要定义类就可以使用定义方法
- JSP声明转化成Servlet的成员变量或方法
输出JSP表达式
<%=表达式%>
这就相当于是Java中的out.println()
打印语句;
JSP脚本
<% %>
这里面包含任何的Java代码。