requestBodyresponseBody

  requestBody把前台页面传递JSON格式数据强制转换JavaBean

  responseBody在后台把javabean转换成JSON格式的数据返回页面

  这两个注解不能直接使用,需要导入依赖Jackson的jar

<dependency>

<groupId>com.fasterxml.jackson.core</groupId>

<artifactId>jackson-core</artifactId>

<version>2.9.2</version>

</dependency>

<dependency>

<groupId>com.fasterxml.jackson.core</groupId>

<artifactId>jackson-databind</artifactId>

<version>2.9.2</version>

</dependency>

配置JSON格式的转换

  在适配器设置对JSON数据格式的支持(注:使用<mvc:annotation-driven />则不用配置)

  

  如果在web.xml配置的DIspatcherServleturl-patten”/”,意味着所有请求(包括静态资源)都被映射到DIspatcherServlet,为了正确处理资源,需要在Spring MVC配置文件添加resources元素

    例:配置才<mvc:resources>能引入js文件

     

  请求JSON响应JSON

    Controller部分代码如下:

    

    jsp页面部分代码如下:

    

  请求POJO响应JSON

    Controller部分代码如下:

    

    jsp页面部分代码如下:

    

使用FastJson进行JSON处理

  

引入jar

  fastjson-x.x.xx.jar

请求页面参考:   

  $.ajax({

    url:path+””,      //请求的url

    type:”post/get”,

    data:{xx:xx},            //请求参数

    dataType:”json”,    //请求返回的数据类型

    success:function(data){    //data:返回的json对象

    }

  })

controller页面参考:

  @RequestMapping(“xxx”)

  @ResponseBody

  public Object userById(Integer id){

    User user = userService.getUserById(id);

    //将数据转换为JSON对象

    String myjson = JSON.toJSONString(user);

    return myjson;

  }

  解决JSON数据传递的日期格式问题

    在pojo时间属性上添加 @JSONField(format=”yyyy-MM-dd”)

    @DateTimeFormat(patterns=”yyyy-MM-dd”)

配置全局异常处理

   <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">

<property name="exceptionMappings"> //植入该类的内置参数

<props>

<!-- 定义自定义异常类,可以定义多个异常并设置异常逻辑视图名-->

        <prop key="java.lang.RuntimeException">error(逻辑视图名)</prop>

</props>

</property>

</bean>

  在逻辑视图页面使用${exception.message } 获取异常信息

SpringMVC表单标签

  Spring提供的轻量级标签库

  可以在JSP页面中渲染HTML元素的标签

  用法:

    必须在JSP页面的开头声明taglib指令

    <%@ taglib uri=”http://www.springframework.org/tags/form” prefix=”fm”%>

    引入标签声明之后使用Spring表单标签

     

      

          

    

服务器端的数据效验

  利用Spring自带的验证框架

  利用JSR 303实现

  Java为Bean数据合法性效验所提供的标准框架

  Spring MVC支持JSR 303标准的效验框架

  JSR 303通过Bean属性上标注效验注解指定效验规则,并通过标准的验证接口对Bean进行验证:http://jcp.org/en/jsr/detail?id=303

  Spring本身没有提供JSR 303的实现

  实现者:Hibernate Validator  http://hibernate.org/validator

  

实现步骤:

  加入jar文件

   

  修改POJO   

    给bean需要验证的属性增加相应的效验注解

    

    

      

  页面显示:

        

SpringMVC单文件上传

  MultipartResolver接口

    用于处理上传请求,将上传请求包装成可以直接获取文件的数据,从而实现操作.

  两个实现类

    StandardServletMultipartResolver

      使用了Servlet3.0标准的上传方式

    CommonsMultipartResolver

      使用了Apache的commons-fileUpload来完成具体的上传操作

  实现步骤:

    1.导入jar文件

      

      commons-lang-x.x.jar; 获取系统随机数(可忽略)

      模拟开发跨服务器上传文件时使用的包

      

    Mavne代码:

<dependency>

<groupId>commons-io</groupId>

<artifactId>commons-io</artifactId>

<version>2.4</version>

</dependency>

<dependency>

<groupId>commons-fileupload</groupId>

<artifactId>commons-fileupload</artifactId>

<version>1.3.1</version>

</dependency>

<-- 跨服务器上传maven -->

<dependency>

<groupId>com.sun.jersey</groupId>

<artifactId>jersey-client</artifactId>

<version>1.19</version>

</dependency>

<dependency>

<groupId>com.sun.jersey</groupId>

<artifactId>jersey-core</artifactId>

<version>1.19</version>

</dependency>

  

  2.配置MultipartResolver(springmvc-servlet.xml)

    使用CommonsMultipartResolver配置一个MultipartResolver解析器

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">

<!-- 配置上传文件大小上限,单位为字节 -->

<property name="maxUploadSize" value="5000000"></property>

<!-- 配置请求编码格式,默认为ISO-8859-1 -->

<property name="defaultEncoding" value="UTF-8"></property>

</bean>

  3. 编辑文件上传表单页

    设置上传方式 method=”post”,enctype=”multipart/from-data”;

    编写上传文件的input type=”file” name=”设置文件传输name” 

  4. 编写控制器,处理方法

    编写接收添加方法接收文件

    参数为:xxx (@RequestParam(value=”设置文件传输name”) MultipartFile picture);

    定义文件路径

    String idPicPat = null;

    判断文件是否为空:file.isEmpty()

    设置储存路径:(地址使用自适应路径分隔符)

    String path = requrest.getSession().getServletContext.getRealPath(“statics”+  File.separator + “uploadfiles”);

    获取原文件名

    String oldFileName = picture.getOriginalFilename();

    获取文件后缀

    String prefix = FilenameUtils.getExtension(oldFileName );

    获取上传文件大小进行判断

    int fileSize =  5000000; picture.getSIze();获得文件上传大小,进行判断

    不符合则返回页面并添加提示信息

    判断文件后缀是否符合图片格式

    prefix.equalsIgnoreCade(“jpg”) || prefix.equalsIgnoreCade(“jpeg”) ||

    prefix.equalsIgnoreCade(“png”) || prefix.equalsIgnoreCade(“pneg”) ||

    不符合则返回页面并添加提示信息

    设置文件名

    StringBuffer sb = new StringBuffer();

//获取事件至毫秒

SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");

sb.append(sdf.format(new Date()));

Random rd = new Random();

for (int i = 0; i < 3; i++) {

sb.append(rd.nextInt(8));

}

    String fileName = sb.toString()+”_picture.jpg”

    创建新文件对象

    File targetFile = new File(path,fileName );

    判断文件夹是否存在

    if(!targetFile.exists()){

      //没有则自动创建

      targetFile.mkdirs();

    }

    //上传->接收用户对象上传的文件流进行保存

    picture.transferTo(targetFile);

    //传入到数据库的绝对路径

    idPicPath = path+File.separator+fileName;

    

多文件上传采用数组接收,循环迭代即可

如果是跨服务器上传参考:使用jersy实现跨服务器上传

SpringMVC高级课程的更多相关文章

  1. (转)SpringMVC学习(六)——SpringMVC高级参数绑定与@RequestMapping注解

    http://blog.csdn.net/yerenyuan_pku/article/details/72511749 高级参数绑定 现在进入SpringMVC高级参数绑定的学习,本文所有案例代码的编 ...

  2. SpringMVC框架 课程笔记

    SpringMVC框架 课程笔记 第0章 SpringMVC框架的核心内容 1.SpringMVC 概述 2.SpringMVC 的 HelloWorld 3.使用 @RequestMapping 映 ...

  3. SpringMVC学习笔记之二(SpringMVC高级参数绑定)

    一.高级参数绑定 1.1 绑定数组 需求:在商品列表页面选中多个商品,然后删除. 需求分析:功能要求商品列表页面中的每个商品前有一个checkbok,选中多个商品后点击删除按钮把商品id传递给Cont ...

  4. spring-mvc高级技术

    Spring MVC高级技术包括但不限于web.xml配置.异常处理.跨重定向请求传递数据 1.web.xml文件的配置 <!DOCTYPE web-app PUBLIC "-//Su ...

  5. IT大数据服务管理高级课程(IT服务,大数据,云计算,智能城市)

    个人简历 金石先生是马克思主义中国化的研究学者,上海财经大学经济学和管理学硕士,中国民主建国会成员,中国特色社会主义人文科技管理哲学的理论奠基人之一.金石先生博学多才,对问题有独到见解.专于工作且乐于 ...

  6. 编程学习笔记(第三篇)面向对象技术高级课程:绪论-软件开发方法的演化与最新趋势(3)软件开发的现状、UML扩展

    一.软件开发的现状 软件领域正在发生一个巨变,特别是近几年来,软件领域正在发生翻天覆地的变化. 这一变化主要以这个云 + 端大数据, 这些是随着目前最先进的一些技术的产生而产生的. 随着这些新的技术以 ...

  7. SpringMVC高级参数绑定(数组和List)

    本节内容: 参数绑定之数组 将表单的数据绑定到List 复制下上篇博客中的工程,作为今天开发的工程. 一.参数绑定之数组 1. 需求 在商品列表页面选中多个商品,然后删除. 2. 需求分析 功能要求商 ...

  8. 第7章—SpringMVC高级技术—不用web.xml,而使用java类配置SpringMVC

    不用web.xml,而使用java类配置SpringMVC DispatcherServlet是Spring MVC的核心,按照传统方式, 需要把它配置到web.xml中. 我个人比较不喜欢XML配置 ...

  9. 第7章—SpringMVC高级技术—处理multipart形式的数据

    处理multipart形式的数据 MultipartResolver 用于处理文件上传,当收到请求时 DispatcherServlet 的 checkMultipart() 方法会调用 Multip ...

随机推荐

  1. Session&Cookie 的介绍和使用

    Session介绍与使用 1.Session基本介绍 Session:在计算机中,尤其是在网络应用中,称为“会话控制”.Session 对象存储特定用户会话所需的属性及配置信息.这样,当用户在应用程序 ...

  2. [转载]【BlackHat 2017】美国黑客大会首日议题汇总,演讲PPT下载也在这里

    今年是 Black Hat 举办的第 20 个年头,高温酷暑也挡不住全世界黑客和安全人员奔赴拉斯维加斯的热情.毕竟这可是一年一度的盛大狂欢啊.今年的 BHUSA 从美国东部时间时间 7 月 22 日( ...

  3. Django学习系列之Form表单结合ajax

      Forms结合ajax Forms的验证流程: 定义用户输入规则的类,字段的值必须等于html中name属性的值(pwd= forms.CharField(required=True)=<i ...

  4. clamav完整查杀linux病毒实战(摘抄)

    http://dadloveu.blog.51cto.com/blog/715500/1882521 Linux服务器一直给我们的印象是安全.稳定.可靠,性能卓越.由于一来Linux本身的安全机制,L ...

  5. react 项目实战(九)登录与身份认证

    SPA的鉴权方式和传统的web应用不同:由于页面的渲染不再依赖服务端,与服务端的交互都通过接口来完成,而REASTful风格的接口提倡无状态(state less),通常不使用cookie和sessi ...

  6. 怎样托管你的项目到github上具体教程

    本文将具体介绍怎样托管你的项目到github上 转载请标明出处: http://blog.csdn.net/lxk_1993/article/details/50441442 本文出自:[lxk_19 ...

  7. Myeclipse的优化方法

    近期在实习,公司给分配了新的电脑,可是不知道怎么弄得,总是弄得非常卡,没办法仅仅有自己好好整理一下电脑了,另外.为了提高编程的效率.顺便也把Myeclipse也优化了一下. 第一步: 取消自己主动va ...

  8. Struts2 整合jQuery实现Ajax功能(1)

    技术领域非常多东西流行,自然有流行的道理.这几天用了jQuery,深感有些人真是聪明绝顶,能将那么多技术融合的如此完美. 首先明白个概念: jQuery是什么:是使用javascript语言开发的,用 ...

  9. 【bzoj4602】[Sdoi2016]齿轮

    dfs,连边,边权为比值,赋值搜索,遇到矛盾时退出 #include<algorithm> #include<iostream> #include<cstdlib> ...

  10. LightTable的结构(二)

    这节主要研究下object的一个属性,behaviors 定义一个behavior需要提供name,trigger,reaction (behavior ::on-close-destroy :tri ...