第八JSP与Servlet的交互摘要.pptVIP

  • 1
  • 0
  • 约3.2千字
  • 约 21页
  • 2017-05-12 发布于湖北
  • 举报
第八JSP与Servlet的交互摘要

第八章 JSP与Servlet的交互 一、Java Web编程原则 在Java的Web编程中,应该把Web相关的类看成是完成系统功能的用户接口,而实现具体功能时,代码要和Web类无关。按此要求,应遵守以下原则: 在JSP中Java代码和HTM尽量分离 在JSP不处理具体操作,JSP只负责结果的显示 Servlet负责用户流程转换 JavaBean用来处理具体业务处理 1、 JSP中Java代码和HTML代码 尽量分离 在JSP网页中,如果嵌入了大量的Java代码,会使得HTML代码和Java代码混合在一起,JSP网页难以直接通过网页编辑工具直接编辑和察看,维护工作难以进行。 2、JSP只负责结果显示 由于JSP本身和HTML代码十分接近,所以非常适合做Web程序的显示层,而实践证明,JSP最好的用法就是用以显示用户界面和处理结果。如果在JSP中加入了大量的用户处理逻辑或数据库访问代码,会使得Web应用程序整体混乱,架构不清,难以重用和维护 3、Servlet负责用户流程转换 在Web程序中,Servlet多用来进行针对不同级别的用户进行其数据检验和登录JSP页面转发,这样Servlet就可以和JSP相互合作,有利于JSP中的代码简化。 4、JavaBean负责业务处理 JavaBean非常适合与网站的具体业务逻辑操作,所以,在JavaBean中处理诸如数据库访问、邮件的发送、文件的上传等任务非常合适,可以有效地减少在JSP和Servlet中的代码,有利于整个网站系统的模块化设计 二、Web中的Model 1模型 为了尽量的简化JSP网页中的Java代码,SUN公司提出了Model 1模型,该模型中使用了JavaBean来简化JSP的复杂程度。 1、JSP和JavaBean的分工 在Model 1中,JSP主要负责: 用户界面的显示 简单业务流程 用户的访问流程控制 JavaBean主要负责 底层信息访问,如数据库访问、邮件发送等 网站的商业流程处理 Model 1模型示意图 2、Model 1的优缺点 优点: 减少了JSP网页中的Java代码,将一些底层的代码和业务逻辑移到了Bean代码中 便于开发时的错误查找和调试 系统小巧简洁 缺点: JSP负责流程控制,有些代码书写不便 系统分层不是非常彻底,不便于大型网站的开发 三、Web中的Model 2模型 为了克服在Model 1中的缺点,SUN公司在MVC模型的基础上提出了Model2模型,在这种模型中加入了Servlet,用于流程控制,进一步分离了JSP页面中的Java代码和HTML代码。 1、Model2和MVC模型 MVC模型代表模型-视图-控制,是应用在一些大型工程中的数据建模方式 M代表Model,指的是负责处理数据的模型,在Model2中,JavaBean即为Model,负责处理网站的底层数据访问(如数据库、电子邮件等等)和业务逻辑 V代表View,即显示在用户面前的界面,Model2中的JSP网页即负责用户界面的显示 C代表Controller,负责控制用户操作流程,Model2中的Servlet即为控制用户的操作在页面之间的流转 2、Model2组成部分间的配合 Servlet是控制器,用户登录网站首先与它进行交互。Servlet检查用户登录是否合法以及用户的身份等信息,然后调用相应的JavaBean处理用户的具体请求,之后将包含有处理结果的JavaBean实例转发给指定JSP网页,通过将用户转入到相应的JSP网页完成任务 Model 2模型示意图 3、Servlet向JSP页面的转发 Servlet一般通过HttpRequest接口中定义的getRequestDispatcher(String destPage)方法进行流程控制。该方法返回一个RequestDispatcher类型的对象,通过调用该对象的forwad方法,即可将用户转发到destPage参数所指定的JSP页面中 一般在转发前,Servlet均会依据用户的请求建立对应的JavaBean对象,然后再将用户发转到指定的JSP网页 Servlet代码中页面转发示例 //需要转入的目标JSP页面 destPage=“success.jsp”; //处理数据,并将产生的结果变量存入到request中,以供jsp显示用 SomeBean bean=new SomeBean(); //bean方法的调用 request.setAttribute(“key”,bean); //获取转发对象 RequestDispatcher dispatcher= request.getRequestDispatcher(destPage); //进行转发 dispatcher.forward(re

文档评论(0)

1亿VIP精品文档

相关文档