Mendapatkan semula dan memaparkan imej daripada pangkalan data dalam halaman JSP: panduan langkah demi langkah
P粉191610580
P粉191610580 2023-08-27 21:30:22
0
1
542

Bagaimana untuk mendapatkan dan memaparkan imej daripada pangkalan data dalam halaman JSP?

P粉191610580
P粉191610580

membalas semua (1)
P粉251903163

Mari lihat apa yang berlaku langkah demi langkah:

  • JSP pada asasnya ialah teknologi paparan yang direka untuk menjana output HTML.
  • Untuk memaparkan imej dalam format HTML, anda memerlukan elemen HTML.
  • Untuk meletakkannya imej, anda perlu menentukan atributsrcnya.
  • Atribut
  • src属性需要指向有效的http://perlu menghala ke URLhttp://yang sah, jadi bukan laluan sistem fail cakera tempatan file://
  • kerana ini tidak akan berfungsi apabila pelayan dan klien berjalan pada mesin yang berbeza secara fizikal akan bekerja.
  • http://example.com/context/images/foo.png)或作为请求参数(例如http://example.com/context/images?id=1URL imej perlu memasukkan pengecam imej dalam laluan permintaan (cth.
  • http://example.com/context/images/foo.png) atau sebagai parameter permintaan (cth. http:// contoh. com/context/images?id=1).
  • /images/*Dalam dunia JSP/Servlet, anda boleh meminta servlet mendengar corak URL tertentu, seperti
  • /images/*, supaya anda boleh melaksanakan beberapa kod Java pada URL tertentu.
  • byte[]InputStream的形式获取,JDBC API提供ResultSet#getBytes()ResultSet#getBinaryStream()为此,JPA API提供@LobImej ialah data binari yang boleh diperoleh daripada pangkalan data sebagaibait[] atau 李>InputStream,JDBC API
  • menyediakanbyte[]InputStream写入响应的OutputStreamResultSet#getBytes()danResultSet#getBinaryStream() Untuk melakukan ini,JPA API
  • Disediakan
  • @Lobuntuk ini.Content-Type响应头也需要设置。您可以通过ServletContext#getMimeType()基于图像文件扩展名,您可以通过web.xml 中的 扩展和/或覆盖该扩展名
  • Dalam Servlet, anda cuma tulis
bait[] ini atau

InputStream pada responsOutputStream (cara biasaJava IO

.

Pelanggan perlu diarahkan untuk mengendalikan data sebagai imej, jadi sekurang-kurangnya pengepala responssrcJenis Kandungan perlu ditetapkan juga. Anda boleh mendapatkan jenis yang betul melalui

ServletContext#getMimeType() Berdasarkan sambungan fail imej, anda boleh melanjutkan dan/atau mengatasi sambungan itu melalui dalam web.xml. Begitulah sepatutnya. Ia cukup banyak menulis kod itu sendiri. Mari kita mulakan dengan HTML (dalam JSP):
  
Jika perlu, anda juga boleh menggunakan tetapan dinamik EL ="https://stackoverflow.com/tags/jstl/info">JSTL:
  

Kemudian tentukan/buatservletyang mendengar pada/images/*, contoh berikut menggunakan JDBC biasa untuk melakukan kerja:

@WebServlet("/images/*") public class ImageServlet extends HttpServlet { // content=blob, name=varchar(255) UNIQUE. private static final String SQL_FIND = "SELECT content FROM Image WHERE name = ?"; @Resource(name="jdbc/yourDB") // For Tomcat, define as  in context.xml and declare as  in web.xml. private DataSource dataSource; @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String imageName = request.getPathInfo().substring(1); // Returns "foo.png". try (Connection connection = dataSource.getConnection(); PreparedStatement statement = connection.prepareStatement(SQL_FIND)) { statement.setString(1, imageName); try (ResultSet resultSet = statement.executeQuery()) { if (resultSet.next()) { byte[] content = resultSet.getBytes("content"); response.setContentType(getServletContext().getMimeType(imageName)); response.setContentLength(content.length); response.getOutputStream().write(content); } else { response.sendError(HttpServletResponse.SC_NOT_FOUND); // 404. } } } catch (SQLException e) { throw new ServletException("Something failed at SQL/DB level.", e); } } }

Itu sahaja. Jika anda bimbang tentang HEAD dan pengepala cache dan membalas permintaan ini dengan betul, gunakanTemplat Abstrak untuk servlet Sumber Statikini.

Lihat juga:

    Muat turun terkini
    Lagi>
    kesan web
    Kod sumber laman web
    Bahan laman web
    Templat hujung hadapan
    Tentang kita Penafian Sitemap
    Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!