SpringMVC原理与SpringMVC常用注解

SpringMVC原理
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”)[email protected](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包