Java 在JSP中加载图像需要很多时间
我有一个场景,通过循环从Oracle数据库获取多个图像。但是获取图像并将其显示在浏览器上需要花费大量时间。 通过这段代码,我用一些参数调用我的方法Java 在JSP中加载图像需要很多时间,java,jsp,jdbc,struts2,batch-processing,Java,Jsp,Jdbc,Struts2,Batch Processing,我有一个场景,通过循环从Oracle数据库获取多个图像。但是获取图像并将其显示在浏览器上需要花费大量时间。 通过这段代码,我用一些参数调用我的方法 for(Object[] obj: memberDetails) { System.out.println("String.valueOf(obj[0])"+String.valueOf(obj[0])); try{ memberImage=dtSrvc.getQueImageForQC(Id,String.valu
for(Object[] obj: memberDetails)
{
System.out.println("String.valueOf(obj[0])"+String.valueOf(obj[0]));
try{
memberImage=dtSrvc.getQueImageForQC(Id,String.valueOf(obj[0]));
}
catch(Exception e)
{}
map.put("memImage"+count, memberImage);
key.add("memImage"+count);
hmap.put("memImage"+count, memberImage);
count++;
}
这是我的查询,通过它我可以获取图像
ps = conn.prepareStatement("select photo from member_photo where ID='"
+ Id + "' and que_id=" + QueId);
请让我知道如何加快这个过程。
如果网络速度较慢,我无法获取所有图像。我的应用程序目前被许多人使用。我的建议是先获取图像,并将它们作为纯文件(temp)保存在应用程序的可访问公共文件夹中,然后使用
img
标记使用简单图像资源简单地指出它们。过程如下。
1.
查询图像并将其保存在/a_public_文件夹/images/…
下,每个图像将命名为1.jpeg
,2.jpeg
,其中1和2是ID(唯一)。2.
使用简单的上下文(如list\u id:list
)保存从数据库检索到的id
3.
您的最终servlet如下所示for(long idx:list_id){
out.print("<img src=\"/a_public_folder/images/"+idx+".jpeg\"/>");
}
for(长idx:list\u id){
输出。打印(“”);
}
4.
您还可以对/a_public_文件夹/images/*
路径应用过滤器,以便只允许有权查看内容/图像的用户5.
使用会话侦听器删除特定用户会话的关联(获取)映像,或者使用守护进程线程清理目录(映像不再具有链接)间隔。但我建议将图像从数据库提取到简单的纯文件中,并将图像路径保留到数据库中。问题在于,您使用单独的查询从数据库中获取每个图像。这会增加网络开销。您可以尝试这里描述的许多解决方案,将代码更改为执行一个查询而不是多个查询。看看怎么做
如果
id
是表中的主键,您不需要queu id
。1)我真的怀疑这是否是您的瓶颈2)不要在查询中使用任意字符串-而是使用参数(其中id=?和queu id=?
+ps.setString(1,id);ps.setString(2,queId);
)这解决了我的问题吗?不要使用javascript来显示图像,javascript非常慢。不,我没有使用javascript。为什么在查询中需要第二个参数?ID
不是主键吗?
ps = conn.prepareStatement("select photo from member_photo where ID in (" + inClause.toString() + ')');