java中如何設置下載文件


如果想要設置某一url為下載文件的方法如下

需要設置文件響應類型,使用response.setContentType,比如jpeg格式的圖片。如果想要訪問該頁面時出現下載保存的窗口,使用response.setHeader("Content-Disposition", "attachment;filename="+filename.getName())函數。也可以是pdf文件,或者其他格式的,如果想要查找瀏覽器可以識別什么格式的文件,需要到服務器的配置文件中找,比如tomcat服務器中搜索mime-mapping即可查看瀏覽器是別的文件類型。

 

public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        response.setCharacterEncoding("utf-8");
        
        File filename = new File("D:\\chengxu\\ML\\2.jpg");
        response.setContentType("image/jpeg");
        response.setHeader("Content-Disposition", "attachment;filename="+filename.getName());
        
        OutputStream out = response.getOutputStream();
        
        FileInputStream fileinput = new FileInputStream(filename);
        
        byte[] charbuffer = new byte[1024];
        int length = 0;
        while ((length=fileinput.read(charbuffer))!=-1) {
            out.write(charbuffer, 0, length);
        }
        
    }

 

2 java web中的servlet第一次訪問時如果初始化中有很多動作需要執行,可能會很慢,如果想要改善這種體驗,可以設置服務器加載時創建對象。即在配置文件中設置

<load-on-startup>n</load-on-startup>,其中n表示一個數字,越小表示優先級越高。

 

3 java web中是一個單實例多線程的,每次用戶請求服務器會開一個線程。所以要注意線程安全問題,如果出現需要使用鎖來解決。最簡單的解決方法是使用同步語句塊。

 

4 ServletConfig對象的作用,主要用於獲取配置文件中的配置參數。在Servlet類中使用getServletConfig來獲取對象。

 

5 在后台Servlet中如何轉發請求和重定向,實現方法如下。跳轉和重定向的區別見jsp指令和重定向

  1)轉發請求    

RequestDispatcher rd = getServletContext().getRequestDispatcher("/getresource");
        rd.forward(request, response);

  2)重定向

response.sendRedirect("getresource");

注意:他們之間的區別,轉發時即使是同一應用也需要/開頭;重定向是如果是同一應用程序,不需要以/開頭的,如果是'/'開頭表明是絕對資源路徑。

 

6 在java web開發中如果使用涉及到路徑問題,盡量使用絕對路徑。不要使用相對路徑,容易出問題。java中‘.’代表的相對路徑是java命令運行所在的路徑。

  比如想要獲取一個propertys文件,有兩種方法獲取

  1) 使用getRealPath(),先獲取資源路徑,然后再得到資源

  2) 使用getResourceAsStream()直接獲取的是文件的輸入流對象

  注意:在路徑問題中,‘/’代表的含義,如果是瀏覽器使用則表示web-apps路徑,所有項目的根目錄;如果是服務器使用則表示webRoot目錄,即當前應用的根目錄。

 

7 在java web中 cookie時間的操作,setMaxAge

  1) 正數,表示cookie經過多少秒會過期

  2) 負數,表示cookie會存在內存中,會話結束就刪除

  3) 0,表示刪除cookie

  操作cookie時,如果設置路徑,則發送請求只會將該應用路徑下的cookie發送過去。cookie不能存儲中文。

 

8 java web中會話管理中有一個重要的東西就是session了,設置session的有效時間有兩種

 

    1)全局設置,在配置文件中添加,此處時間單位是分鍾    

<session-config>
      <session-timeout>60</session-timeout>
</session-config>

    2)在主頁面中設置,此處時間單位是秒

HttpSession session=request.getSession();   
session.setMaxInactiveInterval(3600)

 

  session技術也是用到了cookie技術的,他會在瀏覽器端存儲一個會話id,但是如果瀏覽器關閉,則消失。說明這個cookie是存儲在內存中,如果想要使瀏覽器關閉再打開可以繼續使用之前的會話的話,需要修改session id的存儲時間為正數,這樣下次訪問同一應用時可以使用上一次保存在session中的內容。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM