一.控制器controller
- 控制器复杂提供访问应用程序的行为,通常通过接口定义和注解定义两种方式实现
- 控制器负责解析用户的请求并将其转化为一个模型
- 在springMVC中一个控制器类可以包含多种方法
- 在springMVC中,对于Controller的配置方式有很多种
接口实现:
通过编写一个控制类,实现controller的接口
//定义控制器 //注意点:不要导错包,实现接口,重写方法 public class controllerTest1 implements Controller { public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception { ModelAndView mv = new ModelAndView(); mv.addObject("msf","i like ranyl"); mv.setViewName("msf"); return mv; } }
编写完接口去对应的spring中注册请求的bean,name对应请求路径,class对应请求的类
<bean name="/msf" class="top.lostyou.controller.controllerTest1"/>
编写前端msf.jsp,注意路径位置一定是/page/msf.jsp,是为了对应我们的视图解析器
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>msf</title> </head> <body> ${msf} </body> </html>
注解实现@
- @Controller注解类型用于声明spring类的实例是一个控制器
- spring可以使用扫描机制来找到应用程序中所有基于注解的控制器类,为了保证spring能找到你的控制器,需要在配置文件中声明组件扫描
<context:component-scan base-package="top.lostyou.controller"/>
- 增加一个ControllerTest2类,使用注解实现
//@Controller注解会自动添加到spring上下文容器中 @Controller public class controllerTest2 { //映射访问路径 @RequestMapping("/msf") public String fun(Model model){ //springMVC容器会自动实例化一个对象向视图中传值 model.addAttribute("msf","I love you!"); return "msf"; } }
常用的注解:
- @Componennt
- @Service
- @Controller
- @Respository
二.RequestMapping说明:
@RequestMapping注解用于映射url到控制器类或一个特定的处理程序方法,可用于类和方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。
为了测试结论更加准确,我们可以加上一个项目名测试 page
第一种:只注解在方法上面
@Controller
public class controllerTest3 {
@RequestMapping("/msf")
public String Test(){
return "msf";
}
}
访问路径为:http://localhost:8080/msf
第二种:同时注解方法和类
@Controller
@RequestMapping("/T3")
public class controllerTest3 {
@RequestMapping("/msf")
public String Test(){
return "msf";
}
}
访问路径为:http://localhost:8080/T3/msf