2021-04-21 08:31  阅读(86)
文章分类:Servlet 简单教程 文章标签:Servlet
©  原文作者:一点教程 原文地址:http://www.yiidian.com/servlet/

HttpServletResponse接口的sendRedirect()方法可用于将响应重定向到另一个资源,它可以是Servlet,Jsp或Html文件。

它接受相对和绝对URL。

它在客户端起作用,因为它使用浏览器的网址栏发出另一个请求。因此,它可以在服务器内部和外部工作。

1 转发和重定向的区别

RequestDispatcher的forward()方法与HttpServletResponse接口的sendRedirect()方法之间有很多区别。具体区别如下:

forward()方法 sendRedirect()方法
forward()方法在服务器端起作用。 sendRedirect()方法在客户端运行。
只有1个请求。转发到另一个Servlet的请求和原来请求是同一个。 每次重定向都有2个请求。重定向到另一个Servlet的请求是由浏览器重新发出的新请求。
只能转发到当前服务器内部的资源。 重定向可以请求当前服务器内部的资源或者外部服务器资源。
示例:request.getRequestDispacher("servlet2").forward(request,response); 示例:response.sendRedirect("servlet2");

2 重定向的示例

在下面示例中,我们将请求重定向到百度。注意sendRedirect方法在客户端工作,这就是为什么我们可以将请求发送到任何地方的原因。我们可以在服务器内外发送请求。

    
    import java.io.*;
    import javax.servlet.*;
    import javax.servlet.http.*;
    
    /**
     * 一点教程网 - http://www.yiidian.com
     */
    public class DemoServlet extends HttpServlet{
    
        public void doGet(HttpServletRequest req,HttpServletResponse res)
                throws ServletException,IOException
        {
            res.setContentType("text/html;charset=utf-8");
            PrintWriter pw=res.getWriter();
    
            res.sendRedirect("http://www.baidu.com");
    
            pw.close();
        }
    }

3 重定向创建自定义百度搜索

在下面示例中,我们使用sendRedirect方法将请求与请求数据一起发送到百度服务器。

3.1 编写搜索表单

    
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <meta charset="UTF-8">
        <title>一点教程网-请求重定向案例</title>
        <meta http-equiv="content-type" content="text/html" charset="UTF-8">
    </head>
    <body>
    <form action="search">
        <input type="text" name="name">
        <input type="submit" value="百度搜索">
    </form>
    </body>
    </html>
    

3.2 编写SearchServlet

    
    import java.io.*;
    import javax.servlet.*;
    import javax.servlet.http.*;
    
    /**
     * 一点教程网 - http://www.yiidian.com
     */
    public class SearchServlet extends HttpServlet{
    
        public void doGet(HttpServletRequest req,HttpServletResponse res)
                throws ServletException,IOException
        {
            String name=req.getParameter("name");
            res.sendRedirect("https://www.baidu.com/s?wd="+name);
        }
    }

3.3 配置web.xml

    
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
             version="3.1">
    
        <servlet>
            <servlet-name>SearchServlet</servlet-name>
            <servlet-class>SearchServlet</servlet-class>
        </servlet>
       <servlet-mapping>
           <servlet-name>SearchServlet</servlet-name>
           <url-pattern>/search</url-pattern>
       </servlet-mapping>
        
    
    </web-app>

3.4 运行测试

202104210837_1.png

输入搜索关键词,点击百度搜索,效果如下:

202104210835_2.png

点赞(0)
版权归原创作者所有,任何形式转载请联系作者; Java 技术驿站 >> 使用Servlet请求重定向
上一篇
使用Servlet请求转发与包含
下一篇
ServletConfig的使用