servlet重定向詳解(八)
本文實例為大家分享了servlet重定向的具體內(nèi)容,供大家參考,具體內(nèi)容如下
1.重定向是什么?
這里說的重定向是由http協(xié)議規(guī)定的一種機制。其工作流程如下所述。
(1)客戶端發(fā)起http請求,訪問服務器端組件。
(2)服務器端返回一個狀態(tài)代碼為302的響應結(jié)果。該代碼的意思是讓瀏覽器再訪問另一個組件,響應結(jié)果中包含著訪問新組件的url地址。新的訪問組件可能在同一個應用中也可能不在同一個應用中。
(3)當瀏覽器接受到這種結(jié)果,會自動訪問新的url.
(4)瀏覽器端接受新的url返回結(jié)果。
2.實現(xiàn)
重定向通過Servlet API 中HttpServletReponse接口提供的 sendRedirect(String location)方法完成。
3.重定向特點
3.1 servlet源組件的響應結(jié)果不會返回到客戶端。
3.2 servlet源組件和目標組件不會共享同一個ServletRequest對象。
3.3 如果源組件在進行重定向前提前提交響應結(jié)果,會報異常。
3.4 重定向的地址不必是同一個服務器的應用。
4.案例
Check1Servlet 第一次請求的類
package com.learn; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; /** * Created by Administrator on 2017/09/28. */ public class Check1Servlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String userName = req.getParameter("name"); String message = ""; if(userName == null){ message = "please input your name"; } else { message = userName; } req.setAttribute("mess",message); PrintWriter out = resp.getWriter(); out.print("before redirect "); System.out.println("before redirect"); resp.sendRedirect("out1?mess="+message); out.print("after redirect"); System.out.println("after redirect"); out.close(); } }
Out1Servlet 重定向的類
package com.learn; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; /** * Created by Administrator on 2017/09/28. */ public class Out1Servlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String mess = (String) req.getAttribute("mess"); System.out.println("請求范圍內(nèi)的數(shù)據(jù):"+mess); mess = req.getParameter("mess"); System.out.println("請求參數(shù)中的:"+mess); PrintWriter out = resp.getWriter(); out.write(mess); out.close(); } }
控制臺輸出結(jié)果:
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Java調(diào)用微信客服消息實現(xiàn)發(fā)貨通知的方法詳解
這篇文章主要介紹了Java調(diào)用微信客服消息實現(xiàn)發(fā)貨通知的方法,結(jié)合實例形式詳細分析了java針對微信接口調(diào)用的原理、調(diào)用方法與相關(guān)注意事項,需要的朋友可以參考下2017-08-08使用Java 8中的Lambda表達式實現(xiàn)工廠模式
這篇文章主要給大家介紹了使用Java 8中的Lambda表達式實現(xiàn)工廠模式的相關(guān)資料,文中介紹的非常詳細,對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。2017-04-04springboot下添加日志模塊和設(shè)置日志文件輸出的方法
日志的使用將通過SLF4J來使用,SLF4J是一個為Java應用提供簡單日志記錄的接口,在Spring框架中,SLF4J常常用于處理框架本身以及應用程序的日志記錄,本文給大家介紹springboot下添加日志模塊和設(shè)置日志文件輸出的相關(guān)知識,感興趣的朋友一起看看吧2023-12-12Java爬蟲范例之使用Htmlunit爬取學校教務網(wǎng)課程表信息
htmlunit 是一款開源的java 頁面分析工具,讀取頁面后,可以有效的使用htmlunit分析頁面上的內(nèi)容。項目可以模擬瀏覽器運行,被譽為java瀏覽器的開源實現(xiàn)。今天我們用這款分析工具來爬取學校教務網(wǎng)課程表信息2021-11-11