Java Servlet請求重定向的方法
HttpServletResponse接口的sendRedirect()方法可用于將響應重定向到另一個資源,它可以是Servlet,Jsp或Html文件。
它接受相對和絕對URL。
它在客戶端起作用,因為它使用瀏覽器的網(wǎng)址欄發(fā)出另一個請求。因此,它可以在服務器內(nèi)部和外部工作。
1 轉(zhuǎn)發(fā)和重定向的區(qū)別
RequestDispatcher的forward()方法與HttpServletResponse接口的sendRedirect()方法之間有很多區(qū)別。具體區(qū)別如下:
forward()方法 | sendRedirect()方法 |
---|---|
forward()方法在服務器端起作用。 | sendRedirect()方法在客戶端運行。 |
只有1個請求。轉(zhuǎn)發(fā)到另一個Servlet的請求和原來請求是同一個。 | 每次重定向都有2個請求。重定向到另一個Servlet的請求是由瀏覽器重新發(fā)出的新請求。 |
只能轉(zhuǎn)發(fā)到當前服務器內(nèi)部的資源。 | 重定向可以請求當前服務器內(nèi)部的資源或者外部服務器資源。 |
示例:request.getRequestDispacher("servlet2").forward(request,response); | 示例:response.sendRedirect(" servlet2"); |
2 重定向的示例
在下面示例中,我們將請求重定向到百度。注意sendRedirect方法在客戶端工作,這就是為什么我們可以將請求發(fā)送到任何地方的原因。我們可以在服務器內(nèi)外發(fā)送請求。
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 重定向創(chuàng)建自定義百度搜索
在下面示例中,我們使用sendRedirect方法將請求與請求數(shù)據(jù)一起發(fā)送到百度服務器。
3.1 編寫搜索表單
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <meta charset="UTF-8"> <title>一點教程網(wǎng)-請求重定向案例</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 運行測試
輸入搜索關(guān)鍵詞,點擊百度搜索,效果如下:
以上就是使用Java Servlet請求重定向的詳細內(nèi)容,更多關(guān)于Java Servlet請求重定向的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Java源碼解析阻塞隊列ArrayBlockingQueue介紹
今天小編就為大家分享一篇關(guān)于Java源碼解析阻塞隊列ArrayBlockingQueue介紹,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-01-01SpringBoot項目報錯:"Error?starting?ApplicationContext....
這篇文章主要給大家介紹了關(guān)于SpringBoot項目報錯:“Error?starting?ApplicationContext.?To?display?the?conditions?report?re-run?...”的解決辦法,文中通過圖文介紹的非常詳細,需要的朋友可以參考下2022-08-08spring boot和spring cloud之間的版本關(guān)系
這篇文章主要介紹了spring boot和spring cloud之間的版本關(guān)系,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-08-08