Spring MVC总结

1、Spring MVC快速入门
1.1 Spring MVC的介绍
Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发,Spring Web MVC也是要简化我们日常Web开发的。
1.2 Spring MVC的优势
1、清晰的角色划分:前端控制器(DispatcherServlet)、请求到处理器映射(HandlerMapping)、处理器适配器(HandlerAdapter)、视图解析器(ViewResolver)、处理器或页面控制器(Controller)、验证器( Validator)、表单对象(Form Object 提供给表单展示和提交到的对象就叫表单对象)。
2、由于命令对象就是一个POJO,无需继承框架特定API,可以使用命令对象直接作为业务对象;
3、和Spring 其他框架无缝集成,是其它Web框架所不具备的;
4、可适配,通过HandlerAdapter可以支持任意的类作为处理器;
5、可定制性,HandlerMapping、ViewResolver等能够非常简单的定制;
6、功能强大的数据验证、格式化、绑定机制;
7、利用Spring提供的Mock对象能够非常简单的进行Web层单元测试;
8、本地化、主题的解析的支持,使我们更容易进行国际化和主题的切换。
9、RESTful风格的支持、简单的文件上传、约定优于配置的契约式编程支持、基于注解的零配置支持等等。
1.3 MVC三元组的概念
MVC (Model-View-Controller):
Model:组件等价于 实体层 + 业务逻辑层 + 持久层
View(视图):负责进行模型的展示,一般就是我们见到的用户界面,客户想看到的东西。
Controller(控制器):接收用户请求,委托给模型进行处理(状态改变),处理完毕后把返回的模型数据返回给视图。

2、Spring MVC高级配置
在这里插入图片描述2.1SpringMVC工作流程
1.客户端请求提交到DispatcherServlet(核心控制器)
2. 由DispatcherServlet控制器查询一个或多个HandlerMapping,找到处理请求的Controller
3. DispatcherServlet将请求提交到Controller
4. Controller调用业务逻辑处理后,返回ModelAndView
5. DispatcherServlet查询一个或多个ViewResoler视图解析器,找到ModelAndView指定的视图
6. 视图负责将结果显示到客户端。

2.2 Spring MVC方法的返回值类型
2.21 String类型作为返回值类型
1、如果返回值为null,那么以请求名作为视图名进行跳转
2、如果指定返回值,那么按照指定返回值作为视图名进行跳转,可以通过 model,modeMap携带数据。
3、如果返回值带有forward或者redirect前缀,那么将会进行相应的请求或重 定向,不过不能通过mvc的数据模型携带数据,可以通过ServletApi携带数据。
2.2.2 ModelAndView作为返回值类型
1.当返回为null时,页面不跳转。
2.当返回值没有指定视图名时,默认使用请求名作为视图名进行跳转。
3.当返回值指定了视图名,程序会按照视图名跳转。
2.2.3 Object作为返回值类型
AJAX的提交请求,后续介绍。
2.3 Spring MVC的自动装配
2.3.1 请求参数的自动类型转换
注意点*:控制器Controller中的方法参数名称必须和表单元素的name属性值保持一致
2.3.2 请求参数自动装配为POJO对象
2.3.3 @RequestParam注解
@RequestParam的作用是,当表单元素与控制器方法的参数不匹配的情况下,使用@RequestParam注解声明参数名称。
@RequestParam 有三个属性:
(1)value:请求参数名(必须配置)
(2)required:是否必需,默认为 true,即 请求中必须包含该参数,如果
没有包含,将会抛出异常(可选配置)
(3)defaultValue:默认值,如果设置了该值,required 将自动设为 false,
无论你是否配置了required,配置了什么值,都是 false(可选配置)

*为表单设置出生日期的表单元素 控制器方法的参数,这里的日期只能是yyyy/mm/dd
2.3.4 RESTFUL风格的参数传递
在使用 RESTful 风格之前,我们如果想要增加一条商品数据通常是这样的:

 addProduct?name=xxx
但是使用了 RESTful 风格之后就会变成:
addProduct/xxx
   这就变成了使用同一个 URL ,通过约定不同的 HTTP 方法来实施不同的业务。
    在Spring MVC中使用@PathVariable注解实现RESTFUL风格的参数传递
       *在页面上添加对应的超链接,内容如下
<a href="/person/restful/12">获取12</a>
       *添加对应的控制器方法
//{id}:作为参数占位符
@RequestMapping("/restful/{id}")
//@PathVariable声明URL中的id参数
public String restful(@PathVariable("id")int id){
    System.out.println(id);
    return "hello";
}

2.3.5 配置Spring MVC的编码过滤器

   与Servlet一样,Spring MVC在处理请求和响应时也会发生中文乱码问题,

这时需要我们在web.xml文件中配置编码过滤器CharacterEncodingFilter
配置web.xml文件如下:

<filter>
   <filter-name>characterEncodingFilter</filter-name>
   <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
   <init-param>
      <param-name>encoding</param-name>
      <param-value>UTF-8</param-value>
   </init-param>
   <init-param>
      <param-name>forceEncoding</param-name>
      <param-value>true</param-value>
   </init-param>
</filter>

<filter-mapping>
   <filter-name>characterEncodingFilter</filter-name>
   <url-pattern>/*</url-pattern>
</filter-mapping>

2.3.6 使用@InitBinder来处理Date参数
在Spring MVC中,默认可以识别Date类型的参数。但日期格式必须是yyyy/mm/dd,如果是yyyy-mm-dd或者其他格式,Spring MVC则无法自动装配成日期格式的参数。所以需要我们配置参数绑定转换器InitBinder。

未完待续。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值