如何在Servlet协作中开始使用SendRedirect

199 阅读3分钟

在Servlet协作中开始使用SendRedirect

HTTPServletResponsesendRedirect() 方法将响应从一个页面重定向到另一个页面。这个方法允许你将用户内容从一个网页转移到另一个网页。

在这篇文章中,我们将看到SendRedirect() 如何给出同样的功能。

基本上,SendRedirect() 方法允许你将用户的响应重定向到另一个网页上,例如。

String country="Kenya";
if("Kenya".equals(n))
{
    response.sendRedirect("htmlPage.html");
}

SendRedirect() 在上面的代码片断中,如果条件得到满足,就可以将客户端浏览器导向htmlPage。

目标

在本文结束时,你应该知道以下内容。

  1. SendRedirect() 方法和它的使用。
  2. 认识到SendRedirect()forward() 方法之间的区别。
  3. 使用一个例子,学习如何实现SendRedirect() 方法。

前提条件

  • 对Java和Servlet的基本了解。
  • RequestDispatcher() 方法的基本了解。
  • 在你的机器上安装代码编辑器,如[Eclipse]或[Netbeans]。在这篇文章中,我们将使用Eclipse IDE。
  • 在你的电脑上安装Tomcat服务器。

SendRedirect方法和它的意义

HttpServletResponse 接口的方法之一是SendRedirect() 。它是使用Servlet协作的另一种方式,以响应的形式将客户端请求从一个页面路由到下一个页面。

这个方法的主要目标是将特定请求的响应发送到所需的网页上。

SendRedirect方法和RequestDispatcher转发方法的区别

  1. forward () RequestDispatcher 的方法在服务器端工作,而 的方法在客户端工作。SendRedirect()
  2. Request dispatcher工作在请求对象上,而SendRedirect() 工作在响应对象上。
  3. forward() 方法的速度也明显快于SendRedirect() 。这是因为,与forward() 方法不同,SendRedirect() 方法需要两个浏览器请求而不是一个。
  4. 当使用SendRedirect() 方法时,原始的URL 总是被改变。然而,当应用forward() 方法时,原来的URL 保持不变。

使用SendRedirect方法

我们将用下面的页面做一个程序来演示如何使用SendRedirect方法。

一个JSP登录页面

这个页面包括一个登录表格和一段表明输入的信息不正确的文字。

Servlet页面

这个页面将协助我们确定用户的凭证是否有效。如果输入的细节正确,用户的浏览器将被引导到主页。如果不是,将显示一个登录页面,并弹出一条信息,显示用户输入了不正确的信息。

HTML中的主页

如果用户凭证正确,servlet页面中的SendRedirect()方法将把用户浏览器重定向到这个页面。

步骤1:创建SendRedirectDemo项目

打开Eclipse或其他任何Java IDE,选择一个新的动态网页项目,创建一个新的动态网页项目。提供你喜欢的项目名称。在我的例子中,我将把它称为SendRedirectDemo。

第2步:创建登录JSP页面

通过右键单击SendRedirectDemo并选择新建JSP,你可以编码一个JSP页面,如图所示。提供你的JSP类名称。我将称我的为login。

JSP页面的主体如下图所示。

<body>
<form action="SevletPage" method="post">
Enter User name <input type="text" name="userName" required><br>

Enter password <input type="password" name="password" required><br>
<input type="submit" value="login">
</form>
<%
String message=request.getParameter("message");

if("invalid".equals(message))
{
%>
<p>Wrong password or user name, please try again!</p>
<%} %>
</body>

第3步:创建一个SevletPage

通过右击SendRedirectDemo并选择New Servlet,你可以编码一个Servlet页面,如下图所示。提供你的Servlet类的名称。我将把它称为SevletPage。

package sendredirect.demo;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;

@WebServlet("/SevletPage")
public class SevletPage extends HttpServlet
{
	private static final long serialVersionUID = 1L;


	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
	{
		String userName=request.getParameter("userName");
		String password=request.getParameter("password");
	if("Kenya".equals(userName)&& "12345".equals(password))
	{
		response.sendRedirect("home.html");
	}
	else
	{
		response.sendRedirect("Login.jsp?message=invalid");
	}
	}

}

HTML主页

要创建这个页面,右击上面的项目,选择新建HTML。最后给你的HTML页面起个名字。在这种情况下,我们将把它命名为home。

该HTML页面的主体如下所示。

<body>
<h1>welcome to the home page</h1>
</body>

结语

最后,我们了解了SendRedirect() 方法及其用途。我们还了解了Java Servlet的SendRedirect()forward() 方法之间的区别。现在你应该知道如何实现SendRedirect() 方法来创建交互式网页。