作为一项学习练习,我修改了BalusC编写的一系列Java servlet,用于存储上传到mysql数据库中的图像列表。应用程序正常工作,并以html中静态从数据库中读取的顺序显示图像列表。但是,我正在尝试调整html以幻灯片形式动态显示这些内容。我在互联网上找到了几个例子,但它们似乎都在浏览器代码中硬编码图像的名称。我正在寻找一种方法将从数据库查询中读取的图像传输到客户端中的幻灯片。
在研究了几个例子后,似乎使用javascript是最常用的方法,但是我找不到一个动态的例子,这是我的尝试(我在java servlet中使用嵌入了html的javascript)它没有做更多的事情,打印出页面上连续列表中的图像标题(但没有图像):
try {
Class.forName(driver);
Connection con = DriverManager.getConnection(url+dbName, userName, password);
PreparedStatement ps = con.prepareStatement("select * from photos");
ResultSet rs = ps.executeQuery();
out.println("<h1>Photos</h1>");
while ( rs.next()) {
out.println("<h4>" + rs.getString("title") + "</h4>");
out.println("<script type=\"text/javascript\">");
out.println(" function clearScreen(){");
out.println(" document.image.src=displayphoto?id=\" + rs.getString(\"id\")\"");
out.println(" document.body.innerHTML=\"\";");
out.println(" setTimeout('clearScreen()','5000');}");
out.println("</script>");
}
con.close();
}
有关更好的方法的任何指针或建议,即使纯粹使用Java servlet,也会非常感激。
非常感谢
阿拉斯泰尔
答案 0 :(得分:1)
此代码生成一个<script>
块,为表中找到的每张照片定义相同的clearScreen
函数(但在每次迭代时使用不同的照片ID)。
目前还不是很清楚你要做什么。要进行幻灯片放映,您必须迭代图片ID列表。您可以存储此ID列表
如果你的目标是实现第一个解决方案,那真的不难。以下是在JavaScript中声明三个ID(id1,id2和id3)的数组:
var ids = ['id1', 'id2', 'id3'];
因此,您所要做的就是生成上面的字符串frm List<String>
,其中包含"id1"
,"id2"
和"id3"
。一个简单的循环可以做到:
StringBuilder jsArrayDeclaration = new StringBuilder();
jsArrayDeclaration.append("var ids = [");
boolean first = true;
for (String id : listOfIds) {
if (!first) {
jsArrayDeclaration.append(", ");
}
first = false;
jsArrayDeclaration.append("'");
jsArrayDeclaration.append(id);
jsArrayDeclaration.append("'");
}
jsArrayDeclaration.append("];");