Java Servlet请求重定向的方法

作者:一点教程 时间:2022-05-23 16:56:02 

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.*;

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.*;

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 运行测试

Java Servlet请求重定向的方法

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

Java Servlet请求重定向的方法

来源:http://www.yiidian.com/servlet/servlet-send-redirect.html

标签:Java,Servlet,请求,重定向
0
投稿

猜你喜欢

  • c#异步操作async await状态机的总结(推荐)

    2021-08-22 07:13:12
  • 浅析依赖注入框架Autofac的使用

    2023-04-19 22:23:31
  • java如何消除太多的if else判断示例代码

    2023-01-17 21:57:40
  • SuperSocket入门--Telnet服务器和客户端请求处理

    2021-07-24 19:35:14
  • C#使用foreach语句遍历堆栈(Stack)的方法

    2021-11-03 08:03:38
  • 剑指Offer之Java算法习题精讲求和篇

    2022-04-07 14:05:36
  • C#实现json的序列化和反序列化实例代码

    2022-07-18 01:50:34
  • Java数组扩容实现方法解析

    2021-08-25 13:08:26
  • macOS上使用gperftools定位Java内存泄漏问题及解决方案

    2023-03-02 11:42:38
  • Java操作pdf的工具类itext的处理方法

    2023-07-14 11:51:53
  • Android仿知乎客户端关注和取消关注的按钮点击特效实现思路详解

    2022-08-05 19:49:02
  • MyBatis学习教程(三)-MyBatis配置优化

    2023-10-31 21:13:51
  • MybatisPlus实现对象嵌套关联查询一对多List集合查询

    2022-04-27 16:00:12
  • JSON.toJSONString()空字段不忽略修改的问题

    2023-06-16 03:12:37
  • Java Spring MVC 上传下载文件配置及controller方法详解

    2023-11-22 04:13:59
  • 5步学会使用VideoView播放视频

    2023-09-12 05:51:07
  • java Stream流常见操作方法(反射,类加载器,类加载,反射)

    2022-03-24 06:54:56
  • Kotlin挂起函数原理示例剖析

    2023-11-10 21:52:13
  • idea中同一SpringBoot项目多端口启动

    2023-05-09 06:39:27
  • C++实现LeetCode(169.求大多数)

    2023-09-04 08:03:47
  • asp之家 软件编程 m.aspxhome.com