A. javaWeb 重定向與轉發
JavaWeb 重定向與轉發在JavaWeb開發中,重定向(Redirect)與轉發(Forward)是兩種常見的頁面跳轉方式,它們各自具有不同的特點和適用場景。
重定向概念:重定向是由客戶端瀏覽器進行的頁面跳轉,即瀏覽器在接收到伺服器的響應後,根據響應中的指令自動向另一個URL發送新的請求。
原理圖:
方法:
特點:
| 區別 | 轉發 | 重定向 || --- | --- | --- || 根目錄 | 使用的伺服器端根目錄:http://localhost:8080/項目訪問地址/ | 使用瀏覽器端的根目錄:http://localhost:8080/ || 地址欄 | 不會變化 | 會變化 || 哪裡跳轉 | 由伺服器進行的跳轉 | 由客戶端瀏覽器進行的跳轉 || 請求域 | 不會丟失數據(request域中的數據可以正常獲取) | 會丟失數據(因為不是同一次請求,request域中的數據不能獲取,如果還想數據共享,則要使用session域) |
總結:
在實際開發中,應根據具體需求選擇合適的跳轉方式,以實現最佳的用戶體驗和系統性能。
B. java重定向問題
Java中的重定向問題主要涉及請求的處理流程和request對象的有效性。
重定向的基本概念:
request對象的有效性:
與轉發的區別:
重定向的使用場景:
綜上所述,Java中的重定向涉及兩次請求,且第二次請求時原來的request對象已經無效。這與轉發不同,轉發是在伺服器端完成的單次請求,request對象在整個過程中始終有效。
C. JAVA里重定向,轉發,轉向有什麼區別
java 重定向和轉發的區別
重定向和轉發有一個重要的不同:當使用轉發時,JSP容器將使用一個內部的方法來調用目標頁面,新的頁面繼續處理同一個請求,而瀏覽器將不會知道這個過程。 與之相反,重定向方式的含義是第一個頁面通知瀏覽器發送一個新的頁面請求。因為,當你使用重定向時,瀏覽器中所顯示的URL會變成新頁面的URL, 而當使用轉發時,該URL會保持不變。重定向的速度比轉發慢,因為瀏覽器還得發出一個新的請求。同時,由於重定向方式產生了一個新的請求,所以經過一次重 定向後,request內的對象將無法使用。
轉發和重定向的區別
不要僅僅為了把變數傳到下一個頁面而使用session作用域,那會無故增大變數的作用域,轉發也許可以幫助你解決這個問題。
重定向:以前的request中存放的變數全部失效,並進入一個新的request作用域。
轉發:以前的request中存放的變數不會失效,就像把兩個頁面拼到了一起。
D. 用JAVA下載HTTP文件時遇到問題
importjava.net.*;
importjava.io.*;
publicclassURLConnectionDemo{
publicstaticvoidmain(String[]args)throwsException{
URLurl=newURL("http://www.scp.e.cn/pantoschoolzz/BG/Bord/Message/DownloadMessageAttachment.aspx?ID=215");
URLConnectionuc=url.openConnection();
StringfileName=uc.getHeaderField(6);
fileName=URLDecoder.decode(fileName.substring(fileName.indexOf("filename=")+9),"UTF-8");
System.out.println("文件名為:"+fileName);
System.out.println("文件大小:"+(uc.getContentLength()/1024)+"KB");
Stringpath="D:"+File.separator+fileName;
FileOutputStreamos=newFileOutputStream(path);
InputStreamis=uc.getInputStream();
byte[]b=newbyte[1024];
intlen=0;
while((len=is.read(b))!=-1){
os.write(b,0,len);
}
os.close();
is.close();
System.out.println("下載成功,文件保存在:"+path);
}
}
//給你一個下載的例子吧,僅供參考。
E. java重定向標准輸出流到當前目錄的log.txt文件,並輸出如下語句:
packagecom.kidd.atmtest;
importjava.io.FileNotFoundException;
importjava.io.PrintStream;
importjava.text.SimpleDateFormat;
importjava.util.Date;
publicclassTest{
publicstaticvoidmain(String[]args)throwsFileNotFoundException{
System.out.println("log.txt文件位置:"
+Thread.currentThread().getContextClassLoader()
.getResource("log.txt").getFile());
System.setOut(newPrintStream(Thread.currentThread()
.getContextClassLoader().getResource("log.txt").getFile()));
System.out.println("Thisisalogfile.");
System.out
.println("****************************************************");
System.out.println("Time:"
+newSimpleDateFormat("yyyy.MM.ddHH:mm:ss")
.format(newDate()));
System.out.println("Nowsystemisrunningwell.");
System.out.println("MynameisTest.");
}
}