• 深入浅出 SpringMVC 2 提升篇


    原创播客,如需转载请注明出处。原文地址:http://www.cnblogs.com/crawl/p/7697738.html 

    前言:

      本篇笔记是继 深入浅出 SpringMVC - 1 后的续篇,主要介绍了 SpringMVC 的实际小应用,包括 SpringMVC 的数据格式化使用 JSR 303 验证标准 在 SpringMVC 中进行数据的校验SpringMVC 结合 Ajax 在请求处理器中返回 JSONSpringMVC 的国际化及国际化错误消息的显示使用 SpringMVC 的进行文件的上传与下载在 SpringMVC 中自定义拦截器SpringMVC 中的异常处理Spring 整合 SpringMVC 进行了详细的介绍。

      笔记中提供了大量的代码示例,需要说明的是,大部分代码示例都是以图片的形式展示的,所有的图片都是来自本人所敲代码的截图,不足之处,请大家指正~

      若有疑惑或者需要本系列分享中的资料工具,敬请联系 qingqing_crawl@163.com

    十二、数据的格式化

    1. 时间日期格式化   时间日期的字符串 ---> Date 类型

    1)在 SpringMVC 的配置文件中配置:<mvc:annotation-driven /> 

    2)在 JavaBean 的对应 Date 类型的属性上添加 @DateTimeFormat(pattern="yyyy-MM-dd") 注解

    2. 数值的格式化

    1)在 SpringMVC 的配置文件中配置:<mvc:annotation-driven> 

    2)在 JavaBean 的对应数值类型的属性上添加 @NumberFormat(pattern="#,###,###.#") #代表数字

    3. 获取数据格式化出错信息:使用 BindingResult

    十三、使用 JSR 303 验证标准 在 SpringMVC 中进行数据的校验

    1. 加入 Hibernate Validate 的 jar 包:hibernate-validator-5.0.0.CR2\dist 路径下

    加入hibernate-validator-5.0.0.CR2\dist\lib\required 目录下的的出去 el 的另 3 个 jar 包

    2. 在 SpringMVC 的配置文件中配置 <mvc:annotation-driven />

    3.在 JavaBean 对应的属性中添加所需的注解

    4. 在 请求控制器对应的方法中为 JavaBean 添加 @Valid 注解

    5.出错之后页面的去向

    6.在 jsp 页面显示错误信息

    7. 定制和国际化错误信息

    1)创建国际化资源文件 i18n.properties

     

    2) 在 SpringMVC 的配置文件中配合国际化资源文件

    十四、SpringMVC 的请求处理器中返回 JSON

    1. 导入 3 个 jar 包:\jackson\SpringMVC_JSON 目录下的(此目录是楼主为了方便自定义的目录~~,大家只需注意一下的 jar 包)

     

    2. jsp 页面创建测试连接,发送 Ajax

    3. 请求处理器类的目标方法 直接返回所需要的数组或集合,并为目标方法添加 @ResponseBody 注解:

     

    补:HttpMessageConverter 的使用:

    1. @RequestBody 修饰入参     @ResponseBody 修饰方法  二者不必同时使用

    1)模拟文件上传操作:

    ① 表单准备:

    ② 目标方法

    2. HttpEntity<T> 修饰入参 和 ResponseEntity<T> 修饰返回值

    1)使用 ResponseEntity<T> 模拟文件下载操作

    十五、SpringMVC 的国际化

    进行国际化首先要配置 3 个国际化资源文件

     

    然后在 SpringMVC 的配置文件中配置国际化资源文件

     

    1. 在页面上能够根据浏览器语言设置的情况对文本(不是内容), 时间, 数值进行本地化处理 解决: 使用 JSTL 的 fmt 标签

    1)i18n.jsp 中

    2.如何在请求处理器类的目标方法中获取国际化资源文件 Locale 对应的消息 解决:在请求处理器类中注入 ResourceBundleMessageSource 的实例, 使用其对应的 getMessage 方法即可

    3.通过超链接切换 Locale, 而不再依赖于浏览器的语言设置情况

    1)jsp 页面配置超链接

     

    2)SpringMVC 的配置文件中配置 SessionLocaleResolver 和 LocaleChangeInterceptor 拦截器

     

    十六、SpringMVC 的文件上传与下载

    1.SpringMVC 中的文件上传依赖 apache-commons-fileupload 组件,所以要导入 jar 包 apache-commons\commons-fileupload-1.2.1\lib 下的第一个 jar 包

    2.apache-commons-fileupload 依赖于 commons-io ,所以导入 apache-commons\commons-io-2.0 下的 io 包

    3.SpringMVC 的配置文件中配置 MultipartResolver

    4.准备文件上传的表单

     

    5.请求处理器中编写目标方法

     

    补:文件的下载见 十五 节 补充中的第 2 小节

    十七、自定义拦截器

    1. 如何定义?

    1)创建一个拦截器类实现 HandlerInterceptor 接口,实现其中的方法

    2)在 SpringMVC 配置文件中进行配置

    2. 自定义拦截器中的三个方法

    3.拦截器的进一步配置

    十八、SpringMVC 中的异常处理

    1.在 SpringMVC 的配置文件中配置 <mvc:annotation-driven />

    2.模拟异常

    3.@ExceptionHandler 注解标注方法进行异常的处理

    4. @ControllerAdvice 注解用来标注异常处理类

    5. @ResponseStatus 既可以用来标注自定义异常类,也可以标注方法

    1)自定义异常类

    3)@ResponseStatus 修饰方法

    6. 在 SpringMVC 中使用 SimpleMappingExceptionResolve来映射异常

    1)模拟数组下标越界异常

    2)在 SpringMVC 的配置文件中进行映射异常

    十九、Spring 整合 SpringMVC

    1.是否需要整合?

    1)需要: 通常情况下, 类似于数据源, 事务, 整合其他框架都是放在 Spring 的配置文件中(而不是放在 SpringMVC 的配置文件中).实际上放入 Spring 配置文件对应的 IOC 容器中的还有 Service 和 Dao.

     2) 不需要: 都放在 SpringMVC 的配置文件中. 也可以分多个 Spring 的配置文件, 然后使用 import 节点导入其他的配置文件

    2.整合时常见问题及解决办法

    问题:若 Spring 的 IOC 容器和 SpringMVC 的 IOC 容器扫描的包有重合的部分, 就会导致有的 bean 会被创建 2 次.

    解决:

    1) 使 Spring 的 IOC 容器扫描的包和 SpringMVC 的 IOC 容器扫描的包没有重合的部分. (不方便实现)

    2.)可以使用 exclude-filter 和 include-filter 子节点来规定只能扫描的注解 

    3.SpringIOC 容器和 SpringMVC IOC 容器的关系

    SpringMVC 的 IOC 容器中的 bean 可以来引用 Spring IOC 容器中的 bean.反之则不行. Spring IOC 容器中的 bean 却不能来引用 SpringMVC IOC 容器中的 bean!

    -------------------------------------------------- Written by crawl~ Crawling on the way of programming. -------------------------------------------
  • 相关阅读:
    【转】正确设置php-fpm子进程用户,提高网站安全性防挂马
    Linux修改SSH端口,并禁止Root远程登陆
    [转]PHP5 session 详解
    【转】PHP调试开发工具你认识多少?
    [转]浅谈php web安全
    【笔记】InnoDB内存分配
    【转】推荐介绍几款小巧的Web Server程序
    【转】定时自动启动任务crontab命令用法
    Tornado笔记
    Python笔记:open函数和with临时运行环境(文件操作)
  • 原文地址:https://www.cnblogs.com/crawl/p/7697738.html
Copyright © 2020-2023  润新知