SpringMVC的工作流程与主要注解

在这里插入图片描述
文字描述:
1.用户发送请求到前端控制器(DispatcherServlet)
2.前端控制器请求处理器映射器(HandlerMapping)去查找处理器(Handler)
3.找到之后处理器映射器(HandlerMapping)向前端控制器返回执行链(HandlerExecutionChain)
4.前端控制器(DispatcherServlet)调用处理器适配器(HandlerAdapter)去执行处理器(Hander)
5.处理器适配器去执行Handler
6.处理器执行完后给处理器适配器返回ModelAndView。
7.处理器适配器向前端控制器返回ModelAndView.
8.前端控制器请求解析视图解析器(ViewResolver)去进行视图解析
9.视图解析器向前端控制器返回View。

SpringMVC组件
在这里插入图片描述
组件搭配模型图(大概流程)
在这里插入图片描述
SpringMVC原理
在这里插入图片描述
1、 客户端发送一个http请求给web服务器,web对http进行解析,如果匹配前端控制器(DispatcherServlet)的请求映射路径(在web.xml中指定),web容器将请求转交给前端控制器
2、 DispatcherServlet接收到这个请求之后根据请求的信息(包括url、http方法、请求报文头和请求参数cookie等)以及HandlerMapping的配置找到请求的处理器(Handler)
3、 DispatcherServlet根据HandlerMapping找到对应的Handler,将处理权交给Handler(Handler根据具据不同的需求进行处理,封装),返回一个ModelAndView返回给DispatcherServlet
4、 DispatcherServlet将Handler(Controller)返回的ModelAndView(逻辑视图)交给ViewResolver将逻辑视图转化为真正的视图View
5、 DispatcherServlet将真正的试图展现在客户端

**

SpringMVC注解

**
1、@Controller
在SpringMVC中,控制器Controller负责处理由DispatcherServlet分发的请求,它把用户请求的数据经过业务处理(XXXService)之后返回一个封装好的ModelAndView,然后返回给DispatcherServlet,然后交给ViewResolver,最后返回ModelView。注意:@Controller用于标注类,需要导入:org.springframework.stereotype.Controller
2、@RequestMapping
处理请求地址映射注解,可以用于类或者方法上。如果该注解放在类上则表示该路径是此类下所有方法的父路径,常用属性:
○1value:默认属性(当不指定属性时默认是该属性@RequestMapping(“test”)=@RequestMapping(value=”test”))
○2method:指定请求的method类型,RequestMethod.GET、RequestMethod.POST、RequestMethod.PUT、RequestMethod.DELETE
Get与Post的区别
A:get是从服务器上获取参数、Post是向服务器传送数据
B:在客户端,get方式在通过URL提交数据,数据在url中可以看到;Post方式,数据放置在HTML HEADER内提交
C:对于get方式,服务器端用Request.QueryString获取变量的值,对于Post方式,服务器端用Request.From获取提交的数据
D:get方式提交的数据最多只能有1024字节,而post则没有限制
E:post的安全性高于get
○3consumes:指定处理请求的提交内容类型(Content-Type),例如:application/json,text/html
○4produces:指定返回的内容类型,仅当request请求头中的类型包含该指定类型才返回
○5params:指定request中必须包含某些参数值是,才让该方法处理
○6headers:指定request中必须包含某些制定的header值,才能让该方法处理请求
3、@Resource、@Autowired
是bean注入时使用、@Resource需要导入javax.annotation.Resource
两者共同点:两者都可以写在字段和setter方法。两者如果都写在字段上、那么就不需要再写setter方法
不同点:
@Autowired需要导入 org.springframework.beans.factory.annotation.Autowired,只按照byType注入
public class StudentServiceImp{
@Autowired
private StudentDao studentDao;//用于字段上
@Autowired
public void setStudentDao(StudentDao studentDao){//用于属性的方法上
This.userDao=userDao;
}
}
@Authowired注解是按照类型装配依赖对象,默认清情况下要求依赖对象必须存在
@Resource默认按照ByName自动注入,由javaee提供
4、ModelAttribute和SessionAttributes
代表:该Controller的所有方法在调用前,先执行此@ModelAttribute方法,可用于注解和方法参数中,可以把@ModelAttribute特性用在BaseController中
@SessionAttributes即将值放到session作用域中,写在class上面
5、@PathVaribale
用于将请求url中模板变量映射到功能处理方法的参数上,即取出url模板中的变量作为参数
6、@RequestParam
用于在SpringMVC后台获取参数
7、@ResponseBody
作用:该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区
使用情况:返回的数据不是html标签的页面,而是其他某种格式的数据时(如json、xml等)使用
8、@Component
相当于通用注解,当不知道一些类归到那一层是使用,一般不建议使用
9、@Repsitory
用于注解dao层,在daoimp类上面注解
10、@Valid
通过在处理方法的参数上标注@Valid注解,即可让SpringMVC在完成数据绑定后进行数据校验,需要用到JSR 303相关的jar包

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值