SERVLET间通信-LMLPHP

SERVLET间通信-LMLPHP

在Web应用程序中,应用程序的servlet等各种组件之间可能需要通信以便处理客户机请求。例如,假设Web应用程序中有一个servlet显示组织的版权信息。您可以使用各种servelt通信技术将此servlet的内容纳入到需要显示版权信息的所有其他应用程序servlet中。同样,如果处理请求时发生任何异常,Web应用程序的servlet可以向其他servlet转发请求。您可以使用以下对象在Web应用程序中实现servlet间通信技术:

  1. 请求分发程序对象
  2. servlet请求对象

SERVLET间通信-LMLPHP

1. 请求分发程序对象

请求分发程序是用于servlet 间通信的javax.servlet.RequestDispatcher接口的对象。您可以在servlet中使用请求分发程序向静态HTML页面或servlet等其他资源转发请求。还可以使用RequestDispatcher对象将其他servlet的内容纳入到您的servlet中。ServletContext接口提供了getRequestDispatcher(String path)方法来返回RequestDispatch对象。该方法 的路径参数指定了相对于目标资源上下文根的路径。获取到RequestDispatcher对象后,可以实现以下功能:

  1. 将内容纳入其他servlet
  2. 向其他servlet转发请求

将内容纳入其他servlet

RequestDispathcer接口提供了include()方法,可以使用此方法将内容纳入其他servlet。为此,首先需要获取RequestDispatcher接口的对象,然后调用include()方法。例如,假设ervlet CopyrightServlet 在ABC公司的网站上显示该组织的版权信息。

您可以使用以下代码开发CopyrightServlet servlet:

	import javax.servlet.*;
	import javax.servlet.http.*;
	import java.io.*;
	/* This servlet prints Copyright Infomation.*/
	public class CopyrightServlet extends HttpServlet
	{
   
		public void doGet(HttpServletRequest request, HttpServletResponse response)
		throws ServletException, IOExcepiton
		{
   
			PrintWriter pw = response.getWriter();
			pw.println("Copyright 2000-2004 ABC,Inc.All Rights Reserved.<BR>");
		}
	}

要将servlet CopyrightServlet的内容纳入servlet IncludeServlet,您需要首先通过传递CopyrightServlet的路径作为参数来调用ServletContext接口的getRequestDispatcher()方法。这样将返回RequestDispatcher对象。然后可以调用include()方法来纳入CopyrightServlet servlet的内容。您可以使用以下代码创建IncludeServlet servlet:

	import javax.servlet.*;
	import javax.servlet.http.*;
	import javaa.io.*;
	public class IncludeServlet extends HttpServlet
	{
   
		public void doGet(HttpServletRequest request, HttpServletResponse response)
		throws ServletException, IOException
		{
   
			/* Obtain a RequestDispatcher Object */
			RequestDispatcher dispatch = getServletContext().getRequestDispatcher("/CopyrightServlet")
02-06 10:14