SpringMVC常用注解,SpringMVC 常用注解都有哪些
如何解决写爬虫IP受阻的问题?立即使用。
SpringMVC 常用注解
1、@Controller
在SpringMVC中,控制器Controller负责处理DispatcherServlet分发的请求。它将用户请求的数据经过业务处理层处理后封装成模型,然后将模型返回到相应的视图进行显示。SpringMVC提供了一个非常简单的方法来定义一个控制器。不需要继承特定的类,也不需要实现特定的接口,只需要用@Controller将类标记为控制器,然后用@RequestMapping和@RequestParam等一些注解来定义URL请求和控制器方法之间的映射,这样控制器就可以被外界访问了。另外,控制器不直接依赖HttpServlet对象如HttpServletRequest、HttpServletResponse,可以通过控制器的方法参数灵活获取。
@Controller用来标记一个类,用它标记的类是SpringMVC控制器对象。分发处理器将扫描使用该注释的类的方法,并检查该方法是否使用了@RequestMapping注释。@Controller只定义了一个控制器类,使用@RequestMapping注释的方法才是真正处理请求的处理器。仅仅用@Controller标记一个类并不能真正说是SpringMVC的控制器类,因为Spring此时并不知道。那么你是如何认识春天的呢?这时候我们需要把这个控制器类交给Spring来管理。有两种方法:
(1)在SpringMVC的配置文件中定义MyController的bean对象。
(2)告诉Spring在SpringMVC的配置文件中哪里可以找到标有@Controller的控制器。
!-方法一-
bean class= com . host . app . web . controller . my controller /
!方法2
context:component-scan base-package= com . host . app . web //路径写入控制器上层(扫描包详情见下面简要分析)2、@RequestMapping
RequestMapping是一个用于处理请求地址映射的注释,可以用在类或方法上。用在类上,意味着类中响应请求的所有方法都将此地址作为父路径。
RequestMapping注释有六个属性。下面我们分成三类进行说明(下面有相应的例子)。
1、价值、方法;
Value:指定请求的实际地址,指定的地址可以是URI模板模式(后面描述);
方法:指定请求的方法类型,如GET、POST、PUT、DELETE等。
2、消费,生产
Consumes:指定处理请求所提交的内容类型(Content-Type),如application/json、text/html;
Produces:指定要返回的内容类型,仅当指定的类型包含在请求标头中的(Accept)类型中时,才会返回该内容类型。
3、参数、标题
Params:指定此方法要处理的请求中必须包含一些参数值。
Headers:指定请求必须包含一些指定的头值,以便此方法处理请求。
3、@Resource和@Autowired
@Resource和@Autowired用于bean注入。其实@Resource并不是Spring的注解。它的包是javax.annotation.Resource,需要导入,但是Spring支持注释注入。
1.共同点
两者都可以写在字段和setter方法上。如果两者都写在字段上,那么就没有必要写setter方法。
2.差异
(1)@自动连线
@Autowired为Spring提供的注释需要导入到包org . Spring framework . beans . factory . annotation . auto wired中;仅按类型注入。
公共类TestServiceImpl {
//只能使用下面两个@Autowired中的一个
@自动连线
private UserDao userDao//在字段上使用
@自动连线
公共void set userdao(userdao userdao){//用在属性的方法上
this.userDao=userDao
}
}@Autowired标注是根据类型(byType)组装依赖对象。默认情况下,它要求依赖对象必须存在。如果允许空值,它的required属性可以设置为false。如果我们想按名称组装,我们可以将它与@Qualifier注释一起使用。如下所示:
公共类TestServiceImpl {
@自动连线
@限定符( userDao )
private UserDao userDao
}(2)@资源
@Resource默认由ByName自动注入,由J2EE提供,需要导入包javax.annotation.Resource。@Resource有两个重要的属性:名称和类型,而Spring将@Resource注释的名称属性解析为bean的名称,类型属性解析为bean的类型。因此,如果使用name属性,则使用byName的自动注入策略,而在使用Type属性时,则使用byType的自动注入策略。如果既没有设置name属性也没有设置type属性,那么将通过反射机制使用byName自动注入策略。
公共类TestServiceImpl {
//只能使用以下两种@资源中的一种。
@Resource(name=userDao )
private UserDao userDao//在字段上使用
@Resource(name=userDao )
公共set userdao(userdao userdao){//用于属性的setter方法。
this.userDao=userDao
}
} @资源程序集序列:
如果同时指定了名称和类型,将从组装的Spring上下文中找到唯一匹配的bean,如果没有找到,将抛出异常。
如果指定了name,将从组装的上下文中查找具有匹配名称(id)的bean,如果找不到,将抛出异常。
如果指定了type,将从组装的上下文中找到具有相似匹配的唯一bean。如果没有找到多个beans,将会抛出一个异常。
如果既没有指定名称也没有指定类型,则自动按名称进行组装;如果没有匹配,它将回到一个原始类型进行匹配,如果有匹配,它将自动组装。
@Resource等同于@Autowired,只不过@Autowired是根据byType自动注入的。
4、@ModelAttribute和 @SessionAttributes
意味着这个控制器的所有方法在调用之前都执行这个@ModelAttribute方法,可以用在注释和方法参数中。您可以将此@ModelAttribute属性应用于BaseController。所有控制器都继承BaseController,这样在调用控制器时可以先执行@ModelAttribute方法。
@SessionAttributes将值放入会话范围,并将其写入类。
示例如下:使用@ modelattributes和@SessionAttributes传输和保存数据。
5、@PathVariable
将请求URL中的模板变量映射到函数处理方法的参数中,即取出uri模板中的变量作为参数。比如:
@控制器
公共类TestController {
@ request mapping(value=/user/{ userId }/roles/{ roleId } ,方法=RequestMethod。获取)
公共字符串getLogin(@PathVariable(userId )字符串userId,
@ path variable( roleId )String roleId){
System.out.println(用户Id: userId );
system . out . println( Role Id: roleId );
回‘你好’;
}
@ request mapping(value=/product/{ product id } ,method=RequestMethod。获取)
公共字符串get product(@ path variable( product id )String product id){
System.out.println(产品Id: Product Id );
回‘你好’;
}
@ request mapping(value=/JavaBean/{ regexp 1:[a-z-]} ,
方法=请求方法。获取)
公共字符串getRegExp(@ path variable( regexp 1 )String regexp 1){
System.out.println(URI第一部分: regexp 1 );
回‘你好’;
}
}6、@requestParam
@requestParam主要用于获取SpringMVC后台控制层的参数。类似的还有request.getParameter(name ),有三个常用参数:defaultvalue= 0 ,required=false,value= isappdefaultValue表示设置默认值,是否需要布尔设置是必须传入的参数,Value表示传入参数的类型。
7、@ResponseBody
函数:该注释用于通过适当的HttpMessageConverter将控制器的方法返回的对象转换为指定的格式,然后写入响应对象的正文数据区。
使用时机:当返回的数据不是带有html标签的页面,而是某种其他格式(如json、xml等)的数据时使用。);
8、@Component
相当于一般的注释,在不知道某些类属于哪一层的时候使用,但不建议使用。
9、@Repository
用于注释dao层,并在daoImpl类上进行注释。
推荐教程:《Java教程》
以上10-59000是SpringMVC常用注释的详细内容。更多请关注我们的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。