开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第12天
@Controller注解
在Spring MVC框架中,传统的处理器类需要直接或间接地实现Controller接口,这种方式需要在Spring MVC配置文件中定义请求和Controller的映射关系。
当后台需要处理的请求较多时,使用传统的处理器类会比较繁琐,且灵活性低,对此,Spring MVC框架提供了@Controller注解,使用@Controller注解,只需要将@Controller注解标注在普通Java类上,然后通过Spring的扫描机制找到标注了该注解的Java类,该Java类就成为了Spring MVC的处理器类
示例:
import org.springframework.stereotype.Controller;
@Controller //标注@Controller注解
public class MyController{
//your code
}
<!--在beans中配置要扫描的类包-->
<context:component-scan base-package="com.hexiaoxing.controller"/>
Spring MVC的配置文件被加载时,Spring会自动扫描com.hexiaoxing.controller类包以及子包下的Java类。如果被扫描的Java类中带有@Controller、@Service等注解,则把这些类注册为Bean并存放在Spring中。
与传统的处理器类实现方式相比,使用@Controller注解的方式显然更加简单灵活。因此,在实际开发中通常使用@Controller注解来定义处理器类。
@RequestMapping
@RequestMapping注解用于建立URL和Handler(处理器)之间的映射关系,该注解可以标注在方法上和类上。
标注在方法上使用
当@RequestMapping注解标注在方法上时,该方法就成了一个可以处理客户端请求的Handler(处理器),它会在Spring MVC接收到对应的URL请求时被执行。Handler在浏览器中对应的访问地址由项目访问路径和处理方法的映射路径共同组成。
例:
@Controller
public class MyController{
@RequestMapping("/firstController")
public String sayHello(){
System.out.println("hello spring mvc");
return "success";
}
}
标注在类上
当@RequestMapping注解标注在类上时,@RequestMapping的value属性值相当于本处理器类的命名空间,即访问该处理器下的任意处理器都需要带上这个命名空间。
@RequestMapping标注在类上时,其value属性值作为请求URL的第一级访问目录。当处理器类和处理器都使用@RequestMapping注解指定了对应的映射路径,处理器在浏览器中的访问地址,由项目访问路径+处理器类的映射路径+处理器的映射路径共同组成。
例:
@Controller
@RequestMapping(value="/springMVC") //路径中项目路径后就要记得加处理器类映射路径/springMVC
public class MyController{
@RequestMapping("/firstController")
public String sayHello(){
System.out.println("hello spring mvc");
return "success";
}
}