详解SpringMVC中的日期处理和文件上传操作

日期格式处理

详解SpringMVC中的日期处理和文件上传操作_第1张图片

在控制器中使用对象接收数据

前端:

 

图书名称:

图书作者:

图书价格:

后端

@Controller
@RequestMapping("/test")
public class TestController {

    @RequestMapping("/add")
    //表单提交的多个数据,在控制器方法中可以使用对象接收
    //但是提交的数据的key必须要与对象的属性名一致
    public String addBook(Book book){
        return "/tips.jsp";
    }

}

日期格式处理

如果前端需要输入日期数据,在控制器中转换成Date对象,SpringMVC要求前端输入的日期格式必须为yyyy/MM/dd

如果甲方要求日期格式必须为指定的格式,而这个指定格式SpringMVC不接受,该如何处理呢?

自定义日期转换器

创建自定义日期转换器

/***
 * 1.创建一个类实现Converter接口,泛型指定从什么类型转换为什么类型
 * 2.实现convert转换方法
 */
public class MyDateConverter implements Converter {

    SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");

    public Date convert(String s) {
        Date date = null;
        try {
            date = sdf.parse(s);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return date;
    }

}

详解SpringMVC中的日期处理和文件上传操作_第2张图片

配置自定义转换器




    
        
            
        
    

文件上传下载

SpringMVC框架部署

基于Maven创建web工程

添加SpringMVC所需的依赖

Spring:context aspects jdbc test web webmvc jackson

创建SpringMVC配置文件

在web.xml中配置SpringMVC的前端控制器

在web.xml中配置SpringMVC的编码过滤器

配置springmvc静态资源处理策略

文件上传

案例:添加图书,同时提交图书的封面图片

前端提交文件

  • 表单提示方式必须为post
  • 表单enctype属性设置为multipart/form-data

图书名称:

图书作者:

图书价格:

图书封面:

控制器接收数据和文件

SpringMVC处理上传文件需要借助于CommonsMultipartResolver文件解析器

添加依赖:commons-io commons-fileupload


     commons-io
     commons-io
     2.4


    commons-fileupload
    commons-fileupload
    1.4

在spring-servlet.xml中配置文件解析器


    
    
    

控制器接收文件

在处理文件上传的方法中定义一个MultiPartFile类型的对象,就可以接受图片了

@Controller
@RequestMapping("/book")
public class BookController {


    @RequestMapping("/add")
    public String addBook(Book book, MultipartFile imgFile, HttpServletRequest request) throws IOException {
        System.out.println("--------------add");

        //imgFile就表示上传的图片
        //1.截取上传文件的后缀名,生成新的文件名
        String originalFilename = imgFile.getOriginalFilename();
        String ext = originalFilename.substring( originalFilename.lastIndexOf(".") ); 
        String fileName = System.currentTimeMillis()+ext;

        //2.获取imgs目录在服务器的路径
        String dir = request.getServletContext().getRealPath("imgs");
        String savePath = dir+"/"+fileName; 

        //3.保存文件
        imgFile.transferTo( new File(savePath));

        //4.将图片的访问路径设置到book对象
        book.setBookImg("imgs/"+fileName);

        //5.调用service保存book到数据库
        return "/tips.jsp";
    }

}

文件下载

显示文件列表

list.jsp

  <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  
      
          Title
      
      
      
      
      
      
      
      
  
      

文件列表

BookController

@RequestMapping("/list")
@ResponseBody
public String[] listImgs(HttpServletRequest request){
    //从imgs目录下获取所有的图片信息
    String dir = request.getServletContext().getRealPath("imgs");
    File imgDir = new File(dir);
    String[] fileNames = imgDir.list();
    return fileNames;
}

实现文件下载

list.jsp

var htmlStr = "";

BookController

@RequestMapping("/download")
public void downloadImg(String fname, HttpServletRequest request, HttpServletResponse response) throws Exception {
    //从imgs目录找到当前文件
    String dir = request.getServletContext().getRealPath("imgs");
    String filePath = dir+"/"+fname;
    FileInputStream fileInputStream = new FileInputStream(filePath);

    response.setContentType("application/exe");
    response.addHeader("Content-Disposition","attachment;filename="+fname);

    IOUtils.copy(fileInputStream, response.getOutputStream());
}

以上就是详解SpringMVC中的日期处理和文件上传操作的详细内容,更多关于SpringMVC日期处理 文件上传的资料请关注脚本之家其它相关文章!

你可能感兴趣的:(详解SpringMVC中的日期处理和文件上传操作)