首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

高分求 一个struts 应用代码解决方法

2012-01-20 
高分求 一个struts 应用代码   大家帮忙写一个用做的struts文件,图片 上传下载的代码.最好是jsp页面 数据

高分求 一个struts 应用代码


   大家帮忙写一个用做的struts   文件,图片 上传下载的代码.

最好是jsp页面 数据库设计 一起给出答案.   

  一定按时结帐!

[解决办法]
...struts的sample里面没有吗。。。
网上一打把啊
[解决办法]
页面:

<td width= "50% " rowspan= "2 "> &nbsp;
<span class= "InputAreaCell ">
<strong>
<bean:message key= "question.picture "/>
<br>
<html:file name= "questionActionForm " property= "file " onchange= "return load_img(this.value,img); "/>
<br>
<br>
<bean:message key= "question.preview "/>
<div id= "img "> </div>
<br>
</strong>
</span>
</td>
[解决办法]
功能设计:给用户提供一个上传的界面,并设定上传文件的尺寸上限。用户上传的照片先统一保存在一个临时文件夹中,之后可以用 <img> 指向临时文件夹中的这个图片,让用户可以预览自己上传的照片。当所有的用户信息都收集完成后,将图片和其他信息一并提交,保存到数据库中。保存成功以后,删除临时文件夹中的图片。

实现步骤:

我使用的是从struts主页上下载的struts-1.2.8-src,其中web/examples/目录下有一个upload的例子,稍微修改了一下就直接拿过来用了。这是一个JSP页面、ActionForm和Action的组合。下面分别列出各自的代码。

upload.jsp的部分源代码:

<html:form action= "/UploadSubmit " enctype= "multipart/form-data ">

请选择需要上传的照片:

<html:file property= "theFile "/>

<html:submit value= "上传 "/>

</html:form>

接下来需要在ActionForm中声明这个属性,并设置getter和setter方法,这部分源代码如下:

public class UploadForm extends ActionForm {

protected FormFile theFile;

public FormFile getTheFile() {

return theFile;

}

public void setTheFile(FormFile theFile) {

this.theFile = theFile;

}

}

这个表单的theFile属性不是String或boolean,而是org.apache.struts.upload.FormFile。因为用户上传的是一个二进制文件,而HTTP协议是以文本形式传输数据的,这就需要进行转换。打个比方,一辆汽车需要从甲地送到乙地,但是两地之间只有一条索道,汽车没法开,所以就想个办法在甲地把汽车先拆了,把零件送到乙地再重新组装成一辆汽车。FormFile起的就是拆卸和组装的作用,只不过它把拆卸、传输和组装的过程都封装起来了,我们看到的是一辆汽车从甲地开进FormFile,过一会它就从乙地开出来了J我们要决定的只是把它停到什么地方,这就是Action的活了。

按照功能设计,Action要把这部车停到一个临时文件夹下面,这部分源代码如下:

public ActionForward execute(ActionMapping mapping,

ActionForm form,

HttpServletRequest request,

HttpServletResponse response)

throws Exception {

if (form instanceof UploadForm) {

UploadForm theForm = (UploadForm) form;

//获取上传的数据文件

FormFile file = theForm.getTheFile();

//获取文件名

String filename= file.getFileName();

//设置图片文件临时存放的路径

HttpSession session = request.getSession();

String path = session.getServletContext().getRealPath( "/ ") + "temp\\ " + filename;

try {

//读取文件中的数据,获取二进制的数据流

InputStream stream = file.getInputStream();

// 把数据写到指定路径

OutputStream bos = new FileOutputStream(path);

int bytesRead = 0;

byte[] buffer = new byte[8192];



while ((bytesRead = stream.read(buffer, 0, 8192)) != -1) {

bos.write(buffer, 0, bytesRead);

}

bos.close();

logger.info( "The file has been written to \ " "

+ path + "\ " ");

//设计一个标记,说明用户已经上传过照片了。

session.setAttribute( "imageuploaded ", "true ");

session.setAttribute( "filename ",filename);


// close the stream

stream.close();

bos.flush();

bos.close();

}catch (FileNotFoundException fnfe) {

return null;

}catch (IOException ioe) {

return null;

}

//destroy the temporary file created

file.destroy();


//转向下一个页面

return mapping.findForward( "next ");

}


//this shouldn 't happen in this example

return null;

}

[解决办法]
要的话加我QQ317741737

热点排行