ervlet程序中,提供了請求轉發和請求重定向兩個功能,其中請求轉發是指:將一個HTTP請求轉發給另一個HTTP請求進行處理,這個過程中,還是只有一次HTTP請求,只是在這一次HTTP請求中間,進行了轉發的動作;請求重定向是指:瀏覽器向服務器發起一次HTTP請求,然后服務器返回給客戶端一個重定向狀態碼以及重定向的地址,瀏覽器會再次向服務器發起一次HTTP請求,訪問重定向之后的地址。下面具體介紹一下請求轉發的功能。
請求的轉發,是指:在同一次HTTP請求中,服務器將當前這個Servlet程序轉發給了另外一個Servlet程序進行處理,最終響應結果是由轉發之后的那個Servlet程序返回給客戶端的。
轉發的特點:
轉發的過程如下圖所示:
要實現請求的轉發,那就需要從HttpServletRequest請求對象中,調用getRequestDispatcher()方法,獲取到請求轉發器對象RequestDispatcher,并且指定轉發后的地址,最后調用forward()方法,完成請求的轉發。
創建FirstServlet程序:
package com.gitcode.servlet;
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;
/**
* @version 1.0.0
* @Date: 2024/2/12 19:41
* @Author ZhuYouBin
* @Description:
*/
public class FirstServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 設置請求數據
request.setAttribute("username", "這是FirstServlet中保存的數據!");
// 獲取請求轉發器,指定轉發的地址
RequestDispatcher requestDispatcher=request.getRequestDispatcher("/secondServlet");
// 調用 forward() 方法進行轉發
requestDispatcher.forward(request, response);
}
}
創建SecondServlet程序:
package com.gitcode.servlet;
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;
/**
* @version 1.0.0
* @Date: 2024/2/12 19:41
* @Author ZhuYouBin
* @Description:
*/
public class SecondServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
// 由 FirstServlet 轉發過來
PrintWriter writer=response.getWriter();
// 響應數據
Object username=request.getAttribute("username");
writer.println("<h3>請求轉發,獲取前一個請求數據:username=" + username + "</h3>");
// 關閉流
writer.close();
}
}
啟動程序,瀏覽器訪問【/servlet/firstServlet】地址,此時可以看到界面返回的是SecondServlet程序中返回的內容。
在進行請求轉發的時候,需要調用getRequestDispatcher()方法,獲取請求轉發器對象,這個方法需要接收轉發后的路徑地址,那么這個路徑地址要如何設置呢???
getRequestDispatcher()方法源代碼如下所示:
public RequestDispatcher getRequestDispatcher(String path) {
Context context=this.getContext();
if (context==null) {
return null;
} else if (path==null) {
return null;
} else {
int fragmentPos=path.indexOf(35);
if (fragmentPos > -1) {
log.warn(sm.getString("request.fragmentInDispatchPath", new Object[]{path}));
path=path.substring(0, fragmentPos);
}
if (path.startsWith("/")) {
return context.getServletContext().getRequestDispatcher(path);
} else {
String servletPath=(String)this.getAttribute("javax.servlet.include.servlet_path");
if (servletPath==null) {
servletPath=this.getServletPath();
}
String pathInfo=this.getPathInfo();
String requestPath=null;
if (pathInfo==null) {
requestPath=servletPath;
} else {
requestPath=servletPath + pathInfo;
}
int pos=requestPath.lastIndexOf(47);
String relative=null;
if (context.getDispatchersUseEncodedPaths()) {
if (pos >=0) {
relative=URLEncoder.DEFAULT.encode(requestPath.substring(0, pos + 1), StandardCharsets.UTF_8) + path;
} else {
relative=URLEncoder.DEFAULT.encode(requestPath, StandardCharsets.UTF_8) + path;
}
} else if (pos >=0) {
relative=requestPath.substring(0, pos + 1) + path;
} else {
relative=requestPath + path;
}
return context.getServletContext().getRequestDispatcher(relative);
}
}
}
以上,就是HttpServletRequest請求的轉發。
今天就到這里,未完待續~~
理了23個跟傳統歷史文化有關的網站,千萬不要錯過~
1.故宮博物院藏品總目:{url:https%3A//www.urlshare.cn/umirror_url_check?_wv=1&srctype=touch&apptype=android&loginuin=3021168867&plateform=mobileqq&url=https%253A%252F%252Fzm-digicol.dpm.org.cn%252F&src_uin=2941347079&src_scene=7035&cli_scene=getDetail,text:https%3A//zm-digicol.dpm.org.cn/}
2.漢典古籍:{url:https%3A//www.urlshare.cn/umirror_url_check?_wv=1&srctype=touch&apptype=android&loginuin=3021168867&plateform=mobileqq&url=http%253A%252F%252Ft.cn%252FGt1aM&src_uin=2941347079&src_scene=7035&cli_scene=getDetail,text:http%3A//t.cn/Gt1aM}
3.中國古籍網:{url:https%3A//www.urlshare.cn/umirror_url_check?_wv=1&srctype=touch&apptype=android&loginuin=3021168867&plateform=mobileqq&url=https%253A%252F%252Fc.pc.qq.com%252Fmiddlem.html%253Fpfurl%253Dhttp%25253A%25252F%25252Ft.cn%25252FzOqoclW%2526gjsublevel%253D2804%2526pfuin%253D83781672%2526pfto%253Dmqq.qzone%2526type%253D0%2526gjlevel%253D15&src_uin=2941347079&src_scene=7035&cli_scene=getDetail,text:https%3A//c.pc.qq.com/middlem.html?pfurl=http%253A%252F%252Ft.cn%252FzOqoclW&gjsublevel=2804&pfuin=83781672&pfto=mqq.qzone&type=0&gjlevel=15}
4.中國歷史地圖集:{url:https%3A//www.urlshare.cn/umirror_url_check?_wv=1&srctype=touch&apptype=android&loginuin=3021168867&plateform=mobileqq&url=http%253A%252F%252Ft.cn%252FzOZ8DRT&src_uin=2941347079&src_scene=7035&cli_scene=getDetail,text:http%3A//t.cn/zOZ8DRT}
5.中國傳統顏色網站:{url:https%3A//www.urlshare.cn/umirror_url_check?_wv=1&srctype=touch&apptype=android&loginuin=3021168867&plateform=mobileqq&url=http%253A%252F%252Fzhongguose.com%252F&src_uin=2941347079&src_scene=7035&cli_scene=getDetail,text:http%3A//zhongguose.com/}
6.歷代詩人地域分布:{url:https%3A//www.urlshare.cn/umirror_url_check?_wv=1&srctype=touch&apptype=android&loginuin=3021168867&plateform=mobileqq&url=http%253A%252F%252Ft.cn%252FESIy0mp&src_uin=2941347079&src_scene=7035&cli_scene=getDetail,text:http%3A//t.cn/ESIy0mp}
7.中國歷代人物圖像數據庫:{url:https%3A//www.urlshare.cn/umirror_url_check?_wv=1&srctype=touch&apptype=android&loginuin=3021168867&plateform=mobileqq&url=http%253A%252F%252Ft.cn%252FzOZns18&src_uin=2941347079&src_scene=7035&cli_scene=getDetail,text:http%3A//t.cn/zOZns18}
8.中國地方志數據庫:{url:https%3A//www.urlshare.cn/umirror_url_check?_wv=1&srctype=touch&apptype=android&loginuin=3021168867&plateform=mobileqq&url=http%253A%252F%252Flcd.ccnu.edu.cn%252F%2523%252Findex&src_uin=2941347079&src_scene=7035&cli_scene=getDetail#/index,text:http%3A//lcd.ccnu.edu.cn/#/index}
9.國學導航:{url:https%3A//www.urlshare.cn/umirror_url_check?_wv=1&srctype=touch&apptype=android&loginuin=3021168867&plateform=mobileqq&url=https%253A%252F%252Fc.pc.qq.com%252Fmiddlem.html%253Fpfurl%253Dhttp%25253A%25252F%25252Ft.cn%25252FRyhWagD%2526gjsublevel%253D2804%2526pfuin%253D83781672%2526pfto%253Dmqq.qzone%2526type%253D0%2526gjlevel%253D15&src_uin=2941347079&src_scene=7035&cli_scene=getDetail,text:https%3A//c.pc.qq.com/middlem.html?pfurl=http%253A%252F%252Ft.cn%252FRyhWagD&gjsublevel=2804&pfuin=83781672&pfto=mqq.qzone&type=0&gjlevel=15}
10.古籍館:{url:https%3A//www.urlshare.cn/umirror_url_check?_wv=1&srctype=touch&apptype=android&loginuin=3021168867&plateform=mobileqq&url=https%253A%252F%252Fwww.gujiguan.com%252F&src_uin=2941347079&src_scene=7035&cli_scene=getDetail,text:https%3A//www.gujiguan.com/}
11.中醫古籍全文數據庫:{url:https%3A//www.urlshare.cn/umirror_url_check?_wv=1&srctype=touch&apptype=android&loginuin=3021168867&plateform=mobileqq&url=http%253A%252F%252Ft.cn%252FRLXw2ko&src_uin=2941347079&src_scene=7035&cli_scene=getDetail,text:http%3A//t.cn/RLXw2ko}
12.全歷史:{url:https%3A//www.urlshare.cn/umirror_url_check?_wv=1&srctype=touch&apptype=android&loginuin=3021168867&plateform=mobileqq&url=https%253A%252F%252Fwww.allhistory.com%252F&src_uin=2941347079&src_scene=7035&cli_scene=getDetail,text:https%3A//www.allhistory.com/}
13.國學大師:{url:https%3A//www.urlshare.cn/umirror_url_check?_wv=1&srctype=touch&apptype=android&loginuin=3021168867&plateform=mobileqq&url=http%253A%252F%252Fwww.guoxh&src_uin=2941347079&src_scene=7035&cli_scene=getDetail,text:http%3A//www.guoxh}ttp://t.cn/A6q84dGA
14.中國京劇戲考:{url:https%3A//www.urlshare.cn/umirror_url_check?_wv=1&srctype=touch&apptype=android&loginuin=3021168867&plateform=mobileqq&url=http%253A%252F%252Ft.cn%252FA6q84dGA&src_uin=2941347079&src_scene=7035&cli_scene=getDetail,text:http%3A//t.cn/A6q84dGA}
15.書法空間:{url:https%3A//www.urlshare.cn/umirror_url_check?_wv=1&srctype=touch&apptype=android&loginuin=3021168867&plateform=mobileqq&url=http%253A%252F%252Ft.cn%252FRxQPAqc&src_uin=2941347079&src_scene=7035&cli_scene=getDetail,text:http%3A//t.cn/RxQPAqc}
16.發現中國:{url:https%3A//www.urlshare.cn/umirror_url_check?_wv=1&srctype=touch&apptype=android&loginuin=3021168867&plateform=mobileqq&url=http%253A%252F%252Ft.cn%252FRYI2Iaj&src_uin=2941347079&src_scene=7035&cli_scene=getDetail,text:http%3A//t.cn/RYI2Iaj}
17.中國歷史學習網:{url:https%3A//www.urlshare.cn/umirror_url_check?_wv=1&srctype=touch&apptype=android&loginuin=3021168867&plateform=mobileqq&url=http%253A%252F%252Ft.cn%252FA6ICUI2U&src_uin=2941347079&src_scene=7035&cli_scene=getDetail,text:http%3A//t.cn/A6ICUI2U}
18.讀典籍:{url:https%3A//www.urlshare.cn/umirror_url_check?_wv=1&srctype=touch&apptype=android&loginuin=3021168867&plateform=mobileqq&url=http%253A%252F%252Ft.cn%252FA655he6S&src_uin=2941347079&src_scene=7035&cli_scene=getDetail,text:http%3A//t.cn/A655he6S}
19.古今文字集成:{url:https%3A//www.urlshare.cn/umirror_url_check?_wv=1&srctype=touch&apptype=android&loginuin=3021168867&plateform=mobileqq&url=https%253A%252F%252Fc.pc.qq.com%252Fmiddlem.html%253Fpfurl%253Dhttp%25253A%25252F%25252Ft.cn%25252FRLdkvFV%2526gjsublevel%253D2804%2526pfuin%253D83781672%2526pfto%253Dmqq.qzone%2526type%253D0%2526gjlevel%253D15&src_uin=2941347079&src_scene=7035&cli_scene=getDetail,text:https%3A//c.pc.qq.com/middlem.html?pfurl=http%253A%252F%252Ft.cn%252FRLdkvFV&gjsublevel=2804&pfuin=83781672&pfto=mqq.qzone&type=0&gjlevel=15}
20.歷史劇里看歷史:{url:https%3A//www.urlshare.cn/umirror_url_check?_wv=1&srctype=touch&apptype=android&loginuin=3021168867&plateform=mobileqq&url=http%253A%252F%252Ft.cn%252F8kIgi9a&src_uin=2941347079&src_scene=7035&cli_scene=getDetail,text:http%3A//t.cn/8kIgi9a}
21.成語查詢:{url:https%3A//www.urlshare.cn/umirror_url_check?_wv=1&srctype=touch&apptype=android&loginuin=3021168867&plateform=mobileqq&url=http%253A%252F%252Ft.cn%252FhRDRm&src_uin=2941347079&src_scene=7035&cli_scene=getDetail,text:http%3A//t.cn/hRDRm}
22.搜韻:{url:https%3A//www.urlshare.cn/umirror_url_check?_wv=1&srctype=touch&apptype=android&loginuin=3021168867&plateform=mobileqq&url=https%253A%252F%252Fwww.sou-yun.cn%252F&src_uin=2941347079&src_scene=7035&cli_scene=getDetail,text:https%3A//www.sou-yun.cn/}
23.唐宋文學編年地圖 :{url:https%3A//www.urlshare.cn/umirror_url_check?_wv=1&srctype=touch&apptype=android&loginuin=3021168867&plateform=mobileqq&url=https%253A%252F%252Fsou-yun.cn%252FMPoetLifeMap.aspx&src_uin=2941347079&src_scene=7035&cli_scene=getDetail,text:https%3A//sou-yun.cn/MPoetLifeMap.aspx}
「整理不易 路過的伙伴們點個贊 喜歡的關注收藏轉發」
先簡單的介紹下http和https,HTTP(HyperText Transfer Protocol:超文本傳輸協議)是一種用于分布式、協作式和超媒體信息系統的應用層協議。 簡單來說就是一種發布和接收 HTML 頁面的方法,被用于在 Web 瀏覽器和網站服務器之間傳遞信息,HTTPS是安全的HTTP。HTTPS 主要由兩部分組成:HTTP + SSL / TLS,也就是在 HTTP 上面又加了一層處理加密信息的模塊。服務端和客戶端的信息傳輸都會通過 TLS 進行加密,所以傳輸的數據都是加密后的數據。具體的HTTPS原理解析請參考我的另一篇文章一文讀懂HTTPS的實現原理
*請認真填寫需求信息,我們會在24小時內與您取得聯系。