8. 文件上传
8. 文件上传
SpringMVC 中对文件上传做了封装,我们可以更加方便的实现文件上传。从 Spring3.1 开始,对于文件上传,提供了两个处理器:
CommonsMultipartResolver
StandardServletMultipartResolver
第一个处理器兼容性较好,可以兼容 Servlet3.0 之前的版本,但是它依赖了 commons-fileupload 这个第三方工具,所以如果使用这个,一定要添加 commons-fileupload 依赖。
第二个处理器兼容性较差,它适用于 Servlet3.0 之后的版本,它不依赖第三方工具,使用它,可以直接做文件上传。
8.1 CommonsMultipartResolver
使用 Com...
7.3 参数绑定
7.3 参数绑定
7.3.1 默认支持的参数类型
默认支持的参数类型,就是可以直接写在 @RequestMapping 所注解的方法中的参数类型,一共有四类:
HttpServletRequest
HttpServletResponse
HttpSession
Model/ModelMap
这几个例子可以参考上一小节。
在请求的方法中,默认的参数就是这几个,如果在方法中,刚好需要这几个参数,那么就可以把这几个参数加入到方法中。
7.3.2 简单数据类型
Integer、Boolean、Double 等等简单数据类型也都是支持的。例如添加一本书:
首先,在 /jsp/ 目录下创建 add book.jsp 作为图书添加页面:
<%@ page ...
7.2 Controller 方法的返回值
7.2 Controller 方法的返回值
7.2.1 返回 ModelAndView
如果是前后端不分的开发,大部分情况下,我们返回 ModelAndView,即数据模型+视图:
@Controller
@RequestMapping("/user")
public class HelloController {
@RequestMapping("/hello")
public ModelAndView hello() {
ModelAndView mv = new ModelAndView("hello");
mv.addObject("username", "javaboy");
return mv;
...
7.1 @RequestMapping
7.1 @RequestMapping
这个注解用来标记一个接口,这算是我们在接口开发中,使用最多的注解之一。
7.1.1 请求 URL
标记请求 URL 很简单,只需要在相应的方法上添加该注解即可:
@Controller
public class HelloController {
@RequestMapping("/hello")
public ModelAndView hello() {
return new ModelAndView("hello");
}
}
这里 @RequestMapping(“/hello”) 表示当请求地址为 /hello 的时候,这个方法会被触发。其中,地址可以是多个,就是可以多个地址映射到同一个...
6. 处理器详解
6. 处理器详解
6.1 HandlerMapping
注意,下文所说的处理器即我们平时所见到的 Controller
HandlerMapping ,中文译作处理器映射器,在 SpringMVC 中,系统提供了很多 HandlerMapping:
HandlerMapping 是负责根据 request 请求找到对应的 Handler 处理器及 Interceptor 拦截器,将它们封装在 HandlerExecutionChain 对象中返回给前端控制器。
BeanNameUrlHandlerMapping
BeanNameUrl 处理器映射器,根据请求的 url 与 Spring 容器中定义的 bean 的 name 进行匹配,从而从 Spring...
5. DispatcherServlet
5. DispatcherServlet
5.1 DispatcherServlet作用
DispatcherServlet 是前端控制器设计模式的实现,提供 Spring Web MVC 的集中访问点,而且负责职责的分派,而且与 Spring IoC 容器无缝集成,从而可以获得 Spring 的所有好处。DispatcherServlet 主要用作职责调度工作,本身主要用于控制流程,主要职责如下:
文件上传解析,如果请求类型是 multipart 将通过 MultipartResolver 进行文件上传解析;
通过 HandlerMapping,将请求映射到处理器(返回一个 HandlerExecutionChain,它包括一个处理器、多个 HandlerInterc...
4. SpringMVC 中的组件
4. SpringMVC 中的组件
1.DispatcherServlet:前端控制器
用户请求到达前端控制器,它就相当于 mvc 模式中的c,DispatcherServlet 是整个流程控制的中心,相当于是 SpringMVC 的大脑,由它调用其它组件处理用户的请求,DispatcherServlet 的存在降低了组件之间的耦合性。
2.HandlerMapping:处理器映射器
HandlerMapping 负责根据用户请求找到 Handler 即处理器(也就是我们所说的 Controller),SpringMVC 提供了不同的映射器实现不同的映射方式,例如:配置文件方式,实现接口方式,注解方式等,在实际开发中,我们常用的方式是注解方式。
3.Handler:处理器
...
2. HelloWorld
2. HelloWorld
接下来,通过一个简单的例子来感受一下 SpringMVC。
1.利用 Maven 创建一个 web 工程(参考 Maven 教程)。
2.在 pom.xml 文件中,添加 spring-webmvc 的依赖:
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>RELEASE</version>
</depende...
1. SpringMVC 简介
1. SpringMVC 简介
1.1 Spring Web MVC是什么
Spring Web MVC 是一种基于 Java 的实现了 Web MVC 设计模式的请求驱动类型的轻量级 Web 框架,即使用了 MVC 架构模式的思想,将 web 层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发,Spring Web MVC 也是要简化我们日常 Web 开发的。在 传统的 Jsp/Servlet 技术体系中,如果要开发接口,一个接口对应一个 Servlet,会导致我们开发出许多 Servlet,使用 SpringMVC 可以有效的简化这一步骤。
Spring Web MVC 也是服务到工作者模式的实现,但进行可优化。前端控制器是 Dispatc...
共计 20 篇文章,2 页。