spring注解和springmvc的注解,SpringMVC常用注解

spring注解和springmvc的注解,SpringMVC常用注解,详解springmvc常用5种注解

在本文中,我们给大家总结了五个关于springmvc的常见注释相关知识点和示例代码,供大家参考。

一、组件型注解:

1.@Component在类定义前添加@Component注释,会被spring容器识别,变成bean。

2.@Repository注释Dao实现类(特殊的@Component)

3.@Service用于标注业务逻辑层,(特殊@Component)

4.@控制器用于控制层标注,(特殊@组件)

以上四个标注都是在类上标注的,被标注的类最初会被spring描述成一个bean,然后统一管理。

二、请求和参数型注解:

1.@RequestMapping:用于处理请求地址映射,可以应用于类和方法。

value:定义请求request的映射地址。

方法:请求地址的定义方法,包括[get,post,head,options,put,patch,delete,trace。]默认情况下接受get请求,如果请求方法与定义的方法不同,则请求无法成功。

params:定义请求request中必须包含的参数值。

headers:定义请求请求必须包含一些指定的请求头,如:request mapping(value='/something ',headers=' Content-type=text/* ',这意味着请求必须包含' text/html '和' text/plain '的Content-type头才能成为匹配的请求。

消费者:定义要求提交的内容类型。

produces:指定要返回的内容类型,只有当指定的类型包含在请求头的(Accept)类型中时,才会返回。

@ request mapping(value='/request test . do ',params={'name=sdf'},headers={'Accept-Encoding=gzip,deflate,br'},method=RequestMethod。获取)

公共字符串getIndex(){

System.out.println(“请求成功”);

返回“索引”;

}

上面的代码将请求指示为GET请求,请求参数必须包含参数name=sdf,然后请求头的类型必须为accept-encoding=gzip,deflate,br。

通过这种方式,请求可以被注释约束。

2.@RequestParam:用于获取传入参数的值。

值:参数的名称。

必选:定义传入参数是否必要,默认值为true,(类似于@RequestMapping的params属性)

@ request mapping('/request params 1 . do ')

公共字符串request params 1(@ request param(required=false)字符串名称){

system . out . println(' name=' name);

返回“索引”;

}

@ request mapping('/request params 2 . do ')

公共字符串request params 2(@ request param(value=' name ',required=false)字符串名称){

system . out . println(' name=' names);

返回“索引”;

}

请求参数的两种方法是相同的。当显示声明值的名称时,参数名称与value相同。如果没有显示声明,则参数名和函数参数变量名与第一个方法中声明的相同。

3.@ pathvirable:用于定义路径参数值。

值:参数的名称。

必选:定义传入的参数是否为必选值。

@ request mapping('/{ my name }/path variable 2 . do ')公共字符串path variable 2(@ path variable(value=' my name ')字符串名称){

system . out . println(' myname=' name);返回“索引”;

}

这个路径声明{myname}为路径参数,那么这个路径将是任意的,@PathVariable将能够根据值得到路径的值。

4.@ResponseBody:作用于方法,可以以某种格式返回整个返回结果,比如json或者xml格式。

@ request mapping('/{ my name }/path variable 2 . do ')

@ResponseBody

公共字符串path variable 2(@ path variable(value=' my name ')字符串名称){

system . out . println(' myname=' name);

返回“索引”;

}

它不返回页面,而是直接在页面上打印字符串“index”,实际上类似于下面的代码。

PrintWriter out=resp . getwriter();

out . print(' index ');

out . flush();

5.@CookieValue:用于获取请求的Cookie值。

@ request mapping('/request params . do ')

公共字符串request params(@ CookieValue(' JSESSIONID ')字符串cookie){

返回“索引”;

}

6 、@ModelAttribute:

用于将参数保存到模型中,您可以注释方法或参数。当批注在方法上时,该方法将在处理器的方法执行之前执行,然后返回的对象将存储在会话(带有@SessionAttributes批注)或模型属性中。标记方法时指定了@ modelattribute ("attributename ")。如果未指定,返回类型的类名(首字母小写)将用作属性名。

@ModelAttribute('user ')

公共用户实体getUser(){

user entity user entityr=new user entity();

userentityr . set username(' asdf ');

返回userEntityr

}

@RequestMapping('/modelTest.do ')

公共字符串get users(@ model attribute(' user ')user entity user){

system . out . println(user . get username());

返回“/index”;

}

在上面的代码中,使用了@ModelAttribute('user ')注释,该注释在控制器执行之前执行,然后会生成一个名为user的模型数据。在控制器中,我们通过在参数上标注@ModelAttribute来获取参数,然后将模型应用于控制器。我们也可以在jsp页面中使用它。

body ${user.username} /body

7 、@SessionAttributes

默认情况下,Spring MVC将模型中的数据存储到请求域中。当请求完成时,数据变得无效。如果你想跨页使用。那么你需要使用session。而@SessionAttributes注释可以使模型中的数据存储在会话域中。当与@ModelAttribute('user ')一起使用时,相应名称的模型值将保存在会话中。

@控制器

@RequestMapping('/test ')

@ session attributes(value={ ' user ',' test1'})

公共类LoginController{

@ModelAttribute('user ')

公共用户实体getUser(){

user entity user entityr=new user entity();

userentityr . set username(' asdf ');

返回userEntityr

}

@RequestMapping('/modelTest.do ')

公共字符串get users(@ model attribute(' user ')user entity用户,HttpSession会话){

system . out . println(user . get username());

system . out . println(session . get attribute(' user '));

返回“/index”;

}

}

结合前面示例的代码,添加了@SessionAttributes注释,然后请求进行了两次。名为user的属性的值在第一个会话中不存在,但在第二个请求中找到了它。这是因为在第一次请求期间,模型数据没有保存在会话中,只有在请求完成并返回时才保存,并且可以在第二次请求中获得以前的模型。

注意:@ model attribute(' user ')userEntityUser获取标注内容时,会先查询会话中是否有对应的属性值,然后再查询模型。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: