java - 从数据库动态显示多个图像到jsp?

标签 java mysql jsp jakarta-ee servlets

你好堆栈溢出。

我被困在项目的某个部分,正在寻求一些建议。

我在 jsp 中有一个照片库页面,该页面设置为根据用户的兴趣显示相册的所有列表和其中的照片。当前已设置,因此无论选择了“照片”选项,都将重定向到另一个 jsp,并在该特定页面上进行输出流解码。但是,为了查看另一张照片或图像,用户必须“返回”到照片库页面并为新照片选择另一张图像。

有没有办法设置画廊页面,以便所有照片都可以动态显示在页面上,或者有没有办法在 display.jsp 页面上设置一些方向,以便用户只需单击一张照片下一个????

代码如下。

<div id="subSlideshow">
                <table>
                    <tr>
                        <td id="subpageSlideshow">
                            <table>
                                <tr>
                                    <td>
                                        <h1 id="subpageTitle">Galleries</h1>
                                            <form action="gallery" method="get">
                                                <%try{
                                                  Connection conn = GalleriesConnection.connect();
                                                  Statement st = conn.createStatement();
                                                  String sql = "SHOW TABLES IN GALLERIES;";
                                                  ResultSet rs = st.executeQuery(sql);
                                                  while(rs.next()){%>
                                                  <input class="wineDiv" type="submit" name="gallery" value="<%=rs.getString(1).toLowerCase() %>" />
                                                  <%} 
                                                  rs.close();
                                                  st.close();
                                                  GalleriesConnection.close(conn);
                                                  } 

                                                catch(Exception e){

                                                  }%>
                                            </form>
                                        <td>
                                    </tr>
                                <tr>                                    
                                    <td>
                                        <h1 id="subpageTitle">Images</h1>
                                        <form  action="pictures/display.jsp">
                                        <%try{
                                          Connection conn = GalleriesConnection.connect();
                                          Statement st = conn.createStatement();
                                          String sql = "SELECT PHOTO_NAME FROM "+gallery+" ;";
                                          ResultSet rs = st.executeQuery(sql);

                                          while(rs.next()){   
                                          String photoName = rs.getString(1);
                                          %>
                                            <input class="wineDiv" type="submit" name="photo" value="<%=photoName %>" />  
                                        <%   }
                                          rs.close();
                                          st.close();
                                          GalleriesConnection.close(conn);

                                        } catch(Exception e){                                               
                                        }%>
                                        </form>
                                    </td>
                                </tr>
                            </table>    


                        </td>
                        <td id="subpageInfo">
                            <h1 id="subpageTitle">Click on an image to see a larger view</h1>
                            <div id="slider">
                             <script src ="js/slides.js" type="text/javascript"></script>
                                <img id="1" src="pictures/winery_image1.jpg"  />
                                <img id="2" src="pictures/winery_image2.jpg" />
                                <img id="3" src="pictures/winery_image3.jpg" />
                                <img id="4" src="pictures/winery_image4.jpg" />
                                <img id="5" src="pictures/winery_image5.jpg" />
                            </div>   

                            <input class="previous" onclick="prev(); return false;" value="Previous Image" />
                            <input class="next" onclick="next(); return false;" value="Next Image" />                                               
                        </td>
                    </tr>
                </table>
            </div> 

页面上的所有操作都在这个 div 中。第一个连接命令检索数据库中的所有表名,并在提交按钮上吐出表名。此外,当前在 subpageInfo 中列出的图像是我希望嵌入数据库图像的所需位置之一。 They make a nice little fadeOut() fadeIn() transition when the next and previous buttons are selected.

第二个连接获取所有照片的名称,并将它们也以提交的形式放入。选定的照片名称将发送到此页面:

<%@ page import="java.sql.*"%>
<%@ page import="java.io.*"%>

<% 
 byte[] imgData = null;
%>
<jsp:scriptlet>
String photo = request.getParameter("photo");
</jsp:scriptlet>
<%
try {
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:8889/GALLERIES","myusername","mypassword");
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT PHOTO FROM PHOTOS WHERE PHOTO_NAME = '"+photo+"';");

while (rs.next()) {
Blob image = rs.getBlob(1);
imgData = image.getBytes(1,(int)image.length());
}  
// display the image
response.setContentType("image/png");
OutputStream o = response.getOutputStream();
o.write(imgData);
o.flush();
o.close();

rs.close();
stmt.close();
con.close();
} catch (Exception e) {
out.println("Unable To Display image");
out.println("Image Display Error=" + e.getMessage());
return;
} 
%>

这个程序完成了它被要求做的所有事情,但我在让它变得更加用户友好方面遇到了一些困难。所需的效果是将图像嵌入到 subpageInfo div 中,或者在 display.jsp 页面上设置一些指令以从一个图像转到下一个图像。

一如既往,我们非常感谢您的帮助。

最佳答案

如果你想展示一组图片,我会选择:

http://lokeshdhakar.com/projects/lightbox2/

或者,如果您想自己做所有事情,请只使用一个页面 - 使用您提到的选择表单,并在求和后重新加载同一页面,其中包括解码图像。您可以设置一个 javascript,以便每次用户选择另一张图片时都会提交表单,这样用户就不必单击提交。

但我建议重新考虑整个事情。你的目标是什么?这种方法是最好的吗?我通常对技术问题太过深入以至于看不到用户期望的解决方案。这就是为什么我请随机的人帮助我。

还有 - 小脚本?呃!使用 JSTL 并在 Controller 中准备所有内容。或者使用 Primefaces、JSF、托管 beans 和所有为此目的而制作的东西。

关于java - 从数据库动态显示多个图像到jsp?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17821090/

相关文章:

java - 使用 Criteria 进行算术运算

java - 在 JSP 页面上打印控制台输出

javascript - 使用 JSP 和 Ajax 加载数据的最佳实践是什么?

java - 为什么 Java 库更多地使用常量整数而不是枚举?

java - 将 Selenium WebDriver 与 Tor 一起使用

java - 在我的例子中,启动服务(按类)返回 null

mysql - 如何优化此 MySql 查询 - 连接 3 个表?

html - 如何使用 node.js(搜索)并将特定数据(按 id)加载到动态创建的行中

php - 从数据库中检索前 10 个

java - 在 Struts 2 操作名称中使用破折号