Servlet重定向详解 - 极悦
专注Java教育14年 全国咨询/投诉热线:444-1124-454
极悦LOGO图
始于2009,口口相传的Java黄埔军校
首页 hot资讯 Servlet重定向详解

Servlet重定向详解

更新时间:2022-01-04 10:34:25 来源:极悦 浏览1250次

1.描述

Servlet Redirect, HttpServletResponse是一个由SendRedirect()组成的接口,该方法的功能是将响应重定向到其他页面,例如JSP,HTML。它在浏览器端工作,因为它使用 URL 栏并且它总是发送一个新请求。它将在服务器内部和外部使用。以下是声明SendRedirect()的语法。

response.sendRedirect("URL")

2.概念

Servlet Redirect,下图演示了web应用中的Servlet Redirect方法

HTML servlet1(Servlet程序)的输出将被丢弃,并且仅servlet2的HTML输出将浏览器窗口作为响应上显示。

浏览器窗口向 servlet1 程序发出初始请求。

servlet1 程序的所有语句都执行,包括res.sendRedirect方法。

Servlet1 根据作为参数值放置在sendRedirect()方法中的 URI 生成对浏览器窗口的隐式响应。隐式响应状态码为300-399,该码表示重定向。

浏览器窗口使用来自隐式响应代码的 URL 向 servlet2 程序生成一个隐式请求,servlet2 程序的所有语句都会执行。

servlet1 的输出被丢弃,只有 servlet2 程序的 HTML 输出显示为最终响应。

向前() 发送重定向()
执行 servlet 链接的 forward() 模式 执行 sendRedirect() 通信模式
servlet 程序直接与目标 Web 资源程序通信。 servlet 程序通过与浏览器窗口的网络往返来与目标 servlet 程序通信
servlet 程序和目标 Web 资源程序使用相同的请求和响应对象,因此请求在目标 Web 资源程序中是可见和可访问的。 servlet 程序和目标 Web 资源程序不会使用相同的请求和响应对象。所以请求数据在目标程序中是不可见和不可访问的。然后sendRedirect 发送新请求。
在转发请求期间 URL 显示在浏览器窗口中并且不会更改。 在 sendRedirect 操作期间,浏览器窗口中的 URL 将被更改。

3.例子

索引.html

<html>
<form action="./welcome">
            <input type="submit" value="click here for splessons">
     </form> 
</html>

这里刚刚创建了“点击这里查看 splessons”的提交按钮,给定的 URL 是“./welcome”,确保这个 URL 应该与web.xml文件 URL匹配。

网页.xml

<web-app>
      <servlet>
            <servlet-name>DemoSendRedirect</servlet-name>
            <servlet-class>sendredirect.SimpleSendRedirect</servlet-class>
      </servlet>  
      <servlet-mapping>
            <servlet-name>DemoSendRedirect</servlet-name>
            <url-pattern>/welcome</url-pattern>
      </servlet-mapping>
          <welcome-file-list>  
            <welcome-file>welcome.html</welcome-file>             
          </welcome-file-list>   
</web-app>

如前所述,即DemoSendRedirect在两个servlet和servlet-mapping中都应该相同。

SimpleSendRedirect.java

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; 
public class SimpleSendRedirect extends HttpServlet {      
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException { 
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        String tutorialName = request.getParameter("name");
        response.sendRedirect("http://www.splessons.com");
        out.flush();
        out.close();
    } 
}

Servlet 重定向,这里 setContentType(“text/html”) 的目的是,它基本上告诉客户端它是什么内容类型,以便它知道如何处理它。将对象的格式化表示打印到文本输出流。HttpServletResponse 接口的sendRedirect()方法可用于将响应重定向到另一个资源,它可能是 servlet、jsp 或 html 文件。

输出:

通过编译程序,将显示以下输出。

当单击搜索按钮时,所需页面将显示如下。

欢迎.html

<html> 
<form action="./welcome"> 
<h2>Enter your tutorial name<input type="text"name="name/">
        <input type="submit"value="search">
   </form> 
</html>

这里创建了一个文本框来搜索所需的页面,并创建了提交按钮以将输入提供给服务器。

网页.xml

      <servlet>
            <servlet-name>DemoSendRedirect</servlet-name>
            <servlet-class>sendredirect.SimpleSendRedirect</servlet-class>
      </servlet>   
      <servlet-mapping>
            <servlet-name>DemoSendRedirect</servlet-name>
            <url-pattern>/welcome</url-pattern>
      </servlet-mapping>
      <welcome-file-list>  
               <welcome-file>welcome.html</welcome-file>  
      </welcome-file-list>
</web-app>

正如所讨论的servlet 名称应该相同并且URL应该与 HTML 表单匹配。

DemoSendRedirect.java

package sendredirect;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;   
public class SimpleSendRedirect extends HttpServlet {        
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {  
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        String tutorialName = request.getParameter("name");         
        response.sendRedirect("http://www.splessons.com/lesson/"+tutorialName+"+tutorial/");
            out.flush();
            out.close();
        }      
}

所述的doGet()方法被用于参数与所述报头信息一起发送到一个URL。HttpServletResponse 接口的sendRedirect()方法可用于将响应重定向到另一个资源,它可能是 servlet、jsp 或 html 文件。

输出:

编译后,将显示以下输出程序。

单击搜索按钮时,将显示所需页面。

在doGet() 中,参数与标头信息一起发送,而在doPost() 中,参数在正文中发送。

doGet() 将有发送数据的限制,而 doPost() 没有限制。

doGet() 中的参数未加密,而 doPost() 中的参数已加密。

doGet() 方法用于从服务器获取一些信息,doPost() 用于将一些信息发布到服务器。

所述的doGet()方法被用于参数与所述报头信息一起发送到一个URL。

所述的doPost()方法被用于庞大的信息发送到一个URL。

这里的代码应该从 HTML 页面调用。

以上就是关于“Servlet重定向详解”的介绍,大家如果想了解更多相关知识,可以关注一下极悦的Servlet教程,教程内容由浅到深,通俗易懂,即使没有基础也很容易理解,希望对大家能够有所帮助。

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>