• SpringMVC高级


    首先先完成SpringMVC基础配置,详细见https://www.cnblogs.com/maomaodesu/p/12268886.html

    文件下载

    web中的文件下载,两个头一个流:Content-Type,Content-Disposition,文件的输入流和respones的输出流对接

    文件上传(以单个文件为例,多文件上传同理)

    SpringMVC集成了FileUpload组件,可以用于文件上传

    文件上传前台的条件

    提交方式必须是post

    表单form中必须有文件项,表单项type="file"

    表单form的enctype属性是多部分表单格式,即enctype="multipart/form-data"

    多部分的表单格式:

    把表单根据某个随机生成的分隔符分割为多个部分。这些部分,有的是普通表单项-->key value的字符串键值对,有的是文件项(就是我们上传的文件,文件项中内容更多,包含文件名、文件长度、文件类型、文件内容...)

    文件上传原理:

    文件上传后台接收数据的操作

    引入FileUpload的依赖

    配置文件上传时的多部分表单的解析器

    UserController类:uploadMethod函数的参数位置用MultipartFile类型接收,其他普通项(如String)与以前接收方式一致。文件项MultipartFile对象内部封装了提交的文件的信息

    结果:

    空文件夹dataStore就有了文件

    打印结果:

    实际开发的时候,我们通过ServletContext对象可以获取服务器中的某个目录的绝对路径。

    拦截器

    拦截器的作用

    SpringMVC拦截器interceptor和filter的区别

    类比web中的过滤器Filter理解,它们的功能类似。

    实现拦截器:

    Controller类:

    编写拦截器类实现HandlerInterceptor接口


    在springmvc的配置文件中进行配置(配置拦截的路径,一般配置为Controller的方法 例如:/user/**)

    执行流程

    preHandle方法,拦截器执行的第一个方法,返回值决定了是否放行。

    当preHandle方法放行时,目标资源执行,执行后,返回ModelAndView。然后到达postHandle方法中。在此处并没有真正渲染视图或返回响应,意味着此处可以修改视图名称或modle中的数据。

    postHandle执行完成之后,才会去渲染视图,返回响应。

    当所有步骤执行完成后,执行afterCompletion方法。

    三个interceptor是如何执行的?


    异常处理器

    异常处理思路:

    异常处理的原则:

    编码时,尽量减少异常的产生

    明确知道某些异常是具有提示作用的,可以自行捕获处理(获取参数并查找,当参数错误时查找不到结果会抛出异常来作为提示)

    其他的一些异常,无法预知的或者需要通用处理的(错误),这些异常我们使用统一的异常处理器来处理。

    简单异常映射处理器SimpleMappingExceptionResolver:

    只能做错误页面跳转,不灵活

    自定义异常处理器HandlerExceptionResolver:

    写一个类实现HandlerExceptionResolver接口,实现其中的resolveException方法处理异常

    把异常处理器交给springmvc框架管理,把自己写的类配置到springmvc的容器中即可,后续所有未捕获的异常会交由springmvc的异常处理器进行处理

  • 相关阅读:
    路由网址这是mvc时代系列之三:网络路由与ASP.NET MVC生命周期(上)
    调用代码JCFXBL与WebView整合打造安卓应用服务平台
    服务安装Mongodb应用实战教程:windows下安装与安全策略配置
    方法选择Android从SD卡中选择图片的三种方法及自定义系统选择框标题的方法
    图层照片如何扣头发丝
    对象方法JavaScript脚本语言初解
    数据库方法django中ModelForm学习系列一~save方法
    团队位置《楚汉传奇》聊管理
    包查找*.so对应的rpm包
    现实世界的Windows Azure:就Metanga采访MetraTech公司CEO,Scott Swartz先生
  • 原文地址:https://www.cnblogs.com/maomaodesu/p/12300769.html
Copyright © 2020-2023  润新知