idea使用SSM框架上传图片功能

该文章展示了如何使用JSP创建一个前端表单,用于输入商品信息并上传图片。表单数据通过POST提交到/addShop.do接口,后端Java逻辑处理文件上传并存储到服务器,同时将商品信息保存。列表显示部分用以展示所有上传的商品,包括图片。
摘要由CSDN通过智能技术生成

一、实现效果图

 二、jsp前端界面

<form action="/addShop.do" method="post" enctype="multipart/form-data">
    <div style="border-radius: 5px;background-color: white;margin: 20px;padding: 20px">
        <div class="inputcss">
            <div> 商品名称:</div>
            <div><input type="text" placeholder="请输入信息" name="shopname"></div>
        </div>
        <div class="inputcss">
            <div>商品金额:</div>
            <div><input type="text" placeholder="请输入信息" name="shopmoney"></div>
        </div>

        <div class="inputcss">
            <div>商品类型:</div>
            <div>
                <select style="width: 300px;height: 35px" name="shoptypename">
                    <c:forEach items="${allData}" var="model" varStatus="sta">
                        <option value="${model.typeid},${model.typename}" >${model.typename}</option>
                    </c:forEach>
                </select>
            </div>
        </div>

        <div class="inputcss">
            <div>商品描述:</div>
            <div><textarea style="  height:185px ; width: 300px;" name="shopmessage"></textarea></div>
        </div>

        <div class="inputcss">
            <div>商品图片:</div>
            <div><input type="file" placeholder="请输入信息" name="shopimageShow"></div>
        </div>

        <div class="inputcss"> 
            <div style="visibility: hidden">按钮信息:</div>
            <div><input type="submit" value="确认添加" style="height: 40px;background-color: #615FE6;color: white;width: 300px;margin-top: 10px;border: 1px solid #615FE6;border-radius: 5px"/></div>
        </div>
    </div>
</form>

说明:

1:action="/addShop.do";是数据的提交接口名称

2:enctype="multipart/form-data";图片上传需要添加此属性

 三、java逻辑代码

1:数据接口实体类
public class ShopModel {
    private Integer shopid;

    private String shopname;

    private String shopmoney;

    private String shoptypeid;

    private String shoptypename;

    private String shopmessage;

    private String shopimage;

    private MultipartFile shopimageShow;

    public MultipartFile getShopimageShow() {
        return shopimageShow;
    }

    public void setShopimageShow(MultipartFile shopimageShow) {
        this.shopimageShow = shopimageShow;
    }

    public Integer getShopid() {
        return shopid;
    }

    public void setShopid(Integer shopid) {
        this.shopid = shopid;
    }

    public String getShopname() {
        return shopname;
    }

    public void setShopname(String shopname) {
        this.shopname = shopname;
    }

    public String getShopmoney() {
        return shopmoney;
    }

    public void setShopmoney(String shopmoney) {
        this.shopmoney = shopmoney;
    }

    public String getShoptypeid() {
        return shoptypeid;
    }

    public void setShoptypeid(String shoptypeid) {
        this.shoptypeid = shoptypeid;
    }

    public String getShoptypename() {
        return shoptypename;
    }

    public void setShoptypename(String shoptypename) {
        this.shoptypename = shoptypename;
    }

    public String getShopmessage() {
        return shopmessage;
    }

    public void setShopmessage(String shopmessage) {
        this.shopmessage = shopmessage;
    }

    public String getShopimage() {
        return shopimage;
    }

    public void setShopimage(String shopimage) {
        this.shopimage = shopimage;
    }
}

说明:需要注意的是MultipartFile shopimageShow这个字段,这个是通过Mybatis文件生成代码没有的;需要自己添加一下这个字段;目的是为了接受和处理jsp页面传递过来的文件信息

2:数据接口实体类
@RequestMapping("/addShop.do")
private String add(ShopModel model, HttpServletRequest request) {
    
    model.setShoptypeid(model.getShoptypename().split(",")[0]);
    model.setShoptypename(model.getShoptypename().split(",")[1]);

    String newFileName = "";
    String fileName = model.getShopimageShow().getOriginalFilename();
    //选择了文件
    if(fileName.length() > 0){
        String realpath = request.getServletContext().getRealPath("/upload");
        //实现文件上传
        String fileType = fileName.substring(fileName.lastIndexOf('.'));
        //防止文件名重名
        newFileName = MyUtil.getStringID() + fileType;
        model.setShopimage("upload/"+newFileName);
        File targetFile = new File(realpath, newFileName);
        if(!targetFile.exists()){
            targetFile.mkdirs();
        }
        //上传
        try {
            model.getShopimageShow().transferTo(targetFile);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    service.add(model);
    return "forward:/findAllShop.do";//默认先找了页面
}
3:列表数据显示
<table border="1px" align="center" style="color: #666;margin-top: 20px;padding-left: 30px;width: 95%;">

    <tr style="background-color: #538ec6;color: white;">
        <th>编号</th>
        <th>商品名称</th>
        <th>商品费用</th>
        <th>商品类型</th>
        <th>图片信息</th>
        <th>操作</th>
    </tr>

    <c:forEach items="${allData}" var="model" varStatus="sta">
        <tr style="align-items: center;height: 50px" align="center">
            <td>${sta.index+1}</td>
            <td>${model.shopname}</td>
            <td>${model.shopmoney}</td>
            <td>${model.shoptypename}</td>
            <td> <img src="${model.shopimage}" style="width: 200px;height: 100px;margin: 5px"> </td>
            <td><a href="delShop.do?id=${model.shopid}">删除</a>&nbsp&nbsp&nbsp<a href="#">修改</a></td>
        </tr>
    </c:forEach>
</table>
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Android毕业设计源码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值