网站首页 > 技术文章 正文
jsp的实质是什么?
一、JSP的概念
我们的目标是要搞清楚什么是JSP,他和HTML的静态页面有什么区别呢?
jsp是运行在服务器端的,它的实质是一个java文件,
而html的静态信息,所有内容都是发送到客户端再运行的。
JSP全称是Java 服务器页面 (Java Server Page ) 以扩展名 .jsp 保存,是由SunMicrosystems公司倡导、许多公司参与一起建立的一种动态技术标准。在传统的网页HTML文件(*.htm,*.html)中加入Java程序片段(Scriptlet)和JSP标签,就构成了JSP网页java程序片段可以操纵数据库、重新定向网页以及发送E-mail等,实现建立动态网站所需要的功能。有效地控制动态内容生成,在Java Server Page里面使用 Java 编程语言和类库,而HTML 用于表示页面,而 Java 代码用于访问动态内容。这样大大降低了对客户浏览器的要求,即使客户浏览器端不支持Java,也可以访问JSP网页。
二、JSP的优点
1、平台无关性。
它拥有Java语言跨平台的特性,以及业务代码分离、组件重用、基础Java Servlet功能和预编译等特征。它也是跨平台的,可以应用在不同的系统中,如Windows、Linux、Mac和Solaris等。这同时也拓宽了JSP可以使用的Web服务器的范围。
2、将内容与表示分离。
采用JSP技术开发的项目,通常使用HTML语言来设计和格式化静态页面的内容,而使用JSP标签和Java代码片段来实现动态部分。程序开发人员可以将业务处理代码全部放到JavaBean中,或者把业务处理代码交给Servlet、Struts等其他业务控制层来处理,从而实现业务代码从视图层分离。这样JSP页面只负责显示数据即可,当需要修改业务代码时,不会影响JSP页面的代码。
3、强调可重用组件。
JSP中可以使用JavaBean编写业务组件,也就是使用一个JavaBean类封装业务处理代码或者作为一个数据存储模型,在JSP页面甚至整个项目中都可以重复使用这个JavaBean。JavaBean也可以应用到其他Java应用程序中,包括桌面应用程序。
简化页面开发-Web 设计人员和 Web 程序员使用 Web 开发工具开发 JSP 页面
4、高速。
JSP会预编译,就是在用户第一次通过浏览器访问JSP页面时,服务器将对JSP页面代码进行编译,并且仅执行一次编译。编译好的代码将被保存,在用户下一次访问时,直接执行编译好的代码。这样不仅节约了服务器的CPU资源,还大大提升了客户端的访问速度。
三、JSP的执行过程
JSP全名为Java Server Pages,它实现了Html语法中的java扩张(以 <%, %>形式),我们可以在jsp页面中嵌入java代码,如下面这段代码获得服务器的当前时间,并打印
<body onload="getnow()">
<%
Date now = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
String nowstr = sdf.format(now);
// System.out.println(nowstr);
out.println("java:"+nowstr);
%>
<br/>
</body>
在服务器端执行的。通常返回给客户端的就是一个HTML文本,因此客户端只要有浏览器就能浏览。Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序段,然后将执行结果连同JSP文件中的HTML代码一起返回给客户端。虽然JSP页面很少进行数据处理,只是用来实现网页的静态化页面,只是用来提取数据,不会进行业务处理。
为什么我们可以在jsp中嵌入java代码呢?因为jsp在执行需要先转译成为java代码,然后在编译成为class文件,也就是jsp的实质就是一个java文件。如下图所示:
查看tomcat目录下的\work\Catalina\localhost目录,你会发现所有的web项目都会在这里有对应的目录,打开其中一个项目一直打开进去,会发现每一个jsp页面在都会有其对应的java文件和编译后的class文件。,这个文件有tomcat生成。
小编整理了一些java进阶学习资料和面试题,需要资料的请私信小编回复java
所以我们在开发过程会发现jsp页面在第一次访问的时候速度会比较慢,因为需要转译和编译两个步骤,但是以后就会非常快,因为直接就访问以及编译好的class文件了。
猜你喜欢
- 2024-09-20 POJO与JavaBean的区别,你知道吗?
- 2024-09-20 JSP的 结构(jsp概述)
- 2024-09-20 Jsp与Servlet如何进行数据交互(jsp和servlet的各自应用范围)
- 2024-09-20 Web服务器、Web容器、servlet的联系
- 2024-09-20 为什么要放弃 JSP?(为什么要放弃喜欢的人)
- 2024-09-20 经典技术回顾和借鉴-JSP编程(jsp技术分析)
- 2024-09-20 你知道的不一定是最好的,Java学习JSP知识点总结
- 2024-09-20 关于JSP技术的介绍和相关示例(jsp技术概述)
- 2024-09-20 Servlet 和JSP之间的关系(servlet和jsp的区别)
- 2024-09-20 Javaweb学习(五)JSP技术(jsp+java)
- 1514℃桌面软件开发新体验!用 Blazor Hybrid 打造简洁高效的视频处理工具
- 564℃Dify工具使用全场景:dify-sandbox沙盒的原理(源码篇·第2期)
- 508℃MySQL service启动脚本浅析(r12笔记第59天)
- 486℃服务器异常重启,导致mysql启动失败,问题解决过程记录
- 485℃启用MySQL查询缓存(mysql8.0查询缓存)
- 465℃「赵强老师」MySQL的闪回(赵强iso是哪个大学毕业的)
- 445℃mysql服务怎么启动和关闭?(mysql服务怎么启动和关闭)
- 442℃MySQL server PID file could not be found!失败
- 最近发表
- 标签列表
-
- c++中::是什么意思 (83)
- 标签用于 (65)
- 主键只能有一个吗 (66)
- c#console.writeline不显示 (75)
- pythoncase语句 (81)
- es6includes (73)
- windowsscripthost (67)
- apt-getinstall-y (86)
- node_modules怎么生成 (76)
- c++int转char (75)
- static函数和普通函数 (76)
- el-date-picker开始日期早于结束日期 (70)
- js判断是否是json字符串 (67)
- checkout-b (67)
- c语言min函数头文件 (68)
- asynccallback (71)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- & (66)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)