【JavaWeb】JSP快速入门_javaweb


👀专栏介绍

【JavaWeb】 目前主要更新JavaWeb,一起学习一起进步。

👀本期介绍

本期主要介绍JSP快速入门

文章目录

​1.1、什么是 JSP(了解)​

​1.2、JSP 开发模板修改​

​1.3、JSP 快速入门​

​1.4、JSP 运行原理(了解)​

1.1、什么是 JSP(了解)


JSP 全名是 Java Server Pages ,它是建立在 Servlet 规范之上的动态网页开发技术。在 JSP 文件



中, HTML



代码与 Java 代码共同存在,其中, HTML 代码用来实现网页中静态内容的显示, Java 代码用来实



现网页中



动态内容的显示。为了与传统 HTML 有所区别, JSP 文件的扩展名为 .jsp 。



JSP 技术所开发的 Web 应用程序是基于 Java 的,它可以用一种简捷而快速的方法从 Java 程序生



成 Web



页面,其使用上具有如下几点特征:




跨平台:由于 JSP 是基于 Java 语言的,它可以使用 Java API ,所以它也是跨平台的,可以应用





不同的系统中,如 Windows 、 Linux 等。当从一个平台移植到另一个平台时, JSP 和 JavaBean 的



代码并不需要重新编译,这是因为 Java 的字节码是与平台无关的,这也应验了 Java 语言“一次编



译,到处运行”的特点。



业务代码相分离:在使用 JSP 技术开发 Web 应用时,可以将界面的开发与应用程序的开发分离



开。



开发人员使用 HTML 来设计界面,使用 JSP 标签和脚本来动态生成页面上的内容。在服务器端,



JSP 引擎(或容器,本书中指 Tomcat )负责解析 JSP 标签和脚本程序,生成所请求的内容,并将



执行结果以 HTML 页面的形式返回到浏览器。



组件重用: JSP 中可以使用 JavaBean 编写业务组件,也就是使用一个 JavaBean 类封装业务处理



代码或者作为一个数据存储模型,在 JSP 页面中,甚至在整个项目中,都可以重复使用这个



JavaBean ,同时, JavaBean 也可以应用到其他 Java 应用程序中。


预编译:预编译就是在用户第一次通过浏览器访问 JSP 页面时,服务器将对 JSP 页面代码进行编




译,并且仅执行一次编译。编译好的代码将被保存,在用户下一次访问时,会直接执行编译好的




代码。这样不仅节约了服务器的 CPU 资源,还大大的提升了客户端的访问速度。




JSP Java 独有,除了可以书写 HTML/CSS/JS 代码,




更支持书写 Java 代码和 EL 表达式等强大功能。




扩展名 : .jsp


1.2、JSP 开发模板修改



因为 JSP 默认编码是 ISO8859-1 ,不利于我们中文开发,所以我们需要修改 JSP 的编码为 UTF-8



【JavaWeb】JSP快速入门_jsp_02


1.3、JSP 快速入门


JSP 文件建议创建在项目的 WebContent 目录下



【JavaWeb】JSP快速入门_javaweb_03


【JavaWeb】JSP快速入门_web_04


1.4、JSP 运行原理(了解)

JSP 的本质是一个 ServletJava 程序)。

【JavaWeb】JSP快速入门_jsp_05


【以下为自学 - 扩展 - 了解】


JSP 的工作模式是请求 / 响应模式,客户端首先发出 HTTP 请求, JSP 程序收到请求后进行处理并


返回


处理结果。在一个 JSP 文件第一次被请求时, JSP 引擎(容器)把该 JSP 文件转换成为一个


Servlet ,而这


个引擎本身也是一个 Servlet 。 JSP 的运行过程如图 1-6 所示。


【JavaWeb】JSP快速入门_java_06


JSP 的运行过程具体如下:


( 1 )客户端发出请求,请求访问 JSP 文件。


( 2 ) JSP 容器先将 JSP 文件转换成一个 Java 源文件( Java Servlet 源程序),在转换过程中,


如果发现


JSP 文件中存在任何语法错误,则中断转换过程,并向服务端和客户端返回出错信息。


( 3 )如果转换成功,则 JSP 容器将生成的 Java 源文件编译成相应的字节码文件 *.class 。该 class


文件


就是一个 Servlet , Servlet 容器会像处理其他 Servlet 一样来处理它。


为了使同学们更容易理解 JSP 的运行原理,接下来简单介绍分析一下 JSP 所生成的 Servlet 代


码。


以 HelloWorld.jsp 为例,当用户第一次访问 HelloWorld.jsp 页面时,该页面会先被 JSP 容器转换


为一个


名称为 HelloWorld_jsp.java 的源文件,然后将源文件编译为一个名称为 HelloWorld_jsp.class 字


节码文件。


如 果 项 目 发 布 在 Tomcat 的 webapps 目 录 中 , 源 文 件 和 .class 文 件 可 以 在 “ Tomcat 安


装 目 录


/work/Catalina/localhost/ 项目名 /org/apache/jsp ”下找到,如图 1-7 所示。


【JavaWeb】JSP快速入门_jsp_07


在图 1-7 中,地址栏中的路径多出了 org\apache\jsp ,这是由于 JSP 文件转换成类文件时会带有


包名,


该包名为 org.apache.jsp 。从图中还可以看出, HelloWorld.jsp 已被转换为源文件和 .class 文件。


打开


HelloWorld_jsp.java 文件,可查看转换后的源代码,其主要代码如下所示。(以下代码可以快速浏


览,确定


父类和方法名即可)


【JavaWeb】JSP快速入门_jsp_08

 

【JavaWeb】JSP快速入门_jsp_09

从上面的代码可以看出,HelloWorld.jsp 文件转换后的源文件没有实现 Servlet 接口,但继承了


org.apache.jasper.runtime.HttpJspBase 类。在 Tomcat 源文件中查看 HttpJspBase 类的源代码,


具体如下所示:


(以下代码可以快速阅读,确定父类即可)


【JavaWeb】JSP快速入门_java_10

【JavaWeb】JSP快速入门_jsp_11

 

从 HttpJspBase 源代码中可以看出, HttpJspBase 类是 HttpServlet 的一个子类,由此可

HelloWorld_jsp类就是一个 Servlet 。 结论: JSP 就是 Servlet 。