spring mvc 常用前后台数据交互的注解
关于spring mvc前后台交互的一些注解
Url模板
在请求路径中添加变量,使用{}。通过@pathVariable注解在方法参数中,获得url中的变量值。
@pathVariable(“url中的变量名”) 参数。
适用于Restful风格架构,
注入bean
当在类中需要引用另一个类对象的时候,需要注入。
@Resource和@Autowired可以实现注入。
@Autowired默认是根据bytpye类型注入对象。
@Resource默认是根据byName注入对象。
Autowired也可以实现byName方式注入对象。搭配@Qualifier("对象名")
@Resource也可以实现byType方式注入对象。
@Resource(type=”对象名”)即可根据bytype方式注入。
建议统一使用@Autowired方式,根据bytype方式注入。
@RequestMapping
标记的处理器方法支持的方法参数和返回类型
主要用来定义请求路径。
高级用法:
@RequestHeader、@CookieValue
这两个注解可以讲httprequest的头信息和cookie信息绑定到处理器的参数上。
当需要获取请求头或者cookie信息的时候可以使用。
示例:
@RequestParam,
@RequestParam
相当于 request。Getparameter()方法。该注解直接将前台传过来的参数,绑定到对应的参数上,供方法体使用。后面跟的参数名称需要和前台页面中的name名称一致。
@requestBody,@respondBody
当前台页面传入的数据时一个完整的表单,并属于某个类对象的属性。使用 @RequestBody 和respondBody注解,自动将前台传入的json字符串转换成对应的类对象。
@RequestBody只能接收POST请求,get是不行的,
应用场景。例如,一个检索页面,对主表进行查询,查询条件为表中的各个字段。需要将查询条件传到后台。直接使用@requestBody将前台的json数据转换成实体对象。方便查询。 同时,在方法体上添加respondBody后,直接返回类对象。Spring会自动将这个类对象转换成json格式,供前台使用。
@SessionAttributes, @ModelAttribute
@SessionAttributes:
该注解用来绑定HttpSession中的attribute对象的值,便于在方法中的参数里使用。
@ModelAttribute
用到方法上@ModelAttribute的示例代码:
这种方式实际的效果就是在调用@RequestMapping的方法之前,为request对象的model里put(“account”, Account)。
用在参数上的@ModelAttribute示例代码:
首先查询 @SessionAttributes有无绑定的Pet对象,若没有则查询@ModelAttribute方法层面上是否绑定了Pet对象,若没有则将URI template中的值按对应的名称绑定到Pet对象的各属性上。
后台接收数据:
接收前台数据,可以根据不同类型数据,使用不同注解。
添加控制器注解:@controller
添加映射地址:@requestmapping(“/类名去掉controller”)方便定位使用控制器,可以省略,
在控制器方法中:
方法上添加映射路径的时候;直接添加@requestmapping注解,框架默认使用方法名作为路径。简洁方便,使用这种方法,需要在拦截器中需要配置。把静态资源过滤掉。否则前台页面无法访问静态资源。
示例:请求路径为:../login/login
@controller
@requestMapping(“/login”)//可省略,省略后请求路径为类名去掉后面的 controller,所以还是/login。
Public class loginController{
@RequestMapping(path=”/login” method = RequestMethod.post)
Public string login(string username ,string password Model model){
......
//model参数必须放在最后.
//前台传入参数少的时候可以直接放到方法上。
//model用来向前台发送数据。
}
前台发送多个参数的时候,特定情况下可以使用@requestBody注解
@RequestMapping()
Public string loginOut(Request request, httpservletResponse response ){
String name = request.getParameter(“name”)
String age = request.getParameter(“age”)
}
}
后台发送数据:
1、modelAndView 方法:
2、modelMap方法
3、map方法
其实三种方法本质差别不大,只是表现形式不同。
建议使用mdelMap方法。在处理器方法中加上modelMap model。
使用model.addAttribute("uname", name)方法,springmvc就可以自动将数据发送到前台。不用return。
modelAndView 返回的就是一个视图。
前台发送数据,
略:
建议统一使用ajax方式。Datatype使用json格式。
Ajax{
Url:”login/login”,
Data{},
Datatype:’json’,
Success:function(){}
}