求一小例子,大家帮帮忙了

linjky 2005-07-11 12:10:34
求一struts模式的小例子,功能是可以将一个图片保存到数据库的image字段中,然后再从数据库中取出,直接在JSP(用标签的)页面显示出来,须要能直接运行的,如果分不够我可以再加一些,可以发我的邮箱ljky@sina.com,也可以在这里跟贴。
已经在这里关于这个问题发过贴了,还是没有解决,大家帮帮忙了
...全文
342 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaohuozhi 2005-07-16
  • 打赏
  • 举报
回复
呵呵。
bs101211 2005-07-16
  • 打赏
  • 举报
回复
哎,也没有个答案
cnyxlxw 2005-07-14
  • 打赏
  • 举报
回复
mark
linjky 2005-07-14
  • 打赏
  • 举报
回复
我知道和struts没关系。我就是想把他用标签显示出来,总不能为了他我把其它的东西用jsp+bean从写一遍吧
huangdeji 2005-07-14
  • 打赏
  • 举报
回复
跟struts没关系
linjky 2005-07-14
  • 打赏
  • 举报
回复
那怎么改成struts的形式呀,不知道在JSP页面怎么用标签写
linjky 2005-07-14
  • 打赏
  • 举报
回复
谢谢你又给我发了一回
但是
<%@ taglib uri="struts-logic" prefix="logic" %>
<logic:iterate id="element1" name="element" scope="request">
<html:img page="/showImg.do" paramId="img" paramName="element1" border="1" width="108" height="26" scope="request"/>
</logic:iterate>
里的paramId="img" paramName="element1"都是什么,element1是Bean名还是什么,我这么写过,调不通,
还有,如何你能帮我改成struts的形式的小例子可以帮我发到我的邮箱里
laughsmile 2005-07-14
  • 打赏
  • 举报
回复
为什么不用在数据库中存储图片路径的方法.
1.在BusinessBean中读出数据库中的路径
ArrayList arrImgPath = new ArrayList();
while(rs.next()){
arrImgPath.add(rs.getString("Img_Path"));
}
request.setAttribute("imgpath",arrImgPath);
2.在jsp中调用BusinessBean showImg.显示
<%@ taglib uri="struts-logic" prefix="logic" %>
<logic:iterate id="element1" name="element" scope="request">
<html:img page="/showImg.do" paramId="img" paramName="element1" border="1" width="108" height="26" scope="request"/>
</logic:iterate>
3.BusinessBean showImg.java:
String imgPath=request.getParameter("img");
file = new File(imgPath);
if (!file.isDirectory()&& file.exists()){
length = (int)file.length();
}
res.setContentType("image/jpg");//假设是jpg图
res.setHeader("Content-Disposition","inline");
res.setContentLength(length);
if (length > 0){
int bufferSize = 32768;
InputStream in = new FileInputStream(fullpath);
ServletOutputStream outfile = res.getOutputStream();
int chunkLen = bufferSize;
if(chunkLen > length && length > 0)
chunkLen = length;
byte ioBuf[] = new byte[chunkLen];
do{
chunkLen = in.read(ioBuf);
if(chunkLen <= 0)
break;
outfile.write(ioBuf, 0, chunkLen);
length -= chunkLen;
} while(length != 0);
in.close();
outfile.flush();
outfile.close();
}
laughsmile 2005-07-14
  • 打赏
  • 举报
回复
从数据库读image字段
try{
//....
response.setContentType("image/jpeg");
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select * from image where id = " + id);
if(rs.next()){
InputStream in = rs.getBinaryStream("imageField");
OutputStream out = response.getOutputStream();
byte[] bytes = new byte[1024];
while(in.read(bytes,0,1024) != -1) {
out.write(bytes);
}
}
}
catch(Exception e){System.out.println(e);}
finally {
in.close();
out.flush();
conn.close();
}
fzlotuscn 2005-07-13
  • 打赏
  • 举报
回复
以上代码供参考:


上传图片
第一步:建立数据库
create table test_img(id number(4),name varchar(20),img long raw);
第二步:(NewImg.html)
<html><head><title>添加图片</title></head>
<body>
添加图片<br>
<form method="post" action="insertNews.jsp">
图像ID:<input name="id" size="10">
<br>
选择图像:<input type="file" name="image">
<br>
<input type="submit" value="上传" name="submit" size="25">
<input type="reset" value="清除" name="clear" size="25">
<br>
</form>
</body></html>
第三步:插入数据库(InsertImg.jsp)
<%@ page language="java"%>
<%@ page contentType="text/html;charset=gb2312" %>
<%@ page import="java.util.*" %>
<%@ page import="java.sql.*"%>
<%@ page import="java.text.*"%>
<%@ page import="java.io.*"%>
<%
Class.forName("oracle.jdbc.driver.OracleDriver");
String url="jdbc:oracle:thin:@lubin:1521:b2bdb";
Connection con=DriverManager.getConnection(url,"demo","demo");
//插入数据库
String sql="insert into test_img values (?,?,?)";
//获取传值ID
String id=request.getParameter("id");
//获取image的路径
String kk=request.getParameter("image");
//转换成file格式
File filename=new File(kk);
//将文件的长度读出,并转换成Long型
long l1=filename.length();
int l2=(int)l1;
//以流的格式赋值
FileInputStream fis=new FileInputStream(filename);
PreparedStatement ps =con.prepareStatement(sql);
ps.setString(1,id);
ps.setString(2,filename.getName());
ps.setBinaryStream(3,fis,l2);
//ps.setBinaryStream(3,fis,fis.available());
ps.executeUpdate();
//ps.execute();
ps.close();
fis.close();
out.println("ok!!!");
%>
第四步:显示图片(ShowImg.jsp)
<%@ page language="java" import="java.sql.*"%>
<%@ page import="java.io.*"%>
<%@ page contentType="text/html;charset=gb2312"%>
<%
Class.forName("oracle.jdbc.driver.OracleDriver");
String url="jdbc:oracle:thin:@lubin:1521:b2bdb";
String image_id = (String) request.getParameter("ID");
Connection con=DriverManager.getConnection(url,"demo","demo");
PreparedStatement sql=con.prepareStatement("select * from test_img WHERE id = " + image_id);
ResultSet rs = sql.executeQuery();
rs.next();
//输入img字段内容到in
InputStream in = rs.getBinaryStream("img");
//以下可是任何处理,比如向页面输出:
response.reset();
//此处的image/jpeg似乎与显示的图片格式无关
//因为我显示jsp和gif都没有错误。icech不是很懂,都是参考别人的。
response.setContentType("image/jpeg");
byte[] b = new byte[1024];
int len;
while((len=in.read(b)) >0)
response.getOutputStream().write(b,0,len);
in.close();
rs.close();
%>

1367888 2005-07-11
  • 打赏
  • 举报
回复
接分
  • 打赏
  • 举报
回复
沙发
congliu 2005-07-11
  • 打赏
  • 举报
回复
代码太长,建议楼主看struts in action一书,里面有代码
wangyhlj 2005-07-11
  • 打赏
  • 举报
回复
知道怎么写,但时间写,也没有现有的代码
sd_lichangyou 2005-07-11
  • 打赏
  • 举报
回复
不会做,学习,纯顶
llsljh 2005-07-11
  • 打赏
  • 举报
回复
学习关注 心有余 力不足
v38 2005-07-11
  • 打赏
  • 举报
回复
JSP+servlet+javaBean有了,改装成STRUTS很容易的啊~呵呵
linjky 2005-07-11
  • 打赏
  • 举报
回复
MSSQL的库,image字段,还是不要用链接,要从直接从内存里输出来
cpl3113 2005-07-11
  • 打赏
  • 举报
回复
什么数据库?什么类型的字段?
long raw 简单点,blob可麻烦了。
显示我用的是超链接。用serlet来显示
linjky 2005-07-11
  • 打赏
  • 举报
回复
我知道,但那我也不会,还有我用的是struts,总不能为了这一个功能就全部直接改成JSP+servlet+javaBean吧
加载更多回复(3)

81,095

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧