如何让Servlet学会与其他对象合作

来源:IT专家网  作者:vivan
摘要:在一个比较复杂的Web应用中,靠Servlet单干往往是不行的。Servlet其功能毕竟有限。在实际工作中,笔者往往会结合其他技术,让他们相互融合,发挥各自的优势。在这篇文章中,笔者将自己在这方面的经验供大家分享,与各位开发人员共同进步。…

第三种合作方式是向其他Web构件转递请求。这是什么意思呢?简单的说,就是由Servlet先完成部分功能(如数据运算、数据类型转换等等),然后再将结果交给其他的Web构件来完成后续的任务。JSP与Servlet协作就是这种方式的一个代表。Servlet将数据运算的结果传递给JSP,然后JSP负责根据用户定义的格式向用户显示最终的结果。可见这种合作方式是分工的结果。

可见这三种合作方式基本上没有重合的地方,而是分别对应于不同的场合。其中Serlvet链接主要用在Servlet之间相互调用完成一件工作;在响应中包含其他Web资源主要用来简化通用信息的管理;而向其他Web构件转递请求则是应对Web构件之间相互合作的问题。具体方法的使用并不是难点,其难就难在开发人员要根据实际的需求来判断到底使用哪种合作方式比较合理。一个合适的选择,能够简化应用程序的开发量。相反,一个不恰当的判断,反而会让原本简单的事情更加的复杂。

三、RequestDispatcher的使用分析。

在“响应中包括其他Web资源”这个方式中,其关键就在于RequestDispatcher对象处理的是否恰当。当Servlet需要嵌入另外一个Web资源时,需要首先建立一个请求分派对象,即RequestDispatcher,然后利用这个对象的include方法在响应中包含其他Web资源。在实际工作中,笔者利用这个方法最多,就以这个方法为例,谈谈RequestDispatcher对象的生成方式以及注意技巧。

从技术上来说,RequestDispatcher对象主要有两种生成方式,一是使用ServletRequest接口的GetRequestDispatcher方法。其主要原理就是返回一个Web资源路径给RequestDispatcher对象。这个资源可以是动态的(如其他Web构件动态产生),也可以是静态的,如公司的图标文件。在使用这个方法的时候,主要需要注意的就是其路径的格式。如意/符号开头,并不表示绝对路径,而是表示Web程序路径+资源路径。这跟操作系统中的路径表示可是有所区别。

第二种方式是使用ServletContext接口的GetRequestDispatcher方法。注意他们虽然方法名字相同,而只是接口不同。不过在具体使用的时候,仍然有一些差异需要引起大家的重视。首先前面一种方法,其路径可以使用相对路径。而在这一种方法中,则只能够使用相对当前Web程序的路径。即没有后面资源路径的表示方法。这一点很多人在使用的时候容易搞混。其次两个方法在使用范围上也有所差异。前面第一种方法其使用范围比较小,只能够在同一个Web程序内部不同Servlet之间使用。而第二种方法则可以通过getcontext方法获得其他Web程序的资源,即可以实现在不同Web程序之间的资源共享。

总而言之,RequestDispatcher对象的两种方法有比较大的差异。特别是在使用范围上的差异,决定了在不同的场合中该使用哪种实现方式。切记要对号入座。

【相关文章】好搜一下
Java 7:一个技术标准的商业咒语

Java 7:一个技术标准的商业咒语

Java 7技术规范背后的商业纷争像咒语一样影响着Java的技术进程,对持有技术…