SpringMVC 框架总结

SpringMVC 的执行流程

在这里插入图片描述

1、 用户发送请求至前端控制器DispatcherServlet
2、 DispatcherServlet收到请求调用HandlerMapping处理器映射器。
3、 处理器映射器根据请求url找到具体的处理器, 生成处理器对象及处理器拦截器(如果有则生成)一并返回
给DispatcherServlet。
4、 DispatcherServlet通过HandlerAdapter处理器适配器调用处理器
5、 执行处理器(Controller, 也叫后端控制器)。
6、 Controller执行完成返回ModelAndView
7、 HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet
8、 DispatcherServlet将ModelAndView传给ViewReslover视图解析器
9、 ViewReslover解析后返回具体View
10、 DispatcherServlet对View进行渲染视图( 即将模型数据填充至视图中) 。
11、 DispatcherServlet响应用户

SpringMVC 的注解

1.@Controller 用于标记在一个类上, 使用它标记的类就是一个 SpringMVC Controller 对象。

2.@RequestMapping 是一个用来处理请求地址映射的注解, 可用于类或方法上。 用于类上, 表示类中的所有响应请求的方法都是以该地址作为父路径。

3.@Resource 和 @Autowired 都 是 做 bean 的 注 入 时 使 用 , 其 实 @Resource 并 不 是 Spring 的 注 解 , 它 的 包 是javax.annotation.Resource, 需要导入, 但是 Spring 支持该注解的注入。

相同点: 两者都可以写在字段和 setter 方法上。 两者如果都写在字段上, 那么就不需要再写 setter 方法。

不同点:@Autowired 为 Spring 提供的注解, 需要导入org.springframework.beans.factory.annotation.Autowired;

@Autowired 注解是按照类型( byType) 装配依赖对象, 默认情况下它要求依赖对象必须存在, 如果允许 null 值, 可以设置它的required 属性为 false。 如果我们想使用按照名称( byName) 来装配, 可以结合@Qualifier 注解一起使用。 如下:

public class TestServiceImpl {
@Autowired
@Qualifier("userDao")
private UserDao userDao;
} 

@Resource默认按照 ByName 自动注入, 由 J2EE 提供, 需要导入包 javax.annotation.Resource。 @Resource 有两个重要的属性:name 和 type, 而 Spring 将@Resource 注解的 name 属性解析为 bean 的名字, 而 type 属性则解析为 bean 的类型。 所以, 如果使用 name 属性, 则使用 byName 的自动注入策略, 而使用 type 属性时则使用 byType 自动注入策略。 如果既不制定 name 也不制定type 属性, 这时将通过反射机制使用 byName 自动注入策略。

注: 最好是将@Resource 放在 setter 方法上, 因为这样更符合面向对象的思想, 通过 set、 get 去操作属性, 而不是直接去操作属性。

4.@ModelAttribute 和 @SessionAttributes
@ModelAttribute 该 Controller 的所有方法在调用前, 先执行此@ModelAttribute 方法, 可用于注解和方法参数中, 可以把这个@ModelAttribute 特性, 应用在 BaseController 当中, 所有的 Controller 继承 BaseController, 即可实现在调用 Controller时, 先执行@ModelAttribute 方法。

@SessionAttributes 即将值放到 session 作用域中, 写在 class 上面。

5.@PathVariable用于将请求 URL 中的模板变量映射到功能处理方法的参数上, 即取出 uri 模板中的变量作为参数。

6.@requestParam 主要用于在 SpringMVC 后台控制层获取参数, 类似一种是request.getParameter(“name”), 它有三个常用参数:defaultValue = “0”, required = false, value = “isApp”; defaultValue 表示设置默认值, required 铜过 boolean 设置是
否是必须要传入的参数, value 值表示接受的传入的参数类型。

7.@ResponseBody
作用: 该注解用于将 Controller 的方法返回的对象, 通过适当的HttpMessageConverter 转换为指定格式后, 写入到 Response对象的 body 数据区。使用时机: 返回的数据不是 html 标签的页面, 而是其他某种格式的数据时( 如 json、 xml 等) 使用;

8.@Component相当于通用的注解, 当不知道一些类归到哪个层时使用, 但是不建议

9.@Repository用于注解 dao 层, 在 daoImpl 类上面注解

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值