(16)JSP概念 + 简单使用 + 运行原理

(16)JSP概念 + 简单使用 + 运行原理

前言

我们在学习Servlet技术后,我们都时用Servlet进行页面的展示。如:学Cookie时做的案例,全是Java代码字符串拼接起来的页面。

该图为 Java EE基础(13):Cookie三天免登录案例(附源码) 中的登录页面。这还没有加CSS和JS。

我们发现使用上面Java代码进行页面书写太影响效率了。那么有没有什么方式,可以让我们可以像之前写网页代码一样的呢。

答:使用JSP技术

一、JSP

1.概念

JSP(全称Java Server Pages)是由Sun Microsystems公司主导创建的一种动态网页技术标准。JSP部署于网络服务器上,可以响应客户端发送的请求,并根据请求内容动态地生成HTML、XML或其他格式文档的Web网页,然后返回给请求者。JSP技术以Java语言作为脚本语言,为用户的HTTP请求提供服务,并能与服务器上的其它Java程序共同处理复杂的业务需求。

JSP全称Java Server Pages,简单理解:他可以用于写HTML页面,是以.jsp结尾的文件。

每一个JSP 本质上是一个Servlet,就和之前写的Servlet是一样的。只不过他简化了Servlet。

2.作用

JSP出现是为了代替Servlet输出HTML代码。

你如果使用Servlet输出HTML代码会很麻烦,如果你再加上CSS和JS代码,再使用Servlet就会很困难了。

所以说,JSP的出现是为了简化Servlet,代替Servlet输出HTML代码。

3.优点

(1)一次编写,到处运行。除了系统之外,代码不用做任何更改。
(2)系统的多平台支持。基本上可以在所有平台上的任意环境中开发,在任意环境中进行系统部署,在任意环境中扩展。相比ASP的局限性JSP的优势是显而易见的。
(3)强大的可伸缩性。从只有一个小的Jar文件就可以运行Servlet/JSP,到由多台服务器进行集群和负载均衡,到多台Application进行事务处理,消息处理,一台服务器到无数台服务器,Java显示了一个巨大的生命力。
(4)多样化和功能强大的开发工具支持。这一点与ASP很像,Java已经有了许多非常优秀的开发工具,而且许多可以免费得到,并且其中许多已经可以顺利的运行于多种平台之下。
(5)支持服务器端组件。web应用需要强大的服务器端组件来支持,开发人员需要利用其他工具设计实现复杂功能的组件供web页面调用,以增强系统性能。JSP可以使用成熟的JAVA BEANS 组件来实现复杂商务功能。

总结下:

  • 跨平台
  • 可伸缩性强
  • 有多样化和功能强大的开发工具支持。
  • 支持服务器端组件。

二、JSP简单使用

1.创建jsp文件

新建一个动态web项目 - 在WebContent(或WebRoot)目录下右键,新建一个JSP File,命名 first.jsp
创建好的JSP文件长这样。除了<% %>(我后面会讲到),其他的就和html代码一样了。

注意:我这里将first.jsp放在WebContent目录下只是为了方便,在这个目录下的页面可以直接输入URL找到。如果你不想直接输入URL找到,则需要放在WEB-INF目录下。(我这里直接放WebContent下。)。即如果放在WEB-INF目录下,则文件是被保护的,无法直接访问到。

修改里面的编码格式,将ISO-8859-1编码改为UTF-8(不改会乱码)。顺便加上一句话

2.部署运行

tomcat部署运行(部署配置好项目访问路径)

访问成功!
在这里插入图片描述

3.注意点(访问路劲)

我们上面访问的时候直接是文件名,为什么呢?
因为WebConteent(MyEclipse中为WebRoot)是根目录,相当于 / 。

访问时直接 ==http://localhost:8080/项目名/first.jsp== 就能访问到。
因为我们的项目名给的是 ' /demo-jsp ' 所以直接 ==http://localhost:8080/demo-jsp/first.jsp== 就可以访问。
在这里插入图片描述

如果说你放在了这个位置,那么此时的访问为: ==http://localhost:8080/项目名/jspFolder/first.jsp==
在这里插入图片描述
例如,我的first.jsp放在上图这个位置(jspFolder文件夹下),
那么我需要输入: ==http://localhost:8080/demo-jsp/jspFolder/first.jsp==才能访问到

在这里插入图片描述

三、JSP运行原理

1.原理

你启动了Tomcat服务器,在浏览器中(输入URL)访问Tomcat服务器中访问的任何资源都是在访问Servlet。我在上面JSP概念中提到,JSP本质上是一个Servlet,为什么说JSP本质是Servlet呢?

JSP在第一次被访问的时候会被编译为一个继承了HttpJspBase类(该类是HttpServlet的一个子类)。
所以说JSP本质是一个Servlet。

Tomcat的管方文档中我们可以看到HttpJspBase是继承HttpServlet。

因为JSP继承了HttpJspBase,所以JSP也是一个Servlet
在这里插入图片描述

2.如何查看编译后的jsp文件

打开你的tomcat,如果你这里没有特别设置过。那么路径为:当前项目位置.metadata.plugins\org.eclipse.wst.server.core\tmp2\work\Catalina\localhost\demo-jsp\org\apache\jsp。(如果你在SErver Locations设置了User Tomcat installation,请找到你指定部署的路径下Deploy path)

例如:我的项目位置是(当前项目位置.metadata.plugins\org.eclipse.wst.server.core\tmp2\work\Catalina\localhost\demo-jsp\org\apache\jsp)。

如果你找不到目录请参考:【问题】Eclipse中集成的Tomcat部署项目,Tomcat中没有项目文件问题解决

在这里插入图片描述

这就是我们刚刚创建的jsp文件,被编译后的.class文件。还有一个生成的.java文件。

打开后.java文件可以看到:

也就是我为什么说他本质是一个Servlet。因为继承了HttpJspBase

四、总结

我们知道了JSP本质上是一个Servlet。

我们的.jsp文件会被转成一个 .java文件(servlet)。我们在.jsp文件中写的HTML、CSS、JS代码都会被转成字符串响应给浏览器。(有一些特殊的代码不会被转成字符串,我们会在后面学到)

同时我们也会JSP的简单使用,接下来将会对JSP相关的知识点进行总结。

最后

虽然以后工作的时候可能只有哪些老项目可以看到jsp了,但是我们现在学习jsp还是有意义的。它可以让你了解在多年以前的前辈是如何解决问题的,以及为后面的学习打基础。

只要在学习技术就不是走歪路!

注意:我并不希望正在看我文章的你花费非常多的时间学习jsp,不用全部都很详细的去学,毕竟时间是很宝贵的,如果你对这一块掌握的差不多了后(不需要全部掌握,遇到不懂的就去查)推荐继续往下看。