Servlet+JSP+JavaBean开发模型

来源:互联网 发布:枪花和涅槃 知乎 编辑:程序博客网 时间:2024/06/03 06:00

一、Servlet

Servlet是用于开发动态web资源的技术,Servlet部署在web服务器上,被动地接收web浏览器的请求,并将处理结果通过响应告知用户。

Servlet的执行过程:
1. web浏览器向web服务器提出http请求。
2. web服务器解析请求的主机,应用和web资源
3. 如果是初次访问该servlet,则创建servlet对象,并调用Init()方法,否则下一步
4. 调用servlet对象的service方法,并生成新的HttpRequest和HttpResponse对象,传入该servlet对象。在service方法中,会调用doPost()或doGet()方法,处理请求。
5. servlet返回响应信息,web服务器返回响应信息。
url序列图

二、JSP

jsp 是包含HTML代码和JAVA代码的java server page.

jsp执行的是jsp的class文件,其原始的java代码继承与HttpJspBase类,而HttpJspBase类继承与HttpServlet类。
jsp拥有九大对象,其中page,HttpResponse和HTTPRequest对象已经被实例化。
这里写图片描述

三、JavaBean

JavaBean是满足某些特定书写规则并实现某些功能的JAVA类。

  • 具有一个无参的构造函数
  • 属性必须私有化
  • 私有化的属性通过public类型的方法暴露给其它程序

JavaBean在javaweb中的主要应用是封装数据。对于遵循以上写法的JavaBean组件,其它程序可以通过反射技术实例化JavaBean对象,并且通过反射那些遵守命名规范的方法,从而获知JavaBean的属性,进而调用其属性保存数据。

JSP页面包含三个JavaBean的标签。

<jsp:useBean id="Name" class="package.class" scope="page"/><jsp:setProperty name="Name" property= "*" /> <jsp:getProperty name="Name" property="PropertyName" /> 

<jsp:useBean>标签会在指定范围内指定类的指定名称的对象,如果没有找到,则实例化一个对象。
<jsp:setProperty标签可以通过自省机制,将网页表单提交的属性值封装在javaBean的对象中。
<jsp:getProperty>标签通过调用getter方法,获得该对象的某个属性的值。

四、Servlet+JSP+JavaBean开发模型与MVC模型

1、典型的MVC模型

  • Model模型:主要用于业务逻辑的处理,对数据进行增删改查。
  • View视图:展示模型数据,并提供人机交互界面,用于功能请求等。
  • Controler控制器:接收用户的请求,委托模型进行处理,选择视图展示返回数据。

这里写图片描述

2、Servlet+JSP+JavaBean开发模式

在web应用中,不考虑websocket和HTML5等技术,基本上web服务器不会主动地反馈信息给web浏览器,因此,Model不会主动将模型推给视图。并且,Model的数据获取和修改都依赖数据库。因此,Servlet+JSP+JavaBean开发模型下的MVC模型如下图所示:
这里写图片描述

3、Servlet+JSP+JavaBean开发模式的缺点

  • Servlet作为Controller的缺点
    • 请求参数到模型的封装比较麻烦
    • 控制逻辑可能比较复杂
    • 选择下一个视图,严重依赖Servlet API
    • 给视图传输要展示的模型数据,也需要使用Servlet API
  • JSP作为View的缺点
    • 很难更换视图,比如Velocity、FreeMarker
  • JavaBean作为Model的缺点
    • JavaBean组件负责收集封装数据,业务逻辑处理,造成JavaBean组件类很庞大
0 0