8、使用 Spring Boot 搭建的一个 Spring MVC 示例(持续更新中)

2017-12-30
阅读 1 分钟
2.9k
加了一个基于 Spring Boot 的简单示例。代码在这里:Spring Boot Example。示例是基于 Gradle 构建的,所以跑起来需要使用 Gradle。 演示了以下内容: Spring MVC 基本用法 基于注解的 handler (@Controller/@RestController) 基于 bean 名字的 handler 异常处理 异步请求:Callable 和 DeferredResult Bean 作用域 事...

7.2、使用基于 Servlet 3.0 的文件上传

2016-11-06
阅读 3 分钟
3.1k
Spring 的内置 multipart 支持用于处理 Web 应用程序中的文件上传。你可以通过使用插件化的MultipartResolver对象来启用 multipart 支持,它定义在包org.springframework.web.multipart中。Spring 提供了一个MultipartResolver的实现,使用了 Apache 的 Commons FileUpload 和一些其他的东西,用于对 Servlet 3.0 的 mul...

7.1、使用Commons Fileupload上传文件

2016-10-29
阅读 3 分钟
2.8k
最近家里的网出现了莫名其妙的问题,连不上码云了,所以把示例迁到了 github 上。本示例见这个项目的 master 分支的 ZestMultipartController.java。

6.3、Excel 视图示例

2016-10-06
阅读 3 分钟
2.5k
注意到上面配置的XmlViewResolver指向一个mvc-views.xml文件。这个mvc-views.xml文件是一个 Spring 配置文件,在这个文件中,配置我们上面定义的XlsView类的 Bean,要指定 id,后面会使用。下面在类路径下添加这个文件:

6.2、串连ViewResolver(Chaining ViewResolvers)

2016-09-29
阅读 2 分钟
1.7k
Spring 支持多个视图解析器。因此,你可以串连解析器,并且在特定的情况下重写指定视图。你可以通过在应用程序上下文中添加多个视图解析器来把它们串连起来,并且如果有必要的话,也可以设置 order 属性来指定顺序。注意,order 属性值越大,视图解析器在链中的位置越靠后。

6.1、解析视图

2016-09-29
阅读 3 分钟
2.2k
所有的 Web 应用的 MVC 框架都提供了一种处理视图的方式。Spring 提供的视图解析器,允许你在浏览器中呈现模型的同时,不依赖任何一种特殊的视图技术。比如现成的,Spring 允许你使用 JSP、FreeMarker 模板和 XSLT 视图。关于如何集成并使用几种不同的视图,见视图技术。

5、处理方法映射(Handler Mapping)

2016-09-28
阅读 4 分钟
4.6k
Spring 在之前的版本中,用户要在 Web 应用程序上下文中定义一个或多个 HandlerMapping Bean 用于把进来的 Web 请求映射到合适的处理方法。在引进注解控制器之后,你通常不需要这么做,因为 RequestMappingHandlerMapping 自动在所有控制器中寻找 @RequestMapping 注解。但是要记住,所有继承自 AbstractHandlerMapping ...

4.1、异步请求处理(TODO)

2016-09-28
阅读 2 分钟
3.6k
Spring MVC 3.2 中引进了基于异步请求处理的 Servlet 3。除了返回一个值,一个控制器方法现在可以返回一个java.util.concurrent.Callable并生产来自 Spring MVC 管理的线程的返回值。同时主 Servlet 容器线程退出、释放并允许处理其他请求。Spring MVC 在 TaskExecutor 的帮助下,在一个独立的线程中调用 Callable,当 C...

3.14、使用@ControllerAdvice和@RestControllerAdvice通知控制器

2016-09-26
阅读 1 分钟
26.2k
注解@ControllerAdvice是一个组件注解(component annotation),它允许实现类通过类路径扫描被自动检测到。当使用 MVC 命名空间或者 MVC Java 配置时自动启用。

3.13、@InitBinder 和 WebDataBinder

2016-09-26
阅读 2 分钟
10.7k
用@InitBinder注解的控制器方法,允许你直接在你的控制器类中配置 Web 数据绑定。@InitBinder标记初始化WebDataBinder的方法,WebDataBinder被用于填充被注解的处理方法的命令和表单对象参数。

3.12、@CookieValue 和 @RequestHeader

2016-09-26
阅读 2 分钟
2.5k
注解@CookieValue允许一个方法参数允许把一个方法参数绑定到一个 HTTP cookie 值上。我们来考虑下下面的一个从 HTTP 请求中接受到的 cookie:

3.11、@SessionAttribute 和 @RequestAttribute

2016-09-25
阅读 2 分钟
7.9k
如果你需要访问预先存在的、以全局方式管理的会话属性的话,比如在控制器之外(比如通过过滤器)可能或不可能存在在一个方法参数上使用注解@SessionAttribute:

3.10、在方法参数上使用@ModelAttribute注解

2016-09-24
阅读 3 分钟
19.5k
一个用在方法参数上的@ModelAttribute注解指示了参数应该从模型(这里所说的“模型”指 Model)中获取。如果模型中不存在,参数会首先被实例化,然后添加到模型中。一旦模型中存在,这个参数的字段会被所有的名字匹配的请求参数所填充。这在 Spring MVC 中叫做数据绑定,它能够把你从要对每一个字段进行类型转换的繁重体力...

3.9、在方法上使用@ModelAttribute注解

2016-09-22
阅读 2 分钟
3.5k
这一部分翻译自 Spring 5.0.0.M1 文档中的 Using @ModelAttribute on a method 一节。这一节的演示示例在这个项目的 mvc 分支中的 ModelAttrController.java 文件中。

3.8、使用 HttpEntity

2016-09-20
阅读 1 分钟
10.8k
HttpEntity和@RequestBody和@ResponseBody很像。出了能够访问请求和响应体,HttpEntity(和子类ResponseEntity)也能访问请求(和响应)头,就像这样:

3.7、@ResponseBody 和 @RestController

2016-09-14
阅读 1 分钟
4.6k
注解@ResponseBody和@RequestBody很像。这个注解可以放到一个方法中,指示返回类型应该直接被写进HTTP响应体中(而不是放到一个Model中、也不是翻译为一个视图名)。例如:

3.6、@RequestParam 和 @RequestBody

2016-09-13
阅读 3 分钟
5.8k
默认情况下,使用这个注解的参数是必须的,但是你可以通过设置@RequestParam的required属性为false来指定参数是可选的(如: @RequestParam(path="id", required=false))。

3.5、矩阵变量

2016-09-11
阅读 2 分钟
5.2k
    根据 URI 规范 RFC 3986 中 URL 的定义,路径片段中可以可以包含键值对。规范中没对对应的术语。一般 “URL 路径参数” 可以被应用,尽管更加独特的 “矩阵 URI” 也经常被使用并且相当有名。在 Spring MVC 它被成为矩阵变量

3.4、路径模式与后缀匹配

2016-09-09
阅读 3 分钟
10.7k
    这一部分是对 Spring 5 文档的直接翻译,连接是这个。这一部分的示例不再贴代码,请到这个项目的 mvc 分支下查看,本篇示例的控制器名称是 PathPatternController。

3.3、URI 模板模式(Template Pattern)

2016-09-08
阅读 3 分钟
7.3k
    这一部分是对 Spring 5 文档的直接翻译,连接是这个。这一部分的示例不再贴代码,请到这个项目的 mvc 分支下查看,本篇示例的控制器名称是 URITemplateController。

3.2、组合的@RequestMapping变种

2016-09-07
阅读 3 分钟
14.1k
    Spring 4.3 中引进了下面的注解 @RequestMapping 在方法层级的变种,来帮助简化常用 HTTP 方法的映射,并更好地表达被注解的方法的语义。比如,@GetMapping可以读作 GET @RequestMapping。

3.1、定义一个控制器:使用 @Controller 和 @RequestMapping

2016-09-05
阅读 5 分钟
3.9k
    注解 @Controller 指定一个特定的类担任控制器的角色。Spring 不要求你集成任何控制器基类或者引用 Servlet API。不过,你仍然可以根据需要使用指定的 Servlet 特性。    注解 @Controller 对于被注解的类来说就像一个模板(stereotype),指示它的角色。收发器(dispatcher)为被映射的方法扫描被注解的类,并检测...

2. 为 HelloWorld 添加视图

2016-09-02
阅读 2 分钟
2.2k
在第一篇中,控制器返回一个视图路径,但是这个视图并没有映射到指定页面。这里简单地解决一下这个问题,为以后的测试做准备。关于 Spring MVC 的视图技术,以后再说。

1. Spring 5 MVC 的 HelloWorld

2016-09-01
阅读 10 分钟
5.5k
下面构建一个基于 Spring 5 的 Spring MVC 应用。文件组织图如下:使用工具:Spring Tool Suite 3.8(装有 Spring 插件的 Eclipse 也可以,建议最新版);Tomcat 8;JDK 8; Maven 3