jsp首页自动加载数据,数据库二进制图片数据输出到jsp页面

J2EE 码拜 9年前 (2015-11-26) 938次浏览
这是jsp页面代码
<body >
<div>
<h4 align=”center”>全部商品</h4>
<s:iterator value=”#request.usedgoods” id=”usedgood”>
<div class=”xh5″>
<img height=”150″ width=”120″ src=”<s:property value=”#usedgood.picture”/>”/><br/>
<s:property value=”#usedgood.goodsname”/><br/>
价格:<s:property value=”#usedgood.price”/><br/>
<form action=”addshopping.action” method=”post”>
<input type=”image” name=”submit” src=”/secondhand/picture/car.jpg”/>
</form>
</div>
</s:iterator>
</div>
</s:action>
</body>
这是action的代码
public String execute() throws Exception{
List usedgoods=loadService.getUsedgood();
Map request=(Map)ActionContext.getContext().get(“request”);
request.put(“usedgoods”, usedgoods);
return SUCCESS;
}
这是dao的代码
package org.dao;
import java.util.List;
import org.model.Usedgood;
public interface LoadDao {
public List getUsedgood();
}
这是daoimp的代码
package org.dao.imp;
import java.util.List;
import org.dao.LoadDao;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.model.Usedgood;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
public class LoadDaoImp extends HibernateDaoSupport implements LoadDao{
public List getUsedgood(){
Session session=this.getHibernateTemplate().getSessionFactory().openSession();
Query query=session.createQuery(“from Usedgood”);
query.setFirstResult(0);
query.setMaxResults(5);
List usedgood=query.list();
session.close();
return usedgood;
}
}
这是service的代码
package org.service;
import java.util.List;
import org.model.Usedgood;
public interface LoadService {
public List getUsedgood();
}
这是serviceImp的代码
package org.service.imp;
import java.util.List;
import org.dao.LoadDao;
import org.service.LoadService;
import org.model.Usedgood;
public class LoadServiceManage implements LoadService{
protected LoadDao loadDao;
public void setLoadDao(LoadDao loadDao){
this.loadDao=loadDao;
}
public List getUsedgood(){
return loadDao.getUsedgood();
}
}
struts.xml的代码
<action name=”loadAction” class=”loadAction”>
<result name=”success”>/index.jsp</result>
<result name=”error”>/index.jsp</result>
</action>
applicationcontext.xml的代码
<bean id=”loadAction” class=”org.action.LoadAction”>
<property name=”loadService”>
<ref bean=”loadService” />
</property>
</bean>
<bean id=”loadDao” class=”org.dao.imp.LoadDaoImp”>
<property name=”sessionFactory”>
<ref bean=”sessionFactory” />
</property>
</bean>
<bean id=”loadService” class=”org.service.imp.LoadServiceManage”>
<property name=”loadDao”>
<ref bean=”loadDao” />
</property>
</bean>
首页自动加载本人按照网上一些人说的建立一个临时的页面temp.jsp。在该页面中的head中也添加了这句:
<html>
<head>
<meta http-equiv=’refresh’ content=’0;url=loadAction.action’>
</head>
<body>
</body>
</html>
然后在web.xml文件中也配置好了,如下:
<welcome-file-list>
<welcome-file>temp.jsp</welcome-file>
</welcome-file-list>
分虽然不多,请大家帮看一下本人的代码,看看哪里出错了,特别是二进制图片数据输出那里,本人的图片数据是二进制的并且没办法改的了,请高手说得详细一点,不胜感激!(ps:假如解决不了那本人就死翘翘了)
解决方案:35分
<img height=”150″ width=”120″ src=”<s:property value=”#usedgood.picture”/>”/><br/>
改为<img height=”150″ width=”120″ src=”XXXX.action?id=${usedgood.picture}”/><br/>
在XXXX.action中这样写:

              if (id!= null) {
			byte[] content = id;
			if (content != null) {
				response.setContentType("image/bmp");
			//	response.setContentType("image/jpeg");
		                out.write(content);
			}
		}
                return null;

思路大体是这样的,前提是你的图片是二进制的

解决方案:5分
这样应该可以,要不你就把图片保存到一个临时的路径,然后<img height=”150″ width=”120″ src=”XXXX.action?id=${usedgood.picture}”/>
这里的src使用你图片存放的路径位置就可以了。
解决方案:5分
最好是保存为临时文件,这样改动少一些,否则需要修改action中添加方法,而且还要查询2次数据库
解决方案:30分
String fullfilename = “c:\img\icon.jpg”;
byte[] blob = new byte[1024];
int byteread = 0;
FileInputStream in = new FileInputStream(fullfilename);
response.reset();
response.setContentType(“image/jpg”);
OutputStream toClient = response.getOutputStream();
// 读入多个字节到字节数组中,byteread为一次读入的字节数
while ((byteread = in.read(blob)) != -1) {
toClient.write(blob, 0, byteread);
}
in.close();
toClient.flush();
toClient.close();
response.flushBuffer();
解决方案:10分
将二进制图片转为base64编码,直接输出到html标签中就OK了。
解决方案:5分
遍历
解决方案:10分
response.sendRedirect(“loadActon.action”);
这句要改成request.getRequestDispatcher(“loadActon.action”).forward(request, response);

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明jsp首页自动加载数据,数据库二进制图片数据输出到jsp页面
喜欢 (0)
[1034331897@qq.com]
分享 (0)