今回は、「サーブレットを使った添付ファイルの扱い(1)―ファイルのダウンロード―」です。
今回から、添付ファイルの扱いについて見ていきます。
まずは、基本的なファイルのダウンロード方法について、見てみましょう。
■動画はこちら
■動画で使用しているソースコード
SQLのWHEREの条件にNULLを使う(IS NULLの場合)
サーブレット(Sv11.java)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | package yurufuwa.prog.sample; import java.io.BufferedWriter; import java.io.IOException; import java.io.OutputStreamWriter; import jakarta.servlet.ServletException; import jakarta.servlet.ServletOutputStream; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; public class Sv11 extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //CSVのMIMEタイプを設定 resp.setContentType("text/csv"); //ダウンロードの指定 resp.setHeader("Content-Disposition","attachment"); //CSVデータを出力ストリームに書き込み try(ServletOutputStream sos = resp.getOutputStream(); OutputStreamWriter osw = new OutputStreamWriter(sos,"UTF-8"); BufferedWriter bw = new BufferedWriter(osw);){ bw.write("01,北海道"); bw.newLine(); bw.write("02,青森県"); bw.newLine(); bw.write("03,岩手県"); bw.newLine(); bw.flush(); } } } |
サーブレット(Sv12.java)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | package yurufuwa.prog.sample; import java.io.BufferedWriter; import java.io.IOException; import java.io.OutputStreamWriter; import java.net.URLEncoder; import jakarta.servlet.ServletException; import jakarta.servlet.ServletOutputStream; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; public class Sv12 extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //CSVのMIMEタイプを設定 resp.setContentType("text/csv"); //ダウンロードの指定(ファイル名付き) resp.setHeader( "Content-Disposition", "attachment;filename=\"" + URLEncoder.encode("都道府県一覧.csv", "UTF-8") + "\"" ); //CSVデータを出力ストリームに書き込み try(ServletOutputStream sos = resp.getOutputStream(); OutputStreamWriter osw = new OutputStreamWriter(sos,"UTF-8"); BufferedWriter bw = new BufferedWriter(osw);){ bw.write("01,北海道"); bw.newLine(); bw.write("02,青森県"); bw.newLine(); bw.write("03,岩手県"); bw.newLine(); bw.flush(); } } } |
web.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="https://jakarta.ee/xml/ns/jakartaee" xmlns:web="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd" id="WebApp_ID" version="5.0"> <display-name>testWeb</display-name> <servlet> <description></description> <display-name>Sv11</display-name> <servlet-name>Sv11</servlet-name> <servlet-class>yurufuwa.prog.sample.Sv11</servlet-class> </servlet> <servlet> <description></description> <display-name>Sv12</display-name> <servlet-name>Sv12</servlet-name> <servlet-class>yurufuwa.prog.sample.Sv12</servlet-class> </servlet> <servlet-mapping> <servlet-name>Sv11</servlet-name> <url-pattern>/sv11</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>Sv12</servlet-name> <url-pattern>/sv12</url-pattern> </servlet-mapping> </web-app> |