Java Servlet請(qǐng)求重定向的方法
HttpServletResponse接口的sendRedirect()方法可用于將響應(yīng)重定向到另一個(gè)資源,它可以是Servlet,Jsp或Html文件。
它接受相對(duì)和絕對(duì)URL。
它在客戶端起作用,因?yàn)樗褂脼g覽器的網(wǎng)址欄發(fā)出另一個(gè)請(qǐng)求。因此,它可以在服務(wù)器內(nèi)部和外部工作。
1 轉(zhuǎn)發(fā)和重定向的區(qū)別
RequestDispatcher的forward()方法與HttpServletResponse接口的sendRedirect()方法之間有很多區(qū)別。具體區(qū)別如下:
forward()方法 | sendRedirect()方法 |
---|---|
forward()方法在服務(wù)器端起作用。 | sendRedirect()方法在客戶端運(yùn)行。 |
只有1個(gè)請(qǐng)求。轉(zhuǎn)發(fā)到另一個(gè)Servlet的請(qǐng)求和原來(lái)請(qǐng)求是同一個(gè)。 | 每次重定向都有2個(gè)請(qǐng)求。重定向到另一個(gè)Servlet的請(qǐng)求是由瀏覽器重新發(fā)出的新請(qǐng)求。 |
只能轉(zhuǎn)發(fā)到當(dāng)前服務(wù)器內(nèi)部的資源。 | 重定向可以請(qǐng)求當(dāng)前服務(wù)器內(nèi)部的資源或者外部服務(wù)器資源。 |
示例:request.getRequestDispacher("servlet2").forward(request,response); | 示例:response.sendRedirect(" servlet2"); |
2 重定向的示例
在下面示例中,我們將請(qǐng)求重定向到百度。注意sendRedirect方法在客戶端工作,這就是為什么我們可以將請(qǐng)求發(fā)送到任何地方的原因。我們可以在服務(wù)器內(nèi)外發(fā)送請(qǐng)求。
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方法將請(qǐng)求與請(qǐng)求數(shù)據(jù)一起發(fā)送到百度服務(wù)器。
3.1 編寫搜索表單
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <meta charset="UTF-8"> <title>一點(diǎn)教程網(wǎng)-請(qǐ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 運(yùn)行測(cè)試
輸入搜索關(guān)鍵詞,點(diǎn)擊百度搜索,效果如下:
以上就是使用Java Servlet請(qǐng)求重定向的詳細(xì)內(nèi)容,更多關(guān)于Java Servlet請(qǐng)求重定向的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(3)
下面小編就為大家?guī)?lái)一篇Java基礎(chǔ)的幾道練習(xí)題(分享)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧,希望可以幫到你2021-07-07Java源碼解析阻塞隊(duì)列ArrayBlockingQueue介紹
今天小編就為大家分享一篇關(guān)于Java源碼解析阻塞隊(duì)列ArrayBlockingQueue介紹,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-01-01java swing實(shí)現(xiàn)貪吃蛇雙人游戲
這篇文章主要為大家詳細(xì)介紹了java swing實(shí)現(xiàn)貪吃蛇雙人小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-01-01RestTemplate請(qǐng)求失敗自動(dòng)重啟機(jī)制精講
這篇文章主要為大家介紹了RestTemplate請(qǐng)求失敗自定義處理的方法,自動(dòng)重試的機(jī)制精講,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多所進(jìn)步,早日升職加薪2022-03-03SpringBoot項(xiàng)目報(bào)錯(cuò):"Error?starting?ApplicationContext....
這篇文章主要給大家介紹了關(guān)于SpringBoot項(xiàng)目報(bào)錯(cuò):“Error?starting?ApplicationContext.?To?display?the?conditions?report?re-run?...”的解決辦法,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下2022-08-08spring boot和spring cloud之間的版本關(guān)系
這篇文章主要介紹了spring boot和spring cloud之間的版本關(guān)系,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-08-08