SpringMVC学习之旅-应用掌握篇(6)

160 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第36天,点击查看活动详情


写在前面

当我们学习了spring框架之后,基本上来说,已经是打好了一个良好得基础了。

但是距离一个企业的基本开发需要掌握的框架,还是得经过不断得学习,才行。

这不,我们继续学习下一个框架SpringMVC

SpringMVC这个框架,一般来说,用来作为我们项目得Controller层,用来接收用户得输入,然后选择相应得视图回显展示给用户。

MVC作为WEB项目开发的核心环节,正如三个单词的分解那样,C(控制器)将V(视图、用户客户端)与M(javaBean:封装数据)分开构成了MVC。

对于以前得项目来说,还有出现Struts得,但现在基本都很少了。

Struts1(现在一般不用),Struts2(一般老项目使用)等等。

这不,接下来就是spring mvc框架的学习之旅了,希望可以帮助到大家。

一、参数绑定处理

1.1 自定义日期参数绑定

对于springmvc无法解析的参数绑定类型,比如[年月日时分秒格式的日期]绑定到Date类型会报错,此时需要自定义[参数转换器]进行参数绑定。

  • Converter代码
public class DateConverter implements Converter<String, Date> {

    @Override
    public Date convert(String source) {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
        try {
            return simpleDateFormat.parse(source);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return null;
    }
}
  • Converter配置
<!-- 加载注解驱动 -->
<mvc:annotation-driven conversion-service="conversionService"/>

<!-- 转换器配置 -->
<bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">

    <property name="converters">
        <set>
            <bean class="com.llsydn.ssm.controller.converter.DateConverter"/>
        </set>
    </property>
</bean>

1.2 文件类型参数绑定

SpringMVC 文件上传的实现,是由 commons-fileupload 这个第三方jar包实现的。

  • 加入依赖包
<dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    <version>1.3.1</version>
</dependency>
  • 上传页面

JSP中的form表单需要指定enctype="multipart/form-data"

  • 配置Multipart解析器

在 springmvc.xml 中配置 multipart 类型解析器:

<!-- multipart类型解析器,文件上传 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <!-- 上传文件的最大尺寸 5M-->
    <property name="maxUploadSize" value="5242880"/>
</bean>
  • Controller类代码
@RequestMapping("fileupload")
public String findUserById(MultipartFile uploadFile) throws Exception {

    // 编写文件上传逻辑(mvc模式和三层结构模式)
    // 三层模式:表现层(controller、action)、业务层(service、biz)、持久层(dao、mapper)
    // MVC模式主要就是来解决表现层的问题的(原始的表现层是使用Servlet编写,即编写业务逻辑,又编写视图展示)
    if (uploadFile != null) {
        System.out.println(uploadFile.getOriginalFilename());

        // 原始图片名称
        String originalFilename = uploadFile.getOriginalFilename();

        // 如果没有图片名称,则上传不成功
        if (originalFilename != null && originalFilename.length() > 0) {

            // 存放图片的物理路径
            String picPath = "E:\\";
            
            // 获取上传文件的扩展名
            String extName =
            originalFilename.substring(originalFilename.lastIndexOf("."));
            
            // 新文件的名称
            String newFileName = UUID.randomUUID() + extName;

            // 新的文件
            File newFile = new File(picPath + newFileName);

            // 把上传的文件保存成一个新的文件
            uploadFile.transferTo(newFile);
            
            // 同时需要把新的文件名更新到数据库中
            // ...
        }
    }
    return "文件上传成功";
}

好了,以上就是SpringMVC学习之旅-应用掌握篇(6) 的全部内容了。

今天就先到这里了,后面的内容,留下次分享了,先溜了!!!^_^

如果觉得写得不错的,帮忙点赞、评论、收藏一下呗!!!

image.png