打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Struts2实现文件上传图片,并显示

Struts2实现文件上传,并显示。

第一、实现JSP

<%@ page contentType="text/html; charset=GBK" language="java" %>
<%@ include file="../../../inc/taglibs.jsp"%>
<userCountyGrade:check/>
<html><meta http-equiv="Content-Type" content="text/html; charset=GBK">
<link href="admin/myweb.css" rel="stylesheet" type="text/css">
<title>${html_title}</title>
<head>
<style type="text/css">
<!--
body {
background-image: url(admin/main_bg.gif);
}
-->
</style>

</head>
<body>
<br>
<table width="99%" cellpadding="0" cellspacing="0" border="0" align="center">
<s:form validate="true" action="userInfoCounty_addStakeout" enctype="multipart/form-data" method="post">
<tr>
       <td>
    <table width="82" height="28" border="0" cellpadding="0" cellspacing="0" background="admin/main_menu_bg.gif">
           <tr>
             <td valign="bottom"><div align="center" class="xiaoyu_font">监测点位注册</div></td>
           </tr>
        </table>
   </td>
</tr>
</table>
<table width="99%" cellpadding="3" cellspacing="1" border="0" align="center" class="main_table">
<tr>
    <td colspan="3" align="center" class="main_topbg" ></td>
</tr>
<tr>
   <td colspan="3" align="left" class="myweb_td" >
      <div class="xiaoyu_font_fielderror"><s:fielderror/></div>
</td>
</tr>
<tr >
    <td width="162" class="myweb_td" >监测点编号:<FONT color="red">*</FONT></td>
    <td width="295" class="myweb_td" onMouseOver="this.style.backgroundColor='#ffffff'" onMouseOut="this.style.backgroundColor=''">
    <s:textfield name="localityCode" size="15" maxlength="10"/>
    </td>
    <td class="myweb_td" width="771"></td>
</tr>
<tr >
    <td width="162" class="myweb_td" >监测点名称:<FONT color="red">*</FONT></td>
    <td width="295" class="myweb_td" onMouseOver="this.style.backgroundColor='#ffffff'" onMouseOut="this.style.backgroundColor=''">
    <s:textfield name="rqName" size="15" maxlength="10"/>
    </td>
    <td class="myweb_td" width="771"></td>
</tr>
<tr >
    <td width="162" class="myweb_td" >监测点类型:<FONT color="red">*</FONT></td>
    <td width="295" class="myweb_td" onMouseOver="this.style.backgroundColor='#ffffff'" onMouseOut="this.style.backgroundColor=''">
   <s:select list="#application['app_9JCDLX']" name="rqFlag" listKey="btSmallClassId" listValue="btSmallClassName" ></s:select>
    </td>
    <td class="myweb_td" width="771"></td>
</tr>
<tr >
    <td width="162" class="myweb_td" >监测类型:<FONT color="red">*</FONT></td>
    <td width="295" class="myweb_td" onMouseOver="this.style.backgroundColor='#ffffff'" onMouseOut="this.style.backgroundColor=''">
   <s:select list="#application['app_4JCLX']" name="rqType" listKey="btSmallClassId" listValue="btSmallClassName" ></s:select>
    </td>
    <td class="myweb_td" width="771"></td>
</tr>
<tr >
    <td width="162" class="myweb_td" >监测点经度:<FONT color="red">*</FONT></td>
    <td width="295" class="myweb_td" onMouseOver="this.style.backgroundColor='#ffffff'" onMouseOut="this.style.backgroundColor=''">
    <s:textfield name="rqLongitude" size="15" maxlength="10"/>°
    </td>
    <td class="myweb_td" width="771"></td>
</tr>
<tr >
    <td width="162" class="myweb_td" >监测点纬度:<FONT color="red">*</FONT></td>
    <td width="295" class="myweb_td" onMouseOver="this.style.backgroundColor='#ffffff'" onMouseOut="this.style.backgroundColor=''">
    <s:textfield name="rqLatitude" size="15" maxlength="10"/>°
    </td>
    <td class="myweb_td" width="771"></td>
</tr>
<tr >
    <td width="162" class="myweb_td" >监测点照片:<FONT color="red"></FONT></td>
    <td width="295" class="myweb_td" onMouseOver="this.style.backgroundColor='#ffffff'" onMouseOut="this.style.backgroundColor=''">
<s:file name="upload" size="15" ></s:file>
    </td>
    <td class="myweb_td" width="771"></td>
</tr>
<tr >
    <td width="162" class="myweb_td" >监测点描述:<FONT color="red"></FONT></td>
    <td width="295" class="myweb_td" onMouseOver="this.style.backgroundColor='#ffffff'" onMouseOut="this.style.backgroundColor=''">
    <s:textarea name="rqDescription" rows="5" cols="30" onkeyup="if(this.value.length > 400) this.value=this.value.substr(0,400)" ></s:textarea>
    </td>
    <td class="myweb_td" width="771"></td>
</tr>
<tr>
    <td colspan="3" class="myweb_td" align="center">
      <input name="submit" type="submit" value="提交信息" />
      <input name="submit" type="button" value="返   回" onclick="window.open('index.action?action=/manager/county_user/stakeout_dot_manage/stakeout_manage','main')" />
    </td>
</tr>
</s:form>
</table>
</body>
</html>

第二、Action具体实现

     Action内添加如下字段。
   private File upload;
    private String uploadContentType;
    private String uploadFileName;

//接受依赖注入的属性
    private String savePath;
//接受依赖注入的方法
    public void setSavePath(String value){
        this.savePath = value;
    }

// private String getSavePath() throws Exception {
// return ServletActionContext.getRequest().getRealPath(savePath);
// }
public void setUpload(File upload) {
   this.upload = upload;
}
public void setUploadContentType(String uploadContentType) {
   this.uploadContentType = uploadContentType;
}
public void setUploadFileName(String uploadFileName) {
   this.uploadFileName = uploadFileName;
}
public File getUpload() {
   return (this.upload);
}
public String getUploadContentType() {
   return (this.uploadContentType);
}
public String getUploadFileName() {
   return (this.uploadFileName);
}

将流存入数据库
    BeanUtils.populate(uis, BeanUtils.describe(userinfo));
    uis.setRqDate(new java.util.Date());
  
//    System.out.println("sdfdsfdsfdsfs:"+uis.getRqImage().toString());
//    System.out.println("sdfdsfdsfdsfs:"+userinfo.getUpload());
   
    if(userinfo.getUpload()!=null){
     //设置图片
     FileInputStream fis = new FileInputStream(userinfo.getUpload());
     byte[] buffer = new byte[fis.available()];
     fis.read(buffer);
     uis.setRqImage(buffer);
//    byte[] s =uis.getRqImage();
//    for(int i=0; i<s.length; i++){
//     System.out.print(s[i]);
//    }
    }
    if(userinfo.getRadializationQualityService().save(uis)!=null){
     userinfo.setInfoStr("监测点注册成功!","index.action?action=/manager/county_user/stakeout_dot_manage/stakeout_manage");
     return "succeed";
    }else{
     userinfo.setInfoStr("监测点注册失败","index.action?action=/manager/county_user/stakeout_dot_manage/stakeout_manage");
     return "error";
    }

 

第三、从数据库中读出图片

public String showStakeout(StakeoutAction userinfo){
   System.out.println("UserInfoCounty showStakeout");
   try{
  
   AbstractRadializationQuality ui = userinfo.getRadializationQualityService().findById(userinfo.getId());
   if(ui==null){
    userinfo.setInfoStr("没找到你选择监测点!","userInfoCounty_searchStakeout.action");
    return "error";
   }
  
   //BeanUtils.populate(userinfo, BeanUtils.describe(ui));
   BeanUtils.copyProperties(userinfo,ui);
   userinfo.setRqDate(ui.getRqDate());
//这里将图片流存入Session
userinfo.getSession().put("SES_StakeoutImage", userinfo.getRqImage());
  
   //设置显示 用户信息
   AbstractUserInfo au = (AbstractUserInfo)userinfo.getUserInfoService().findUserInfoId(ui.getRqUser());
   if(au!=null){
    userinfo.setShowUserName(au.getUiName());
    userinfo.setShowUiId(au.getUiId());
   }
  
   return "/manager/county_user/stakeout_dot_manage/stakeout_show";
  
   }catch(Exception e){
    e.printStackTrace();
    userinfo.setInfoStr("系统错误请联系管理员!","userInfoCounty_searchStakeout.action");
    return "error";
   }
}

 

第四、Servlet从Session中读出图片
package com.radialization.servlet;
import java.io.IOException;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class StakeoutImage extends HttpServlet {
private static final long serialVersionUID = -7862035188698463539L;
public void init(ServletConfig conf) throws ServletException {
   super.init(conf);
}
public void doGet(HttpServletRequest req, HttpServletResponse res)
    throws ServletException, IOException {
   byte[] image = (byte[])req.getSession().getAttribute("SES_StakeoutImage");
     java.io.OutputStream out = null;
        byte [] bytes = null;
   if(image!=null){
    java.io.ByteArrayInputStream bi = new java.io.ByteArrayInputStream(image);
   
            //二进制输出流
    res.setContentType( "multipart/form-data" );
            //得到输出流
            out = res.getOutputStream();
           
            //从输入流读取数据到输出流
            bytes = new byte [ 1024 ];
            while ( -1 != bi.read( bytes ) ) {
                 out.write( bytes );
            }
            //强制刷新输出流
            out.flush();
   }
}
public void doPost(HttpServletRequest req, HttpServletResponse res)throws ServletException, IOException {
   doGet(req, res);
}
}

第五、JSP页面中图片上的SRC访问Servlet
<tr >
    <td width="162" class="myweb_td" >监测点照片:<FONT color="red"></FONT></td>
    <td width="295" class="myweb_td" onMouseOver="this.style.backgroundColor='#ffffff'" onMouseOut="this.style.backgroundColor=''">
   <img alt="" src="stakeoutImage">
    </td>
    <td class="myweb_td" width="771"></td>
</tr>

第六、Struts.xml配置
     <action name="*_addStakeout" class="com.radialization.struts.action.StakeoutAction" method="addStakeout">
<!-- 图片大小与图片类型过滤 -->
            <interceptor-ref name="fileUpload">
                <param name="allowedTypes">image/bmp,image/x-png,image/gif,image/pjpeg</param>
                <param name="maximumSize">300000</param>
            </interceptor-ref>
            <interceptor-ref name="defaultStack"/>           
        <result name="input">/${inputAddStakeout}.jsp</result>
     </action>

以上文章为原创,转载时就表示转载处。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
1分钟学会自己制作简单的博客边框,
【素材】动态背景
纤月凝伤【音画分享】好友一粟JIN贴赠梅竹
table的border
文章标题上插图片-02
表格滚动代码
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服