更新时间:2022-01-04 10:34:25 来源:极悦 浏览1250次
Servlet Redirect, HttpServletResponse是一个由SendRedirect()组成的接口,该方法的功能是将响应重定向到其他页面,例如JSP,HTML。它在浏览器端工作,因为它使用 URL 栏并且它总是发送一个新请求。它将在服务器内部和外部使用。以下是声明SendRedirect()的语法。
response.sendRedirect("URL")
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 将被更改。 |
索引.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教程,教程内容由浅到深,通俗易懂,即使没有基础也很容易理解,希望对大家能够有所帮助。
0基础 0学费 15天面授
Java就业班有基础 直达就业
业余时间 高薪转行
Java在职加薪班工作1~3年,加薪神器
工作3~5年,晋升架构
提交申请后,顾问老师会电话与您沟通安排学习