黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 使用SpringMVC文件下載功能

使用SpringMVC文件下載功能

更新時間:2021-09-10 10:15:35 來源:動力節(jié)點 瀏覽1886次

使用文件下載步驟

對請求處理方法使用void或null作為返回類型,并在方法中添加HttpServletResponse參數(shù)

將響應(yīng)的內(nèi)容類型設(shè)為文件的內(nèi)容類型

添加一個名為Content-Disposition的HTTP響應(yīng)標題,并賦值attachment; filename= fileName,這里的fileName是默認文件名,應(yīng)該出現(xiàn)在File Download(文件下載)對話框中。它通常與文件同名,但是也并非一定如此。(可選)

例子:下載服務(wù)器上的pdf文件

指定用戶、密碼登錄表單之后,設(shè)置session,然后才可以下載文件:/WEB-INF/data/secret.pdf

Controller代碼

@Controller
public class ResourceController {
private static final Log logger = LogFactory.getLog(ResourceController.class);
/**
 * @param login @ModelAttribute 注解接受表單中的login對象
 * @param session
 * @param model
 * @return
 */
@RequestMapping(value="/login")
public String login(@ModelAttribute Login login, HttpSession session, Model model) {
    System.out.println(login);
    //與jsp中的標簽綁定
    model.addAttribute("login", new Login());
    if ("paul".equals(login.getUserName()) &&
            "secret".equals(login.getPassword())) {
        //設(shè)置session
        session.setAttribute("loggedIn", Boolean.TRUE);
        return "Main";
    } else {
        return "LoginForm";
    }
}
@RequestMapping(value="/resource_download")
public String downloadResource(HttpSession session, HttpServletRequest request,
        HttpServletResponse response) {
    if (session == null || 
            session.getAttribute("loggedIn") == null) {
        return "LoginForm";
    }
    String dataDirectory = request.
            getServletContext().getRealPath("/WEB-INF/data");
    System.out.println(dataDirectory);
    File file = new File(dataDirectory, "secret.pdf");
    if (file.exists()) {
        //設(shè)置響應(yīng)類型,這里是下載pdf文件
        response.setContentType("application/pdf");
        //設(shè)置Content-Disposition,設(shè)置attachment,瀏覽器會激活文件下載框;filename指定下載后默認保存的文件名
        //不設(shè)置Content-Disposition的話,文件會在瀏覽器內(nèi)打卡,比如txt、img文件
        response.addHeader("Content-Disposition",
                "attachment; filename=secret.pdf");
        byte[] buffer = new byte[1024];
        FileInputStream fis = null;
        BufferedInputStream bis = null;
        // if using Java 7, use try-with-resources
        try {
            fis = new FileInputStream(file);
            bis = new BufferedInputStream(fis);
            OutputStream os = response.getOutputStream();
            int i = bis.read(buffer);
            while (i != -1) {
                os.write(buffer, 0, i);
                i = bis.read(buffer);
            }
        } catch (IOException ex) {
            // do something, 
            // probably forward to an Error page
        } finally {
            if (bis != null) {
                try {
                    bis.close();
                } catch (IOException e) {
                }
            }
            if (fis != null) {
                try {
                    fis.close();
                } catch (IOException e) {
                }
            }
        }
    }
    return null;
}
}

LoginForm.jsp

Main.jsp

結(jié)果

例子:瀏覽器內(nèi)顯示圖片。圖片放在WEN-INF目錄下面,可以禁止直接請求

Controller代碼

@Controller
public class ImageController {
private static final Log logger = LogFactory.getLog(ImageController.class);
@RequestMapping(value="/image_get/{id}", method = RequestMethod.GET)
public void getImage(@PathVariable String id, 
        HttpServletRequest request, 
        HttpServletResponse response, 
        @RequestHeader String referer) {
    //referer記錄了該請求是從哪個鏈接過來的,可以用來判斷請求是否合法
    if (referer != null) {
        System.out.println(referer);
        String imageDirectory = request.getServletContext().
                getRealPath("/WEB-INF/image");
        File file = new File(imageDirectory, 
                id + ".jpg");
        if (file.exists()) {
            response.setContentType("image/jpg");
            //不設(shè)置Content-Disposition的,圖像在瀏覽器內(nèi)打卡
            byte[] buffer = new byte[1024];
            FileInputStream fis = null;
            BufferedInputStream bis = null;
            // if you're using Java 7, use try-with-resources
            try {
                fis = new FileInputStream(file);
                bis = new BufferedInputStream(fis);
                OutputStream os = response.getOutputStream();
                int i = bis.read(buffer);
                while (i != -1) {
                    os.write(buffer, 0, i);
                    i = bis.read(buffer);
                }
            } catch (IOException ex) {
                // do something here
            } finally {
                if (bis != null) {
                    try {
                        bis.close();
                    } catch (IOException e) {                        
                    }
                }
                if (fis != null) {
                    try {
                        fis.close();
                    } catch (IOException e) {                        
                    }
                }
            }
        }
    }
}
}

html文件

結(jié)果

直接請求html文件,html里面的img標簽的src記錄了請求地址,發(fā)出請求,后臺控制,將圖片的內(nèi)容輸出到瀏覽器上

以上就是動力節(jié)點小編介紹的"使用SpringMVC文件下載功能",希望對大家有幫助,想了解更多可查看SpringMVC教程。動力節(jié)點在線學(xué)習(xí)教程,針對沒有任何Java基礎(chǔ)的讀者學(xué)習(xí),讓你從入門到精通,主要介紹了一些Java基礎(chǔ)的核心知識,讓同學(xué)們更好更方便的學(xué)習(xí)和了解Java編程,感興趣的同學(xué)可以關(guān)注一下。

提交申請后,顧問老師會電話與您溝通安排學(xué)習(xí)

免費課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 色在线免费 | 日韩视频二区 | 男女www视频在线看网站 | 一级黄色在线视频 | 欧洲亚洲日本 | 91精品观看91久久久久久 | 看亚洲色图 | 五月综合激情视频在线观看 | 国产日产亚洲欧美综合另类 | 夜夜操狠狠操 | 久久免费观看视频 | 日日摸夜夜摸人人嗷嗷叫 | 日韩色图在线观看 | 视频一区二区在线播放 | 亚洲色图在线观看 | 荡女淫春未删减在线观看 | 日韩一级黄色毛片 | 高h文bl| 午夜在线视频 | 午夜久草| 日日夜夜天天干干 | 日韩中文字幕不卡 | 婷婷开心激情网 | 日韩在线你懂的 | 天天摸天天操 | 精品国产欧美一区二区三区成人 | 欧美高清欧美videosex | 日本黄色录像视频 | 免费观看黄a一级视频日本 免费观看黄a一级视频 | 天堂中文资源在线8 | 国产色婷婷精品综合在线手机播放 | 成人免费看片视频色多多 | 九九热在线视频播放 | 在线视频一二三区 | 欧美日韩一二三四区 | 亚洲综合日韩精品欧美综合区 | 日韩在线 在线播放 | 欧美亚洲国产成人精品 | 欧美黄色免费网站 | 婷婷在线视频观看 | 成年18网站免费视频网站 |