欢迎来到HELLO素材网! 南京网站制作选择顺炫科技
丰富的DIV CSS模版、JS,jQuery特效免费提供下载
当前位置:主页 > 建站教程 > 网站制作教程 >

servlet+bean+jsp综合实例

发表于2019-04-24 02:09| 次阅读| 来源网络整理| 作者session

摘要:servlet+bean+jsp综合实例

servlet+bean+jsp综合实例

  本文探讨JavaServlet和JavaServerPage这两种技术,它们可能用于隔离用户界面与业务逻辑,完成多层次的Web运用程序。咱们用一个简略的运用来演示如何完成这种隔离,以及如何完成快速的部署和扭转Web运用程序。
  
  阐明本文阐明如何隔离体现层与业务逻辑,完成多层次的Web运用程序
  
  正文实用操作系统:
  
  跨平台
  
  隔离体现层与业务逻辑,完成多层次的Web运用程序
  
  引言
  
  在建设服务器端Web运用程序时,将体现层与业务逻辑分离可能更容易的创建动态的Web页面,同时也可能让没有运用开发阅历的Web页面设计人员能十分容易的扭转Web站点的外观。对于一个内容需求频繁更新的Web站点,这就象征着更新周期更短,可能以最快的速度带给本站点的访问者以最新的内容。
  
  早期的Web运用程序构造都很简略,通常用户界面与业务逻辑都混合在一同。修正这种运用的任何一方,都将使维护整个运用程序变得非常艰巨。将用户界面与业务逻辑隔离就简化了运用程序的维护,从而可能更快更容易的扭转运用程序。本文探讨JavaServlet和JavaServerPage这两种技术,它们可能用于隔离用户界面与业务逻辑。咱们用一个简略的运用来演示如何完成这种隔离,以及如何完成快速的部署和扭转运用程序。
  
  首先,咱们简介一下JavaServlet和JSP及它们如何在一个Web运用中协调工作。
  
  什么是Servlet?
  
  Servlet是平台独立的Java服务器端组件。它以多种模式来扩充服务器端的性能,同时将维护和支持的开支也降到最小。Servlet不同于CGI脚本,它被编译成Java的字节码(bytecode),所以它没有引入任何与平台无关的要素,从而完成了真正的“WriteOnce,RunAnywhere”。
  
  什么是JavaServerPage(JSP)?
  
  JSP是建设含有动态内容的Web运用程序的Java技术。一个JSP页面是一个文本文档,蕴含了静态的HTML内容和动态的动作标记。这些动作形容了如何解决前往给客户的呼应。在运用开发阶段,JSP与Servlet差异很大,但是在运转时,它被编译成Servlet,在JSP引擎中执行。JSP引擎存在于任何一种Web运用服务器中,如WebSphereV3.x。
  
  Servlet和JSP协同工作
  
  从理论上讲,用户可能只利用Servlet来接纳从Web阅读器发来的HTTP申请,Servlet动态的解决申请(能够是查询后端系统来实现申请),然后在Servlet中间接发送HTML或XML文档的呼应给阅读器。
  
  上述方法在原理上是可行的,但它把Web页面的产生也交由JavaServlet来做。假设Web页面的设计人员要扭转页面的外观就必须编辑、重新编译Servlet。这将要求动态Web页面的设计人员需求有运用程序开发阅历。显然,咱们需求将Web页面的显示与Servlet解决申请相隔离。
  
  满足上述须要的方法是采纳Model-View-Controller(MVC)模型来建设Web运用程序。在MVC模型中,后端系统是咱们的Model,用来创建用户呼应界面的模板是View,而把这两者联络起来的纽带是Controller。JSP完美的对应于MVC形式中的View,Servlet蕴含了治理如何解决申请的逻辑,实践上就成为了Controller,而系统已有的业务规则就是Model。
  
  咱们来看一个例子,它利用了MVC形式完成体现层和业务逻辑的隔离,该例完成了从阅读器访问3270后端系统的一个运用。
  
  示例程序的体系构造如图1所示。阅读器利用HTML和JSP完成了View,一组在运用服务器中的JavaServlet提供了Controller,后端的CICS等运用提供了业务规则或称作Model。Servlet、HTML、JSP页面调用的流程如图2所示,并附有具体的文字叙说。
  
  示例运用流程详解
  
  发起申请
  
  用户用阅读器载入初始HTML页面,该页面是由Web使能的运用服务器提供的。运用服务器以与WebServer相反的模式来停止Web文件服务。这个页面是整个Web运用的入口点。它利用了HTMLFORMaction标记来访问Servlet。在咱们的例子中,这个Servlet是LoginServlet。异样附加的参数也随着FORM的动作发给Servlet。
  
  下面是一段例子:
  
  <FORMaction=":8080/servlet/LoginServlet"method="POST">
  
  <inputtype="text"size="30"name="firstname">
  
  <inputtype="text"size="30"name="surname">
  
  .
  
  .
  
  <inputtype=hiddenname=hostvalue="localhost">
  
  <inputtype=hiddenname=portvalue="9876">
  
  <inputtype=submitvalue="Submit">
  
  </FORM>
  
  申请普通是以HTTP或HTTPS来发起,然后由Servlet来解决。它利用HttpServletRequest.getParameter()方法来访问FORM表单提供的参数。
  
  Servlet然后测试用户能否有Session。Session用来将从远程客户端来的一系列申请关联起来,这对于无形状保持性能的HTTP协定是必须的。
  
  Session可用如下方法来创建:
  
  HttpSessionsession=req.getSession(true)
  
  ;
  
  对象可能被退出到Session中去:
  
  session.putValue(“host”,hostToConnectTo);
  
  session.putValue(“port”,tmpPort);
  
  Controller
  
  Servlet担任调用解决用户申请的JavaBean。它也担任创建对用户的呼应。在咱们建议的运用构造中,呼应将被传递到JSP。因此,Servlet被叫做Controller。
  
  回到咱们的例子。下面的代码实例化一个类型CICSEmulator的新类叫newEmulator。这是一个由第三方厂商提供的3270终端仿真类,它提供了一组对仿真终端间接操纵的方法(类似的类也可能用IBMVisualAgeforJava企业版中的EnterpriseAccessBuilder来生成)。newEmulator可能从Session中传递变量,此例中变量为远程主机和端口。
  
  CICSEmulatornewEmulator=newCICSEmulator();
  
  newEmulator.setTN3270Port(portToConnectTo);
  
  newEmulator.setTN3270Host(hostToConnectTo);
  
  第二个实例化的类是一个JavaBean叫做AcctDetails。它是一个数据访问Bean,它将向后端的系统查找和获取数据。AcctDetails将newEmulator来作为它的3270终端,然后传递变量(姓和名)给它的set方法。
  
  AcctDetailsgetAccountDetails=newAcctDetails();
  
  getAccountDetails.set3270Emulator(newEmulator);
  
  getAccountDetails.setSurname(inputsurname);
  
  getAccountDetails.setFirstName(inputfirstname);
  
  数据访问Bean执行申请
  
  Bean实例getAccountDetails的方法performWork(),它衔接后端3270系统,并基于用户提供的姓名来获取用户帐户的细节。
  
  try{
  
  getAccountDetails.performWork();
  
  session.putValue("resultsBean",getAccountDetails);
  
  }
  
  catch(IllegalStateExceptione){
  
  //handletheerror
  
  }
  
  假设执行胜利,Servlet把getAccountDetailsBean放入用户的session中。这个Bean的标识符为resultsBean,它蕴含了用户查询的后果,这些后果可能用Bean的get方法来访问。
  
  控制权传给JSP
  
  咱们已经提到,MVC形式的重点就在于它隔离了体现层与业务逻辑。Servlet担任解决申请,它会去调用数据访问Bean,数据访问BeangetAccountDetails蕴含了从后端系统访问和获取数据的服务器端逻辑。后端系统(Model)蕴含了业务规则。而对用户的呼应(View)是由JSP创建进去的。
  
  Servlet将request和response对象传递给JSP时遵照如下的语法:
  
  getServletContext().getRequestDispatcher(“/jspDemo/login.jsp”).forward(req,res);
  
  Forward方法容许Servlet将呼应的解决传给第三方。它的参数request和response必须就是调用servlet的service方法时传递的对象。它利用getRequestDispatcher对象来失去requestDispatcher,从而确定了到目标JSP的门路。以“/”末尾的JSP门路名被解释成相对于以后运用上下文环境的根门路。
  
  访问ResultsBean
  
  JSP担任创建对用户的呼应,它可能访问getAccountDetailsBean的数据(利用标识符resultsBean来引用)。这些在HTML中用如下语法来实现:
  
  <HTML>
  
  <BODY>
  
  .
  
  .
  
  <jsp:useBeanid="resultsBean"scope="session"class="acct.AcctDetails"/>
  
  <jsp:getPropertyname="resultsBean"property="*"/>
  
  其中<JSP:useBean>是去查找已存在的对象(本例中是resultsBean)。本例中咱们把getAccountDetailsbean放入session中并命名为resultsBean。于是上述JSP语句就从session中失去了resultsBean,然后就可能经过访问resultsBean的get方法来失去它的数据。
  
  也可能经过如下JSP语句来完成:
  
  <%=resultsBean.getDetails_Title()%>
  
  <%=resultsBean.getDetails_Initial()%>
  
  上述语句也是JSP表达式的一个例子。在<%=和%>之间一切的内容被放入JSP引擎中解决,后果被作为输出送给JSP文件。上述的两个表达式将执行resultsBean的get方法来显示用户的title和Middle_Initial。同任何一种脚本言语(如Javascript)一样,JSP代码可能在HTML页面中恣意嵌入。JSP的语法也十分简略,这象征着JSP可能由Web页面设计人员来维护而不是运用开发人员。开发人员担任的是servlet和数据访问Bean。在JSP中的任何扭转不会影响到servlet,反之亦然。
  
  呼应
  
  JSP在申请时被动态翻译成JavaServlet,并在运用服务器中缓存。后续JSP申请的呼应将显著加速。用户收到的最终呼应都是HTML页面(以.jsp为扩充名),这些页面蕴含了动态产生的内容。
  
  总结:
  
  在本文示例的运用构造中,客户端阅读器发起的申请间接到了servlet,然后用数据访问Bean来解决申请,从后端系统获取数据。Servlet将后果包装进resultsBean,把它放入session中,然后调用JSP来解决这个呼应。Servlet是初始申请到产生呼应的总体控制者。
  
  JSP决议产生给用户呼应的内容。JSP只该当蕴含如何格式化体现层的逻辑。这种隔离的优点在于它创建了在运用中可重用的、可移植的、平台独立的组件,这些组件可能作为将来更大的运用的一局部。
  
  隔离Servlet开发与JSP显示为运用开发人员和Web页面设计人员彼此独立的工作带来了极大的方便。异样,这种方法也完美的符合了本文所引见的MVC设计模型。