最近需要在一个jsp页面上面遍历出多个图片,平时做的比较多的是string integer等类型的遍历,图片是二进制的与原来常用的类型有很大的不同。

BBFSeal.java

public class BBFSeal {

private Blob content;

private String id;

private String name;

private BBFUseruser;

private Blob p_w_picpathSeal;

public BBFSeal()

{

}

public BBFSeal(Blob  p_w_picpathSeal, String id) {

super();

this.p_w_picpathSeal = p_w_picpathSeal;

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public void setContent(Blob content) {

this.content = content;

}

public Blob getContent() {

return content;

}

public void setId(String id) {

this.id = id;

}

public String getId() {

return id;

}


public void setUser(BBFUser user) {

this.user = user;

}

public BBFUser getUser() {

return user;

}

public Blob getImageSeal() {

return p_w_picpathSeal;

}

public void setImageSeal(Blob p_w_picpathSeal) {

this.p_w_picpathSeal = p_w_picpathSeal;

}

}

action中的主要代码

/**

* 根据用户id 找到所有的印章

*/

public String showSealList() {

HttpServletRequest request = ServletActionContext.getRequest();

BBFUser user = (BBFUser) request.getSession().getAttribute("user");

String uid = user.getId();

this.bbfSeals = this.manage.listSeals(uid);

return "toSealList";

}


/**

* 显示照片信息

*/

public String showSeal() {

BBFSeal seal = manage.loadSeal(id);

// 实例化字节数组流,存储表中的照片字节

inputStream = new ByteArrayInputStream(BlobToBinaryUtils

.blobToBinary(seal.getImageSeal()));

return "success";

}

struts.xml

<action name="sealselect" method="showSealList"

class="sealSelect">

<result name="toSealList">toseal.jsp</result>

</action>

<action name="showSeal" method="showSeal"

class="sealSelect">

<result name="success" type="stream">

<!-- type="stream"用于输出二进制流在文件的下载中会用到

<param name="contentType"></param>

--><param name="bufferSize">1024</param>

</result>

</action>

toseal.jsp 核心代码

</tr>

<s:iterator value="bbfSeals">


 <tr >

   <td><a  data-role="button" data-mini="true"  value='id'/>');">

      <!-- 显示照片信息, src 指定action ,并传入 ID  -->

<img src="showSeal.action?id=<s:property value='id'/>"

</a></td>

 </tr>

</s:iterator>

<tr>


public class BlobToBinaryUtils {

public static byte[] blobToBinary(Blob blob) {

InputStream is = null;

byte[] b = null;

try {

is = blob.getBinaryStream();

b = new byte[(int) blob.length()];

is.read(b);

return b;

} catch (Exception e) {

e.printStackTrace();

} finally {

try {

is.close();

is = null;

} catch (Exception e) {

e.printStackTrace();

}

}

return b;

}

}