`
岳乡成
  • 浏览: 121997 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

struts标签实现图片上传

阅读更多
(1)jsp代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<%@ page language="java" pageEncoding="utf-8" %>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%@ taglib prefix= "fmt" uri= "http://java.sun.com/jstl/fmt"%>
<%@ taglib prefix="c"  uri="http://java.sun.com/jstl/core"%>
<%@ taglib prefix="sd" uri="/struts-dojo-tags"%>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>发布产品信息</title>
<link rel="stylesheet" type="text/css" href="../style/main.css"/>
<s:head theme="xhtml"/>  
<sd:head parseContent="true" extraLocales="utf-8" />
</head>
<script type="text/javascript">
</script>

<body>
<!--
<div style="color:red">
  <s:fielderror></s:fielderror>
</div>
-->
<s:form action="addProduct" method="post" theme="simple" enctype="multipart/form-data">
<div class="mainbox" style=" height : 848px;">
<div class="morearea">
        <a href="<%=request.getContextPath()%>/product/addProduct.action">发布产品信息</a>
    </div>
    <h1>发布产品信息</h1>
    <table border="0" cellspacing="0" cellpadding="0" class="table" bordercolor="#ccc">
  <tr>
    <td width="20%" align="center" bgcolor="#F6F6F6">名称</td>
<td width="80%">
    <s:textfield id="cfProduct.proTitle" name="cfProduct.proTitle" size="50"></s:textfield>
    </td>
  </tr>
  <tr>
    <td width="20%" align="center" bgcolor="#F6F6F6">型号</td>
<td width="80%">
    <s:textfield id="cfProduct.proModel" name="cfProduct.proModel" size="50"></s:textfield>
    </td>
  </tr>
  <tr>
    <td align="center" bgcolor="#F6F6F6">规格</td>
    <td>
    <s:textfield id="cfProduct.proSpec" name="cfProduct.proSpec" size="50"></s:textfield>
   </td>
    </tr>
    <tr>
    <td align="center" bgcolor="#F6F6F6">品牌</td>
    <td>
    <s:textfield id="cfProduct.proTrademark" name="cfProduct.proTrademark" size="50"></s:textfield>
   </td>
    </tr>
    <tr>
    <td align="center" bgcolor="#F6F6F6">材质</td>
    <td>
    <s:textfield id="cfProduct.proMaterial" name="cfProduct.proMaterial" size="50"></s:textfield>
   </td>
    </tr>
    <tr>
    <td align="center" bgcolor="#F6F6F6">产地</td>
    <td>
    <s:textfield id="cfProduct.proOrigin" name="cfProduct.proOrigin" size="40"></s:textfield>
   </td>
    </tr>
    <tr>
    <td align="center" bgcolor="#F6F6F6">类别</td>
    <td>
    <s:select
    headerKey="noSelectClass"
    headerValue="--请选择类型--"
    name="cfProduct.proClassId"
    list="productclassList"
    id="cfProduct.proClassId"
    listKey="psId" listValue="psName"
    key="cfProduct.proClassId"
    />
   </td>
    </tr>
    <tr>
    <td align="center" bgcolor="#F6F6F6">图片</td>
    <td>  
    <s:textfield name ="caption" label ="图片名称" />
    <s:label value="图片名称"></s:label>
    <s:file name ="myFile" label ="浏览"/>
   </td>
    </tr>
    <tr>
    <td align="center" bgcolor="#F6F6F6">导读</td>
            <td>
            <s:textarea id="cfProduct.proNaviContent" name="cfProduct.proNaviContent" cols="80" rows="5"></s:textarea>
                <font color="#ff0000">*</font>
            </td>
    </tr>
    <tr>
    <td align="center" bgcolor="#F6F6F6">内容</td>
            <td>
            <s:textarea id="cfProduct.proContent" name="cfProduct.proContent" cols="80" rows="5"></s:textarea>
            </td>
    </tr>
    <tr>
    <td align="center" bgcolor="#F6F6F6">有效期</td>
    <td>
    开始时间: <sd:datetimepicker language="utf-8" name="cfProduct.proBeginTime"  value="today" displayFormat="yyyy-MM-dd"></sd:datetimepicker>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    结束时间: <sd:datetimepicker language="utf-8" name="cfProduct.proEndTime" value="today" displayFormat="yyyy-MM-dd"></sd:datetimepicker>  
   </td>
    </tr>
    <tr>
    <td align="center" bgcolor="#F6F6F6">价格</td>
    <td>
    <s:textfield id="cfProduct.proPrice" name="cfProduct.proPrice" size="20"></s:textfield>
   </td>
    </tr>
</table>
<!--
<table border="0" cellspacing="0" cellpadding="0" class="table" bordercolor="#ccc">
      <tr>
        <th colspan="2" align="center" bgcolor="#F6F6F6">联系方式的确认与修改 若有误,您发布的信息将无法通过审核!<a href="account_eidt.html" target="mainFrame">[修改资料]</a></th>
      </tr>
      <tr>
        <td width="20%" align="center" bgcolor="#F6F6F6">姓名</td>
        <td width="80%"><s:text name="cfCorporation.corUserName"></s:text></td>
      </tr>
      <tr>
        <td align="center" bgcolor="#F6F6F6">公司名称</td>
        <td><s:text name="cfCorporation.corName"></s:text></td>
      </tr>
      <tr>
        <td align="center" bgcolor="#F6F6F6">经营模式</td>
        <td><s:text name="cfCorporation.corType"></s:text></td>
      </tr>
      <tr>
        <td align="center" bgcolor="#F6F6F6">固定电话</td>
        <td><s:text name="cfCorporation.corContactsPhone"></s:text></td>
      </tr>
      <tr>
        <td align="center" bgcolor="#f6f6f6">传真号码</td>
        <td><s:text name="cfCorporation.corFax"></s:text></td>
      </tr>
      <tr>
        <td align="center" bgcolor="#F6F6F6">移动电话</td>
        <td><s:text name="cfCorporation.corContactsMobile"></s:text></td>
      </tr>
      <tr>
        <td align="center" bgcolor="#F6F6F6">电子邮件</td>
        <td><s:text name="cfCorporation.corContactsEmail"></s:text></td>
      </tr>
    </table>
     -->
     <p class="tc"><s:submit id="confirmButton" type="submit" action="addProduct"  value="发布产品"></s:submit></p>
</div>
</s:form>
</body>
</html>

(2)struts配置文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>

<package name="product" extends="struts-default">
<action name="toAddProduct" class="productAction" method="toAddProduct">
<result>/product/product_add.jsp</result>
</action>

<action name="addProduct" class="productAction" method="addProduct">
   <!-- 
<interceptor-ref name ="fileUpload" >
                 <param name ="allowedTypes" >
                     image/bmp,image/png,image/gif,image/jpeg,image/jpg
                 </param >
             </interceptor-ref >
             <interceptor-ref name ="defaultStack" />
             -->
<result name="success" type="redirect">product/productList.action</result>
<result name="input">/product/product_add.jsp</result>
</action>

<action name="productList" class="productAction" method="listProducts">
<result>/product/product_list.jsp</result>
</action>

<action name="toUpdateProduct" class="productAction" method="toUpdateProduct">
<result name="success">/product/product_updata.jsp</result>
</action>

<action name="updateProduct" class="productAction" method="updateProduct">
<!-- 
<interceptor-ref name ="fileUpload" >
                 <param name ="allowedTypes" >
                     image/bmp,image/png,image/gif,image/jpeg,image/jpg
                 </param >
             </interceptor-ref >
             <interceptor-ref name ="defaultStack" />
             -->
<result name="success" type="redirect">product/productList.action</result>
<result name="input">/product/product_updata.jsp</result>
</action>

<action name="startProduct" class="productAction" method="startProduct">
<result name="success" type="redirect">product/productList.action</result>
<result name="input">/product/product_list.jsp</result>
</action>

<action name="stopProduct" class="productAction" method="stopProduct">
<result name="success" type="redirect">product/productList.action</result>
<result name="input">/product/product_list.jsp</result>
</action>

<action name="toAppointPage" class="productAction" method="toAppointPage">
<result name="success">/product/product_list.jsp</result>
</action>

<action name="deleteProduct" class="productAction" method="deleteProduct">
<result name="success" type="redirect">product/productList.action</result>
<result name="input">/product/product_list.jsp</result>
</action>

</package>
</struts>

(3)Action类

/**
* <p>ProductAction</p>
*
*  版权 (c) 2009
*
* <p>CFSW</p>
*
* 文件历史
* 日期                  作者             描述
* 2009-10-09        xiangcheng.yue      创建
*
*/
package product.action;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Date;
import java.util.List;

import org.apache.struts2.ServletActionContext;

import product.beans.CfProduct;
import product.beans.CfProductclass;
import product.service.ProductService;
import util.IdGenerator;

import com.opensymphony.xwork2.ActionSupport;
import common.beans.Page;
import common.util.ConstantUtil;
import common.util.PageUtil;

/**
* 产品的查看,发布,修改,删除的Action.
*
* @author xiangcheng.yue
* @version 1.0
*/
public class ProductAction extends ActionSupport {

private static final long serialVersionUID = 1L;

private static final int BUFFER_SIZE = 160 * 1024;
/** 产品Service。*/
private ProductService productService;
/** 产品对象。*/
private CfProduct cfProduct;
/** 企业对象。 */
//private CfCorporation cfCorporation;
/** 产品对象List。*/
private List<CfProduct> cfProducts;
/** 产品Id。*/
private String proId;
/** 产品修改页面是否修改产品图片标志,"0"表示没有修改,"1"表示修改。 */
private String updatePicFlag = "0";
/** 产品发布及修改页面是否修改企业信息的标志,"0"表示没有修改,"1"表示修改。 */
//private String updateCorporationFlag = "0";
/** 产品类型List。 */
private List<CfProductclass> productclassList;
/** 图片对象,为实现产品图片的上传及显示。 */
//private Picture pic = new Picture();
/** 分页对象,为实现产品List的分页。 */
private Page page = new Page();
/** 跳转页面。 */
private int goPage;
/** 为实现产品图片的上传及显示。 */
private File myFile;
    private String contentType;
    private String fileName;
    private String imageFileName;
    private String caption;

   
private static void copy(File src, File dst)  {
        try  {
           InputStream in = null ;
           OutputStream out = null ;
            try  {               
               in = new BufferedInputStream( new FileInputStream(src), BUFFER_SIZE);
               out = new BufferedOutputStream( new FileOutputStream(dst), BUFFER_SIZE);
                byte [] buffer = new byte [BUFFER_SIZE];
                while (in.read(buffer) > 0 )  {
                   out.write(buffer);
               }
            } finally  {
                if ( null != in)  {
                   in.close();
               }
                 if ( null != out)  {
                   out.close();
               }
           }
        } catch (Exception e)  {
           e.printStackTrace();
       }
   }
  
public String getExtention(String fileName)  {
        int pos = fileName.lastIndexOf(".");
        return fileName.substring(pos);
   }

    /**
     * @since 2009-10-09
     * 初始化产品List页面,并按照条件对List进行分页显示。
     * @return String SUCCESS 显示产品List页面
     */
public String listProducts() {
cfProducts = productService.findAll();
page.setEveryPage(ConstantUtil.EVERYPAGE_SIZE);
page = PageUtil.createPage(page,cfProducts.size());
goPage = 1;
cfProducts = productService.getListByPage(CfProduct.class,page);
return SUCCESS;
}

/**
     * @since 2009-10-09
     * 确定要发布产品信息后,对新发布的产品的进行保存。
     * @return String SUCCESS 返回产品List页面
     */
public String toAddProduct() {
cfProduct = new CfProduct();
productclassList = productService.findSortOfCfProductsort();
return SUCCESS;
}

/**
     * @since 2009-10-09
     * 确定要发布产品信息后,对新发布的产品的进行保存。
     * @return String SUCCESS 返回产品List页面
     */
public String addProduct() {
cfProduct.setProId(IdGenerator.createId());
cfProduct.setProCreatTime(new Date());
imageFileName = new Date().getTime() + getExtention(fileName);
String picURl = ServletActionContext.getServletContext().getRealPath( "/uploadimages" ) + "\\" + imageFileName;
        File imageFile = new File(ServletActionContext.getServletContext().getRealPath( "/uploadimages" ) + "/" + imageFileName);
        copy(myFile, imageFile);
cfProduct.setProPicUrl(picURl);
productService.saveProduct(cfProduct);
return SUCCESS;
}

/**
     * @since 2009-10-09
     * 确定要修改产品信息后,初始化要修改的产品对象。
     * @return String SUCCESS 跳转到产品修改页面
     */
@SuppressWarnings("unchecked")
public String toUpdateProduct() {
cfProduct = productService.findById(this.getProId());
productclassList = productService.findSortOfCfProductsort();
//cfCorporation = productService.findCfCorporationById(cfProduct.getProCorId());
return SUCCESS;
}

/**
     * @since 2009-10-09
     * 修改产品信息后,对修改了的产品的信息进行保存。
     * @return String SUCCESS 跳转到产品List页面,并对该页面进行刷新。
     */
public String updateProduct() {
if("0" == updatePicFlag){
productService.saveProduct(cfProduct);
return SUCCESS;
}
productService.updateProduct(cfProduct);
return SUCCESS;
}

/**
     * @since 2009-10-09
     * 确定启用产品时,对产品的是否停用标志位进行修改。
     * @return String SUCCESS 刷新List页面。
     */
public String startProduct() {
cfProduct = productService.findById(this.getProId());
cfProduct.setProIsLock(1);
productService.updateProduct(cfProduct);
return SUCCESS;
}

/**
     * @since 2009-10-09
     * 确定停用产品时,对产品的是否停用标志位进行修改。
     * @return String SUCCESS 刷新List页面。
     */
public String stopProduct() {
cfProduct = productService.findById(this.getProId());
cfProduct.setProIsLock(0);
productService.updateProduct(cfProduct);
return SUCCESS;
}

/**
     * @since 2009-10-09
     * 点击分页标签时到确定页。
     * @return String SUCCESS 指定确定页的数据,并刷新List页面。
     */
public String toAppointPage(){
page.setCurrentPage(this.goPage);
page = PageUtil.createPage(page);
cfProducts = productService.getListByPage(CfProduct.class,page);
return SUCCESS;
}


/**
     * @since 2009-10-09
     * 点击产品List页面,删除链接。
     * @return String SUCCESS 把要删除的数据删除标志位设为1,并刷新List页面。
     */
public String deleteProduct(){
productService.deleteProduct(this.getProId());
return SUCCESS;
}

public void setCfProduct(CfProduct cfProduct) {
this.cfProduct = cfProduct;
}

public CfProduct getCfProduct() {
return cfProduct;
}

public List<CfProduct> getCfProducts() {
return cfProducts;
}

public void setCfProducts(List<CfProduct> cfProducts) {
this.cfProducts = cfProducts;
}

public ProductService getProductService() {
return productService;
}

public void setProductService(ProductService productService) {
this.productService = productService;
}

public String getProId() {
return proId;
}

public void setProId(String proId) {
this.proId = proId;
}

public static long getSerialVersionUID() {
return serialVersionUID;
}

public String getUpdatePicFlag() {
return updatePicFlag;
}

public void setUpdatePicFlag(String updatePicFlag) {
this.updatePicFlag = updatePicFlag;
}

public Page getPage() {
return page;
}

public void setPage(Page page) {
this.page = page;
}

public List<CfProductclass> getProductclassList() {
return productclassList;
}

public void setProductclassList(List<CfProductclass> productclassList) {
this.productclassList = productclassList;
}

public int getGoPage() {
return goPage;
}

public void setGoPage(int goPage) {
this.goPage = goPage;
}

public void setMyFileContentType(String contentType)  {
        this.contentType = contentType;
   }
  
    public void setMyFileFileName(String fileName)  {
        this.fileName = fileName;
   }
      
    public void setMyFile(File myFile)  {
        this.myFile = myFile;
   }
  
    public String getImageFileName()  {
        return imageFileName;
   }
  
    public String getCaption()  {
        return caption;
   }

     public void setCaption(String caption)  {
        this.caption = caption;
   }

public void setImageFileName(String imageFileName) {
this.imageFileName = imageFileName;
}

}


因为时间关系没怎么仔细的分离代码,说明文字也很少,需要参考的请仔细的查看一下。

谢谢你们,有疑问和建议请直接提。想批评直接说,但不要进行人身攻击,呵呵。
分享到:
评论

相关推荐

    struts1实现图片上传

    在这个"struts1实现图片上传"的实践中,我们将深入探讨如何使用Struts1来处理图片上传功能,包括图片预览。 首先,我们需要在Struts1的配置文件`struts-config.xml`中定义一个Action,这个Action将处理图片上传的...

    struts2实现单个图片上传

    Struts2是一个强大的Java EE应用程序框架,用于构建MVC(模型-视图-控制器)架构的Web应用。...这是一个基础的图片上传实现,实际项目中可能还需要考虑错误处理、文件大小限制、文件类型检查等更多细节。

    struts实现上传图片

    本文将深入探讨如何使用Struts框架实现图片上传功能,这在许多Web应用中都是一个常见且重要的需求。 ### Struts框架简介 Struts是一个开源的框架,用于创建企业级的Java Web应用。它基于Servlet和JSP技术,并遵循...

    xhEditor struts2实现图片上传

    本文将详述如何使用xhEditor与Struts2框架相结合,实现图片上传功能。xhEditor是一款开源的JavaScript富文本编辑器,它提供了丰富的编辑功能,如字体样式设置、颜色调整、图片和文件上传等。而Struts2则是一个强大的...

    struts2实现图片上传的功能

    在Struts2中实现图片上传功能是一项常见的需求,尤其在处理用户提交的表单数据时,例如用户个人资料的头像或者产品图片等。下面将详细介绍如何利用Struts2来实现这一功能。 首先,我们需要理解文件上传的基本概念。...

    struts2实现文件上传下载

    本篇文章将详细探讨如何在Struts2框架下实现文件的上传与下载。 首先,我们需要了解Struts2中的文件上传机制。Struts2提供了`FileUploadInterceptor`拦截器来处理文件上传请求。在处理文件上传时,开发者需要在...

    struts1中实现图片上传

    在这个主题中,我们将深入探讨如何在Struts1中实现图片上传功能。首先,我们需要了解图片上传的基本流程,包括前端表单设计、后端接收与处理以及文件存储。 1. **前端表单设计** 在HTML页面中,我们需要创建一个...

    struts2 上传图片显示

    在本场景中,我们关注的是如何使用Struts2来实现图片上传并显示的功能,同时生成缩略图。 首先,我们需要在Struts2配置文件(通常为struts.xml)中定义一个Action类,该类负责处理图片上传请求。这个Action类应该有...

    struts框架图片上传和显示

    总结起来,Struts框架通过`struts2-fileupload`库支持图片上传,处理上传的文件并将其保存在服务器上。在显示图片时,可以通过从数据库获取图片路径并在前端页面上引用。整个过程涉及到前端表单、后端Action处理、...

    Struts2 JQuery同步上传图片

    在本例中,我们将探讨如何结合Struts2和jQuery实现图片的同步上传功能。 首先,让我们分析`upload.jsp`页面。这个页面是用户与应用交互的界面,它包含了一个Struts2的表单(`&lt;s:form&gt;`),用于文件上传。表单的属性...

    Struts实现图片上传

    在Struts框架中实现图片上传功能是常见的需求,尤其是在用户交互性强的Web应用中,如社交网络、电商网站等。这个功能允许用户将图片从本地计算机上传到服务器,以便于展示、存储或处理。 首先,让我们了解一下实现...

    Struts2 实现图片上传和文档下载

    本示例将深入探讨如何使用Struts2框架来实现图片上传和文档下载功能,这两个功能是Web应用中常见的需求。 首先,让我们了解上传功能。在Struts2中,图片上传通常涉及以下步骤: 1. **创建上传表单**:在HTML页面上...

    struts2.0图片上传代码

    为了实现图片上传,我们需要在该文件中配置一个专门处理图片上传的Action,比如`ImageUploadAction`。此外,还需配置对应的`result`,指定图片保存的路径。 ```xml &lt;package name="imageUpload" extends="struts-...

    struts 图片上传demo

    这个"struts 图片上传demo"是Struts框架中实现图片上传功能的一个示例项目,它包含了对文件大小和类型的限制,并且代码注释详尽,方便理解。 在Web开发中,文件上传是一项常见的需求,特别是处理用户上传图片的情况...

    Struts2+Hibernate实现文件上传

    至于标签“图片上传”,这可能指的是在前端展示已上传的图片。在HTML页面中,可以使用`&lt;img&gt;`标签配合URL来显示图片。如果图片路径存储在数据库中,那么可以通过Ajax请求获取路径,并动态插入到`&lt;img&gt;`标签的`src`...

    struts2上传图片

    通过以上步骤,我们可以在Struts2框架下安全地实现图片上传,同时监控网站访问量并防止重复提交。这只是一个基础示例,实际开发中还需要考虑安全性(如文件类型检查、防止恶意文件上传)、错误处理和用户体验等方面...

    struts文件上传例子及页面基本标签用法

    在这个例子中,我们将探讨如何在Struts中实现文件上传,并了解一些基本的页面标签用法。 首先,文件上传在Struts中通常涉及到两个主要部分:前端HTML表单和后端Action类。在前端,我们需要一个`&lt;input type="file"&gt;...

    struts2 实现文件、图片 上传

    在Struts2中实现文件和图片上传是一项常见的需求,尤其在处理用户提交的表单数据时,比如上传个人头像或者上传文档附件等。本篇文章将详细介绍如何在Struts2中实现这一功能。 首先,我们需要在Struts2的配置文件...

    struts文图片上传 并存入数据库 在jsp页面显示

    在这个特定的项目中,我们看到的是一个关于如何使用Struts实现图片上传、存储到数据库以及在JSP页面显示的过程。以下是相关的知识点详解: 1. **Struts框架**:Struts是Apache软件基金会的一个开源项目,它提供了...

    oracle的数据类型_java中Clob型详细用法_struts中实现图片上传功能

    在 Struts 1 中实现图片上传,通常涉及以下步骤: 1. 创建 ActionForm:定义一个表单类,包含一个类型为 `java.io.File` 的属性来接收上传文件,以及一个类型为 `java.lang.String` 的属性来存储文件名。 2. 配置 ...

Global site tag (gtag.js) - Google Analytics