JSP简介
JSP是一种基于Java的服务器端技术,其目的是简化建立和管理动态网站的工作。
JSP特点
- 简单快捷:JSP在原来的HTML中,通过添加Java程序片段,并通过标签技术的使用从而简化了页面的开发。
- 动态内容的生成和显示相分离:使用HTML或XML来设计页面,使用JSP标签或者脚本来生成页面上的动态内容。
- 组件重用:可重用的JavaBean组件能够在多个JSP之间共享,加速了总体开发过程,方便维护和优化。
- 易于部署、升级和维护:JSP容器能够对JSP的修改进行检测,自动翻译和编译修改后的JSP文件,无需手动编译。
JSP和Servlet的比较
- JSP是一种服务器端脚本语言,它降低了Servlet的使用难度。JSP在本质上就是Servlet。
- JSP提供了Servlet能够实现的所有功能,实际上,JSP是首先被翻译成Servlet后才编译并运行的,所以JSP几乎拥有Servlet的所有优点。
- 与Servlet相比,JSP更适合制作动态页面,因为单纯使用Servlet开发动态页面是相当繁琐的。
- JSP和Servlet的区别如下图:
Servlet是在Java中嵌入了HTML,
而JSP是在HTML中嵌入了Java
JSP执行原理
- 客户发出请求(request);
- 容器接收到请求后检索对应的JSP页面,如果该JSP页面使第一次被请求,则容器将其翻译成一个Java文件,即Servlet;
- 容器翻译后的Servlet源代码编译形成字节码,即**.class文件**,并加载到内存执行;
- 最后把执行结果即响应(response)发送回客户端。
JSP再次执行原理
当这个JSP页面再次被请求时,只要该JSP文件没有发生过改动,JSP容器就直接调用已装载的字节码文件,而不会再执行翻译和编译步骤,这样大大提高了服务器性能。
JSP基本结构
1. JSP指令
JSP指令用来向JSP容器提供编译信息。指令并不向客户端产生任何输出,所有指令只在当前页面中有效。
<%@ 指令名 属性=“值” 属性=“值”%>
常用的指令:
page指令、include指令、taglib指令
<%@ page language=“java” contentType=“text/html; charset=gbk”%>
2. JSP声明
JSP声明用于在JSP页面中定义变量和方法
一个JSP页面可以有多个声明,每个声明中可以同时定义多个变量或方法。每个JSP声明只在当前JSP页面中有效。
<%! 声明的内容 %>
<%!
//全局方法和变量
private String str = "全局变量";
void setStrParam(String param) {
str = param;
}
%>
JSP会被翻译成Servlet,而JSP声明中的变量和方法实际上就是定义在翻译成的Servlet中的,所以本质上就是类的属性和方法。
3. JSP表达式
JSP表达式用于将Java表达式的运行结果输出在页面中。
<%=表达式%>
表达式后不加分号,%和=之间不能有空格。
4. JSP脚本
JSP脚本用于在JSP页面中插入Java代码
<% Java代码 %>
<%
java.util.Date now = new java.util.Date();
out.println("当前时间是:" + now);
%>
5. JSP动作标签
JSP中可以使用内置的动作标签实现一些常见的特定功能
<jsp:动作名> </jsp:动作名>
- jsp:include:在页面被请求的时候引入一个文件
- jsp:useBean:寻找或实例化一个JavaBean
- jsp:setProperty:设置JavaBean的属性
- jsp:getProperty:输出某个JavaBean的属性
- jsp:forward:把请求转到一个新的页面
- jsp:plugin:根据浏览器类型为Java插件生成OBJECT或EMBED标记。
6. JSP注释
<%–注释内容–%>
总结
- JSP是一种在HTML中嵌入Java代码的动态网页技术。
- 与Servlet相比,JSP更偏重于将数据显示在HTML中,更适合制作动态页面。
- JSP的执行过程需要经过翻译(翻译成一个Java文件)、编译(编译成字节码,即.class文件)、执行(加载到内存执行)三个步骤。
- JSP页面的构成元素有指令、声明、表达式、脚本、动作标签和注释。
- JSP指令用来向JSP容器提供编译信息。
- JSP声明用于在JSP中定义变量和方法。
- JSP表达式用于将Java表达式的运行结果输出在页面中。
- JSP脚本用于在JSP页面插入Java代码。
- JSP提供了很多动作标签实现特定的功能。