jsp用流从数据库读取图片, 如果有图片就显示,没有则显示默认的图片
[size=medium]数据库中存放的头像是byte[] 字节的,在jsp页面上根据用户的id用流从数据库中读取图片。但是如果用户没有头像的话,那么在页面上显示的就是一个图片的小白框框,难看死了,所以如果用户没有头像的话,就给用户一个默认的头像。
在User类中:
Java代码
1. private byte img[];
在UserAction类中:
Java代码
1. ClientUser user = new ClientUser();
2. user=UserService.getUserByUserId(sqlSession,user); request.getSession().setAttribute("LoginUserImg", user.getImg().length);
3. //在这里需要用byte[]对象的length属性判断是否存放了图片,如果length为0,那么就没有图片,反之则有。
在jsp页面中:
Java代码
1. <c:if test="${LoginUserImg==0 }">
2. <img src="${pageContext.request.contextPath }/images/head.jpg"
3. alt=" " width="100" height="118" align="middle" />
4. </c:if>
5. <c:if test="${LoginUserImg!=0 }">
6. <img
7. src="userImg.jsp?id=${id}"
8. alt="${id}"
9. width="100" height="118" align="middle">
10. </c:if>
userImg.jsp:
Java代码
1. <%@page contentType="image/jpeg; charset=utf8"%>
2. <%@page import="java.io.OutputStream"%>
3. <%
4. String id = request.getParameter("id");
5. Boolean ret = true;
6. id = id == null ? "" : id.trim();
7. userId = userId == null ? "" : userId.trim();
8. OutputStream os = response.getOutputStream();
9. if (!id.isEmpty()) {
10.
11. ret =UserService.getUserImgById(
12. id, os);
13. }
14. os.flush();
15. os.close();
16. os = null;
17. response.flushBuffer();//下面这三句是一定要加上的,否则就会报错。
18. out.clear();
19. out = pageContext.pushBody();
20. %>
摘自 0609xiaohua