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获取标注内容时,会先查询会话中是否有对应的属性值,然后再查询模型。

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