SpringMVC的使用

2018-04-25  本文已影响0人  每天进步一一点

虽然一直在使用SpringMVC,但是对更多的理解还是知道的很少,也看了许多SpringMVC的工作原理,包括dispathServlet,handler,handlerMapping,如何解析view的,dispathServlet如何初始化的东西,也看了很多,但是对理解层面还是知道的很少,在此,先从如何使用做一个深刻的了解,记录知道的和不知道的SpirngMVC的功能,遇到新的就自动增加,也是给自己一个记录的成长吧。。

SpringMVC的常用注解:

@Controller:带注解类的"控制器",分发处理器将会扫描使用了该注解的类的方法,并检测该方法是否使用了@RequestMapping 注解

@RequestMapping 注解为控制器指定可以处理哪些 URL 请求

//method:可以处理请求是get或者post

@RequestMapping(value ="/detail", method = {RequestMethod.POST,RequestMethod.GET})

//path可以和PathVariable将其与URI模板中的参数绑定起来:

@RequestMapping(path ="/detail/{id}", method = {RequestMethod.POST,RequestMethod.GET})

public string test(@PathVariable string id)

@MatrixVariable:矩阵变量,你必须把RequestMappingHandlerMapping类的removeSemicolonContent属性设置为false。该值默认是true的。

//consumes :是可消费的媒体类型,只有当请求头中 Content-Type 的值和我们输入的值相等时候使用

//produces :可生产媒体类型;这样只有当请求头中 Accept 的值与指定可生产的媒体类型中有相同的时候,请求才会被匹配

//params:请求值匹配,缩小范围

// headers:请求头匹配

@RequestMapping(path ="test/{id}", method = RequestMethod.GET,consumes ="aa/aa")

@RequestBody需要接的参数是一个string化的json

@ResponseBody:类是string类型,返回的json

@RestController:创建REST控制器,它结合了@ResponseBody与@Controller注解的功能

@ModelAttribute:注解可被应用在方法或方法参数上

如果放在方法上,会首先去执行该方法,一般会用做公共方法的提取,或者也可以当拦截器使用

@ModelAttribute

public String test(){

return "test" ;

}

@ModelAttribute("entity"):在方法上也可以有值,然后根据对应的值,去寻找对应的实体

public ModelAndView save(HttpServletRequest request,@ModelAttribute("entity")@Valid BillBoard entity, BindingResult result)throws Exception

BindingResult被用于记录数据绑定过程的错误

@SessionAttributes:类级别的,HTTP会话保存模型数据

@CookieValue:注解能将一个方法参数与一个HTTP cookie的值进行绑定。

@RequestHeader:注解能将一个方法参数与一个请求头属性进行绑定

    Accept               

    Accept-Language        

    Accept-Encoding    

    Accept-Charset        

    Keep-Alive        

public void test(@RequestHeader("Accept-Encoding")String encoding, @RequestHeader("Keep-Alive")longkeepAlive){//...}     

@InitBinder:解决类型转换的问题

@ControllerAdvice:辅助控制器,很多时候配合@ExceptionHandler处理异常(具体还要例如辅助modelAttribute)

接下来会具体讨论使用

参考:http://7xvpsh.com1.z0.glb.clouddn.com/publish/21-3/4-asynchronous-request-processing.html翻译的文档

上一篇下一篇

猜你喜欢

热点阅读