1.控制器Controller
-
控制器复杂提供访问应用程序的行为,通常通过接口定义或注解定义两种方法实现。
-
控制器负责解析用户的请求并将其转换为一个模型。
-
在Spring MVC中一个控制器类可以包含多个方法
-
在Spring MVC中,对于Controller的配置方式有很多种
实现controller方式:
1.只要实现了controller接口的类,说明这就是一个控制器了
public class ControllerTest1 implements Controller {
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
ModelAndView mv = new ModelAndView();
//添加数据
mv.addObject("msg", "controllerTest");
//设置视图的名字(要跳转的名字)
mv.setViewName("/test");
return mv;
}
}
继承controller方式的缺点:一个控制器中只有一个方法,如果需要多个方法,则要定义多个Controller,
@Component 组件
@Controller Controller
@Repository dao
@Service service
2.注解@Controller
@Controller/*
代表这个类被spring托管 ,被这个注解的类中的所有方法,如果返回值是string,并且存在具体的页面可以跳转,
那么就会会视图解析器解析*/
public class ControllerTest2 {
@RequestMapping("/t2")
public String test(Model model){
model.addAttribute("msg","controllerTest2");
return "test";
}
@RequestMapping("/t3")
public String test2(Model model){
model.addAttribute("msg","controllerTest3");
return "test";
}
}
@Controller/*
代表这个类被spring托管 ,被这个注解的类中的所有方法,如果返回值是string,并且存在具体的页面可以跳转,
那么就会会视图解析器解析*/
@RequestMapping注解用于映射url到控制器类或一个特定的处理程序方法。
可用于类或方法上。用于类上,表示类中的
所有响应请求的方法都是以该地址作为父路径
2.Moudle
Model,ModelMap,LinkedMap:
Model 只有几个方法,只适合用于储存数据,简化了新手对于MOdell对象的操作和理解
ModelMap 继承了LinkedMap,除了实现 了自身的一些方法,同样的继承LinkedMap的方法和特性
MOdelAndView 可以在储存数据的同时,可以进行设置返回的逻辑视图,进行控制展示层的跳转
@Controller
public class MoudleTest1 {
@RequestMapping("/t1")
public String test1(Model model) {
model.addAttribute("msg","modelTest");
/*转发
1. return "test";
2.不配置视图解析器情况下
return "forward:/WEB-INF/jsp/test.jsp";
*/
//重定向(不需要视图解析器)
return "redirect:/index.jsp";
}
}