Java Servlet请求重定向的方法
作者:一点教程 发布时间:2022-05-23 16:56:02
标签:Java,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.*;
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 运行测试
输入搜索关键词,点击百度搜索,效果如下:
来源:http://www.yiidian.com/servlet/servlet-send-redirect.html


猜你喜欢
- 一、概述应用程序配置文件,对于asp.net是 web.config,对于WINFORM程序是 App.Config(ExeName.exe
- namespace ConsoleApplication2 { class Program { static v
- 谈到 Java 的线程池最熟悉的莫过于 ExecutorService 接口了,jdk1.5 新增的 java.util.concurren
- 在后端数据接口项目开发中,经常遇到返回的数据中有null值,导致前端需要进行判断处理,否则容易出现undefined的情况,如何便捷的将nu
- 相信大家在系统学习jvm的时候都会有遇到过这样的问题,散落的jvm知识点知道很多,但是真正在线上环境遇到一些莫名其妙的gc异常时候却无从下手
- 本文实例为大家分享了Android实现点击获取验证码60秒后重新获取的具体代码,供大家参考,具体内容如下上代码/** * Created b
- 前言结果映射指的是将数据表中的字段与实体类中的属性关联起来,这样 MyBatis 就可以根据查询到的数据来填充实体对象的属性,帮助我们完成赋
- 第 1 步:将这个 Spring Boot 项目的打包方式设置为 war。<packaging>war</packagin
- 在servlet中,转发和重定向是由request和response完成的。两者之间的区别请看我之前的文章。那么在springMVC中是如何
- 1. 概述本文主要包括以下几个方面:编码基本知识,Java,系统软件,url,工具软件等。在下面的描述中,将以"中文"两
- 最近根据项目需要,整理了一个相对比较全面的 WheelView 使用控件,借用之前看到的一句话来说,就是站在巨人肩膀上,进行了一些小调整。
- 线程池类图我们最常使用的Executors实现创建线程池使用线程主要是用上述类图中提供的类。在上边的类图中,包含了一个Executor框架,
- 概述透视表是依据已有数据源来创建的交互式表格,我们可在excel中创建透视表,也可编辑已有透视表。所需工具:Free Spire.XLS f
- 循环结构分两大类,一类是当型,一类是直到型。当型:当布尔值表达式条件为True时,反复执行某语句,当布尔表达式的值为False时才停止循环,
- 引言♀ 小AD:明哥,我终于出了这口恶气了。♂ 明世隐:打爽了是吧。♀ 小AD:那必须的,打十盘我赢九盘,我随意。♂ 明世隐:那小朋友不是搞
- Parallel类是对线程的一个抽象。该类位于System.Threading.Tasks名称空间中,提供了数据和任务并行性。Paralle
- 情况简介spring项目,controller异步调用service的方法,产生大量并发。具体业务:前台同时传入大量待翻译的单词,后台业务接
- Android 的导航栏有诸多功能,例入 截屏,音量加,音量减,最近任务,菜单.返回,主页面,输入法开关......代码源路径:
- 我们有一个TextView,其里面的内容是可以通过代码动态改变的,我们想用一张图片作为TextView的背景,实现类似于手机QQ对话中的气泡
- SpringBoot集成Mybatis时mybatis.mapper-locations和@MapperScan的作用1、mybatis.m