javaweb JSP开发模型

JSP的开发模型

JSP的开发模型即JSPModel,在Web开发中,为了更方便地使用JSP技术,SUN公司为JSP技术提供了两种开发模型:JSPModel1和JSPModel2。JSPModel1简单轻便,适合小型Web项目的快速开发;JSPModel2模型是在JSPModel1的基础上提出的,它提供了更清晰的代码分层,更适用于多人合作开发的大型Web项目,实际开发过程中可以根据项目需求,选择合适的模型。接下来就针对这两种开发模型分别进行详细介绍
jsp技术特征
1)跨平台

由于JSP是基于Java语言的,因而它可以使用Java的API,所以也是跨平台的,可以应用在Windows、Linux、Mac和Solaris。

2)业务代码分离

采用JSP开发的项目,通常使用HTML语言来设计和格式化静态页面内容,而使用JSP标签来实现动态部分,业务代码通常使用servlet、struts、springmvc等业务控制层来处理,从而实现业务层和视图层分离,这样,JSP只负责显示数据即可,这样,修改业务代码不会影响JSP页面代码。

3)组件重用

JSP中,可以使用JavaBean编写业务组件,也就是使用一个JavaBean封装业务处理代码或者作为一个数据处理模型,这个JavaBean可以重复使用,也可以应用到其他应用程序中。

4)继承Java servlet功能

JSP的本质是servlet,因此说JSP拥有servlet的所有功能。

5)预编译

用户首次通过浏览器访问JSP页面时,服务器对JSP页面代码进行编译,并且仅执行一次编译,编译后被保存,下次访问时直接执行编译过的代码,节约了服务器资源,提升了客户端访问速度。

JSPModel1

在讲解JSPModel1前,先来了解一下JSP开发的早期模型。在早期使用JSP开发的Java Web应用中,JSP文件是一个独立的、能自主完成所有任保存或修务的模块,它负责处理业务逻辑、控制网页流程和向用户请求改数据展示页面等,接下来通过一张图来描述JSP早期模型的工浏览器JSP数据库作原理。响应读取数据,首先浏览器会发送请求给图11-1早期模型的工作原理图JSP,然后JSP会直接对数据库进行读取、保存或修改等操作,最后JSP会将操作结果响应给浏览器。但是在程序中,JSP页面功能的“过于复杂”会给开发带来一系列的问题,比如JSP页面中HTML代码和Java代码强耦合在一起,使得代码的可读性很差;数据、业务逻辑、控制流程混合在一起,使得程序难以修改和维护。为了解决上述问题,SUN公司提供了一种JSP开发的架构模型:JSPModel1

JSPModel2架构模型.

JSPModel1系然将数据和部分的业务逻辑从JSP页面中分离出去,但是JSP页面仍然想重2.JSPModel2负责流程控制和产生用户界面。对于一个业务流程复杂的大型应用程序来说,在JSP页面中除旧会嵌入大量的Llava代码,这样会给项目管理带来很大的麻烦。为了解决这样的问题,SUNA司在Model1的基础上又提出了JSPModel2架构模型.
JSPMocel2架构模型采用JSP+Serviet+JavaBean的技术,此技术将原本JSP页面中的流程控制代码提取出来,封装到Serviet中,从而实现了整个程序页面显示、流程控制和业务逻辑的分离。实际上,JSPMocel2模型就是MVC(模型Model-视图View-控制器 Controller )设计模式。其中,控制器的角色是由Serviet实现的,视图的角色是由JSP页面实现的,模型的角色是由JavaBean实现的。接下来通过一张图来描述JSPModel2的工作原理。

JSP技术的原理

JSP的工作方式是请求/应答模式,客户端发出HTTP请求,JSP收到请求后进行处理,并返回处理结果。在一个JSP文件首次被请求时,JSP引擎首先把这个JSP文件转换成一个servlet,而该引擎本身也是一个servlet。运行过程如下:

1)JSP引擎首先把该JSP文件转换成一个Java源文件(servlet),在转换时,如果发现JSP文件中有任何语法错误,则中断转换过程,并向服务端和客户端输出错误信息。

2)如果转换成功,JSP引擎用javac把该Java源文件编译成相应的class文件。

3)创建一个servlet(JSP页面的转换结果)实例,该servlet的jspInit()方法被执行,jspInit()方法在servlet生命周期中只调用一次。

4)用jspService()方法处理客户端的请求。对每一个请求,JSP引擎创建一个新的线程来处理。如果多个客户端同时请求该JSP文件,则JSP引擎会创建多个线程来处理每个请求。由于该servlet始终驻留与内存,所以可以非常迅速的响应客户端的请求。

5)如果JSP文件被修改了,服务器将根据设置决定是否对该文件重新编译,如果需要重新编译,则将以编译结果取代内存中的servlet,并继续以上过程。

6)虽然JSP的效率很高,但首次调用时,由于需要转换和编译,会有一些轻微的延迟。此外,在任何时候,由于系统资源不足的原因,JSP引擎将以某种不确定的方式将servlet中从内存中移去。在此情况下,jspDestroy()方法首先被调用,然后servlet实例将被回收。

在jspInit()中可进行一些初始化工作,如建立与数据库的连接或其他配置。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值