JavaEE——jsp介绍
声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权;凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记。
jsp全称Java Server Page,它是Servlet的扩展,其作用就是简化网站创建过程和维护动态网站。
jsp运作原理:
浏览器访问index.jsp的URL为http://localhost:8080/工程名称/index.jsp,tomcat服务器接收到客户端的访问请求时,服务器首先去查找到myweb工程,找到后到web.xml文件中查找JSPServlet的映射,再运行JSPServlet,然后进入到jsp对象池,询问有没有对象,如果有对象就抓取对象使用,再调用service(request,response)方法进行服务;如果没有对象就到当前目录下查找index.jsp文件,找到文件将文件生成index_jsp.java文件,然后将index_jsp.java文件进行编译加载,创建对象放回池子,然后拿出对象调用service(request,response)方法进行服务。和Servlet一样,在整个生命周期中,JSPServlet对象只有一个。
JSPServlet在Servers服务的web.xml配置文件中:

JSP访问配置如下:.jsp和.jspx的访问都发送到jsp上;

示意图:

一般情况下,index.jsp生成index_jsp.java文件的情况仅在客户端首次访问jsp文件发生。 Tomcat把由JSP生成的index_jsp.java源文件和类文件都放在work目录下。在开发和调试阶段,如果开发人员修改了jsp文件,tomcat会重新编译jsp,并把编译生成的新文件覆盖work目录下的旧文件。
示意图:

打开index_jsp.java看看他的源码:

在源代码中可以看出,与JSP文件对应的Servlet类继承org.apache.jasper.runtime.HttpJspBase类,HttpJspBase 类由Tomcat提供,它实现了JSP API中的javax.servlet.jsp.HttpJspPage接口,该接口继承了javax.servlet.jsp.JspPage接口,而JspPage接口又继承了Servlet API中的javax.servlet.Servlet接口。
jspService服务方法只不过是改了个名字,他其实就是Servlet的service方法转发过来的;

index_jsp.java源文件的HTML文本称为模板文本,他会被发送到客户端;

JSP语法:
虽然JSP本质上就是Servlet,但是JSP有着不同于Java编程语言的专门语法,该语法的特点是尽可能的用标记来取代Java程序代码,使整个JSP文件在形式上不像Java程序,而像标记文档。
在.jsp文件中除了可以直接包含HTML文本,还可以包含以下内容:
jsp页面指令:<%@ page %>主要设置页面上的参数;

jsp代码指令:
<% %>写代码
<%! %>申请属性和方法
<%= %>输出参数

jjsp内置对象:
打开index.jsp生成的index_jsp.java源文件看下变量申明就知道有哪些内置对象了,如下:

