返回介绍

11.5 控制器

发布于 2025-04-22 20:10:03 字数 2115 浏览 0 评论 0 收藏

upload1 中的控制器如清单 11.2 所示。这个类中有 inputProduct 和 saveProduct 两个处理请求的方法。inputProduct 方法向浏览器发出一个产品表单。saveProduct 方法将已上传的图片文件保存到应用程序目录的 image 目录下。

清单 11.2 ProductController 类

package controller;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.multipart.MultipartFile;
import domain.Product;

@Controller
public class ProductController {

  private static final Log logger =
    LogFactory.getLog(ProductController.class);

  @RequestMapping(value = "/input-product")
  public String inputProduct(Model model) {
    model.addAttribute("product", new Product());
    return "ProductForm";
  }

  @RequestMapping(value = "/save-product")
  public String saveProduct(HttpServletRequest servletRequest,
      @ModelAttribute Product product,
      BindingResult bindingResult, Model model) {

    List<MultipartFile> files = product.getImages();
    List<String> fileNames = new ArrayList<String>();
    if (null != files && files.size() > 0) {
      for (MultipartFile multipartFile : files) {

        String fileName =
             multipartFile.getOriginalFilename();
        fileNames.add(fileName);
        File imageFile = new
            File(servletRequest.getServletContext()
            .getRealPath("/image"), fileName);
        try {
          multipartFile.transferTo(imageFile);
        } catch (IOException e) {
          e.printStackTrace();
        }
      }
    }
    // save product here
    model.addAttribute("product", product);
    return "ProductDetails";
  }
}

如清单 11.2 中的 saveProduct 方法所示,保存已上传文件是一件很轻松的事情,只需要在 MultipartFile 中调用 transferTo 方法。

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。