spring mvc 常用前后台数据交互的注解

关于spring mvc前后台交互的一些注解

 

Url模板

在请求路径中添加变量,使用{}。通过@pathVariable注解在方法参数中,获得url中的变量值。

@pathVariable(“url中的变量名”) 参数。

 

 

 

 

适用于Restful风格架构,

 

注入bean

当在类中需要引用另一个类对象的时候,需要注入。

@Resource@Autowired可以实现注入。

 

@Autowired默认是根据bytpye类型注入对象。

@Resource默认是根据byName注入对象。

 

Autowired也可以实现byName方式注入对象。搭配@Qualifier("对象名")

 

 

 

@Resource也可以实现byType方式注入对象。

@Resourcetype=”对象名”)即可根据bytype方式注入。

 

 

 

 

 

建议统一使用@Autowired方式,根据bytype方式注入。

@RequestMapping

 标记的处理器方法支持的方法参数和返回类型

主要用来定义请求路径。

高级用法:

 

 

 

 

 

 

 

@RequestHeader@CookieValue

 

这两个注解可以讲httprequest的头信息和cookie信息绑定到处理器的参数上。

当需要获取请求头或者cookie信息的时候可以使用。

示例:

 

 

 

@RequestParam,

@RequestParam

相当于 requestGetparameter()方法。该注解直接将前台传过来的参数,绑定到对应的参数上,供方法体使用。后面跟的参数名称需要和前台页面中的name名称一致。

@requestBody@respondBody

当前台页面传入的数据时一个完整的表单,并属于某个类对象的属性。使用 @RequestBody respondBody注解,自动将前台传入的json字符串转换成对应的类对象。

@RequestBody只能接收POST请求,get是不行的,

应用场景。例如,一个检索页面,对主表进行查询,查询条件为表中的各个字段。需要将查询条件传到后台。直接使用@requestBody将前台的json数据转换成实体对象。方便查询。 同时,在方法体上添加respondBody后,直接返回类对象。Spring会自动将这个类对象转换成json格式,供前台使用。

 

 

@SessionAttributes, @ModelAttribute

@SessionAttributes:

 

该注解用来绑定HttpSession中的attribute对象的值,便于在方法中的参数里使用。

 

 

 

@ModelAttribute

用到方法上@ModelAttribute的示例代码:

 

 

 

这种方式实际的效果就是在调用@RequestMapping的方法之前,为request对象的modelput(“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=/loginmethod = RequestMethod.post)

Public string login(string username string password  Model model){

......

//model参数必须放在最后.

//前台传入参数少的时候可以直接放到方法上。

//model用来向前台发送数据。

 }

 

 

 

前台发送多个参数的时候,特定情况下可以使用@requestBody注解

 

@RequestMapping()

Public string loginOut(Request requesthttpservletResponse response ){

String name = request.getParameter(name)

String age = request.getParameter(age)

 

}

 

}

 

 

 

 

后台发送数据:

1modelAndView 方法:

2modelMap方法

3map方法

 

其实三种方法本质差别不大,只是表现形式不同。

建议使用mdelMap方法。在处理器方法中加上modelMap model

使用model.addAttribute("uname", name)方法,springmvc就可以自动将数据发送到前台。不用return

modelAndView 返回的就是一个视图。

 

前台发送数据,

略:

建议统一使用ajax方式。Datatype使用json格式。

 

Ajax{

Url:login/login,

Data{},

Datatype:json,

Successfunction(){}

 

}

 

posted @ 2017-08-07 16:30  张开开  阅读(5940)  评论(0编辑  收藏  举报