首先在加注解前要配置XML文件哦
1.@Controller
在springMVC中,controller控制器用来处理DispacherServlet分发的请求,它把请求的数据经过业务逻辑层的处理封装成model,返回给view.
@Controller用于标记在一个类的上面,如果仅仅只是使用@Controller,还不能真正意义上说他是springMVC的一个控制类。以为这个时候spring 还不认识它。如何才能让spring认识呢,需要将这个控制器交给spring来管理。spring管理控制器有两种方式
a:springmvc的配置文件中定义myController中的bean对象
b:在springMVC的配置文件中告诉spring应该去什么地方找带有@Controller的控制器
< context:component-scan base-package = “com.host.app.web” />路径写到controller的上一层(扫描包详解见下面浅析)
2.@RequestMapping
这个是一个用于处理请求地址映射的注解,既可用于类上面,也可以用于方法上,用于类上,表示类中所有响应请求的方法都是以该地址作为父路径
RequestMapping注解有6个属性
1) value: 指定请求的实际地址
2) method: 指定请求的method类型(get/post)
3) consumes: 指定处理请求的的提交内容类型(Content- Type)application/json, text/html;
4) produces: 指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回;
5) params: 指定request中必须包含某些参数值时,才让该方法处理
6) headers: 指定request中必须包含某些指定的header值,才能让该方法处理请求
3.Resource和Autowired
这两个注解都是做bean的注入时使用的,@Resource并不是spring的注解,它的包是javax.annotation.Resource,需要导入。
相同点:两个注解都可以写在字段和setter方法上。两个注解如果都写在字 段上,则不在需要setter方法
不同点:AutoWired是spring提供的注解,需要导入包org.springframework.beans.factory.annotation.Autowired;
最好将@Resource放在setter方法上,因为这样更符合面向对象的思想,通过set、get去操作属性,而不是直接去操作属性。
4.@ModelAttribute和@SessionAttributes
@ModelAttribute这个注解代表该controller中的所有方法在调用之前,先执行@ModelAttribute方法。可用于注解和方法参数中,可以把这个@ModelAttribute特性,应用在BaseController当中,所有的Controller继承BaseController,即可实现在调用Controller时,先执行@ModelAttribute方法。
SessionAttributes即将值放在session作用域中,写在class上。
5.@pathVariable
用于将请求的url模板中的变量映射到功能处理方法的参数上,即取出url模板中的变量作为参数。
@Controller
public class TestController {
@RequestMapping(value=”/user/{userId}”,method = RequestMethod.GET)
public String getLogin(@PathVariable(“userId”) String userId,
@PathVariable(“roleId”) String roleId){
System.out.println(“User Id : ” + userId);
return “hello”;
}
6.@RequestParam
这个注解主要用于后台控制层获取参数,和这个request.getParameter(“name”)差不多。他的三个常用参数
defaultvalue=”0”:表示的是默认值
required=false;通过Boolean设置是否是必须传入的参数
value=”isPC” 表示接受的传入参数的类型。
7.@ResponseBody
该注解用于将controller方法返回的对象,通过适当的转换HttpMessageConverter为指定格式后,写入到response的body区域中
使用时机:返回的页面不是html页面,而是其他某种数据格式时(如 json、xml等)
8.@Component
通用的注解,当不知道一些类归到哪个层时 使用。
9.@Repository
用于注解Dao层。在DaoImpl上面注解