JSP就是Servlet。如果不会Servlet,就无法理解JSP。通过本文,你将学到如何实现第一个JSP程序,以及JSP程序的实现原理。
JSP全称是Java Server Pages,它和Servlet技术一样,都是SUN公司定义的一种用于开发动态web资源的技术。
JSP诞生背景
虽然servlet技术能够开发出动态效果的网页,但是有一个问题,就是通过servlet开发时很冗杂,例如,下一个如下页面:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200306082125108.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0NvbXB1dGVyR2Vla0hhY2s=,size_16,color_FFFFFF,t_70#pic_center)
需要在一个Servlet类中写如此多得输出语句,使得编写很繁琐;尤其是当做一个庞大的网站时,更是显得无力。
于是,SUN公司推出了一种JSP技术:在JSP页面写HTML和Java代码。JSP自动完成上图中的转换。
提高了程序员的开发效率。
JSP核心特性:
- JSP的核心就是servlet!!!
- 写JSP就像在写html,但JSP技术允许在页面中嵌套java代码,为用户提供动态数据。
- 相比servlet而言,servlet很难对数据进行排版,而JSP除了可以用java代码产生动态数据的同时,也很容易对数据进行排版。
第一个JSP程序
创建一个dynamic web project,在【WebContent】的根目录下利用eclipse的工具模板创建一个jsp文件;
第一个JSP程序
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<font color=red>这是我的第一个JSP页面。</font>
</body>
</html>
执行结果:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200306082421521.png#pic_center)
第一行代码解析:
- language指定页面中使用哪种作为第二语言;
- contentType、charset:告诉浏览器我是什么内容类型,以及使用什么编码
- pageEncoding:JSP内容编码;
JSP实现原理
JSP的特点
1)JSP的运行必须交给tomcat服务器!!!!
tomcat的work目录: tomcat服务器存放JSP运行时的临时文件
2)JSP页面既可以写html代码,也可以写java代码。
(html页面不能写java代码 。而JSP页面可以写java代码)
执行过程
问题: 访问http://localhost:8080/day12/hello.JSP 如何显示效果?
- 访问到hello.JSP页面,tomcat扫描到JSP文件,在%tomcat%/work把JSP文件翻译成java源文件,并
存于 ”Tomcat安装目录/work/Catalina/localhost/项目名/org/apache/JSP”
里;
(hello.JSP -> hello_JSP.java) (翻译)
- tomcat服务器把java源文件编译成class字节码文件 (编译)
(hello_JSP.java -> hello_JSP.class)
- tomcat服务器构造hello_JSP类对象(反射)
- tomcat服务器调用hello_JSP类里面方法,返回内容显示到浏览器。
为什么JSP就是Servlet
JSP把01.hello.JSP翻译的java文件:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200306083029593.png#pic_center)
其中的HttpJSPBase类():
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200306083035344.png#pic_center)
public abstract class org.apache.jasper.runtime.HttpJSPBase
extends javax.servlet.http.HttpServlet
implements javax.servlet.JSP.HttpJSPPage {
}
结论:
- JSP就是一个servlet程序!!!
- servlet的技术可以用在JSP程序中!
- JSP的技术并不是全部适用于servlet程序!
生命周期
Servlet的生命周期:
1)构造方法(第1次访问)
2)init方法(第1次访问)
3)service方法
4)destroy方法
JSP的生命周期
- 翻译: JSP->java文件
- 编译: java文件->class文件(servlet程序)
- 走Servlet的生命周期
- 构造方法(第1次访问)
- init方法(第1次访问):在JSP中叫:_JSPInit()
- service方法:_JSPService()
- destroy方法:_JSPDestroy()