猿教程 Logo

RequestDispatcher

RequestDispatcher接口提供了将请求分派给另一个资源的功能,它可以是html,servlet或jsp。 这个接口也可以用来包括另一个资源的内容。 它是servlet协作的一种方式。

在RequestDispatcher接口中定义了两种方法。


RequestDispatcher接口的方法

RequestDispatcher接口提供了两种方法。 他们是:

  1. public void forward(ServletRequest request,ServletResponse response)throws ServletException,java.io.IOException:将请求从servlet转发到服务器上的另一个资源(servlet,JSP文件或HTML文件)。

  2. public void include(ServletRequest request,ServletResponse response)throws ServletException,java.io.IOException:在响应中包含资源(servlet,JSP页面或HTML文件)的内容。


如上图所示,第二个servlet的响应被发送到客户端。 第一个servlet的响应不会显示给用户。


从上图中可以看出,第二个servlet的响应包含在发送到客户端的第一个servlet的响应中。


如何获取RequestDispatcher的对象

ServletRequest接口的getRequestDispatcher()方法返回RequestDispatcher的对象。 句法:

getRequestDispatcher方法的语法

public RequestDispatcher getRequestDispatcher(String resource);

使用getRequestDispatcher方法的示例

RequestDispatcher rd=request.getRequestDispatcher("servlet2");
//servlet2 is the url-pattern of the second servlet

rd.forward(request, response);//method may be include or forward

RequestDispatcher接口的示例

在此示例中,我们正在验证用户输入的密码。 如果password是servlet,它会将请求转发到WelcomeServlet,否则会显示一条错误消息:对不起用户名或密码错误! 在这个程序中,我们正在咀嚼硬编码的信息。  在本例中,我们创建了以下文件:

  • index.html文件:用于从用户获取输入。

  • Login.java文件:用于处理响应的servlet类。 如果密码是servet,它将把请求转发到welcomeservlet。

  • WelcomeServlet.java文件:用于显示欢迎消息的servlet类。

  • web.xml文件:包含有关servlet的信息的部署描述符文件。


index.html

<form action="servlet1" method="post">
Name:<input type="text" name="userName"/><br/>
Password:<input type="password" name="userPass"/><br/>
<input type="submit" value="login"/>
</form>

Login.java

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;


public class Login extends HttpServlet {

public void doPost(HttpServletRequest request, HttpServletResponse response)
		throws ServletException, IOException {

	response.setContentType("text/html");
	PrintWriter out = response.getWriter();
		
	String n=request.getParameter("userName");
	String p=request.getParameter("userPass");
		
	if(p.equals("servlet"){
		RequestDispatcher rd=request.getRequestDispatcher("servlet2");
		rd.forward(request, response);
	}
	else{
		out.print("Sorry UserName or Password Error!");
		RequestDispatcher rd=request.getRequestDispatcher("/index.html");
		rd.include(request, response);
					
		}
	}

}

WelcomeServlet.java

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class WelcomeServlet extends HttpServlet {

	public void doPost(HttpServletRequest request, HttpServletResponse response)
		throws ServletException, IOException {

	response.setContentType("text/html");
	PrintWriter out = response.getWriter();
		
	String n=request.getParameter("userName");
	out.print("Welcome "+n);
	}

}

web.xml

<web-app>
 <servlet>
    <servlet-name>Login</servlet-name>
    <servlet-class>Login</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>WelcomeServlet</servlet-name>
    <servlet-class>WelcomeServlet</servlet-class>
  </servlet>


  <servlet-mapping>
    <servlet-name>Login</servlet-name>
    <url-pattern>/servlet1</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>WelcomeServlet</servlet-name>
    <url-pattern>/servlet2</url-pattern>
  </servlet-mapping>

  <welcome-file-list>
   <welcome-file>index.html</welcome-file>
  </welcome-file-list>
</web-app>





版权声明:本站所有教程均为本站原创或翻译,转载请注明出处,请尊重他人劳动果实。请记住本站地址:www.yuanjiaocheng.net (猿教程) 作者:卿文刚
本文标题: C#环境
本文地址:http://www.yuanjiaocheng.net/Servlet/RequestDispatcher.html