0. 基础
基本概念
知道Spring MVC框架,大家就一定要了解Controller, Controller是MVC的核心,它负责处理所有客户端发过来的请求,并对请求进行处理,并转发给浏览器。
Controller中Action的返回值
Action是Controller中处理具体请求的方法,Action的返回值有以下几种类型,String, ModelAndView, Void, Map等。
@RequestMapping(value = "index")
public String Index() {
System.out.print("123");
return "index";
}
@RequestMapping(value = "viewone")
public ModelAndView viewone() {
ModelAndView mv = new ModelAndView();
mv.setViewName("viewone");//设置返回模板名称
mv.addObject("name", "Hello World");//设置参数值,在前台页面可以通过获取到
return mv;
}
@RequestMapping(value = "viewtwo")
public String viewtwo() {
System.out.print("viewtwo");
return "redirect:/Home/viewone";
}
@RequestMapping(value = "viewthree")
public void viewthree() {
System.out.print("viewthree");
}
@ResponseBody()
@RequestMapping(value = "viewfour")
public Map<String, String> viewfour() {
System.out.print("viewfour");
Map<String, String> map = new HashMap<String, String>();
map.put("id", "1");
map.put("age", "20");
return map;
}
Spring Mvc请求参数传递
1. 常规参数属性设置
//http://localhost:8080/test?id=1
@RequestMapping(value="test")
public String Detail3(HttpServletRequest request)
{
System.out.print(request.getParameter("id"));
return "test";
}
//http://localhost:8080/test?id=1
@RequestMapping(value="test")
public String Detail(int id)
{
// id必须传值,而且必须是数字,负责会报异常 页面URL格式如下,从URL中获取id,
System.out.print(id);
return "test";
}
2. 注解配置
- @RequestParam
- @RequestMapping
@RequestMapping(value="ProductIndex",params={"id=1","code","!name"},method={RequestMethod.GET})
- @PathVariable
@ModelAttribute属性和@SessionAttribute属性
@ModelAttribute属性和@SessionAttribute属性主要用来在不同控制器和模型之间共享数据.默认情况下,map的信息只是在request当前请求有效,如果想在一个controller中共享数据,可以使用这两个属性。
1. @ModelAttribute @ModelAttribute可以用在action方法上,也可以用在Controller上,一个Controller中标记@ModelAttribute的方法在其他方法执行前先执行。在调用所有方法之前先执行@ModelAttribute标记的方法
@Controller
@RequestMapping("/User")
public class UserController {
@RequestMapping(value="userdetail")
public String userdetail(){
return "userdetail";
}
@ModelAttribute("username")
public String GetUserName(){
//访问controller之前,先执行@ModelAttribute标记的方法,可以在前台页面访问到共享数据
return "公用账户";
}
}
2. @SessionAttributes 使用SessionAttributes可以将map中的信息放置到session中共享,通常情况下SessionAttributes主要标记在controller上,指定哪些信息需要存放到session中,下面的代码我们将id存放到session中
@Controller
@RequestMapping("/User")
@SessionAttributes("id")
public class UserController {
@RequestMapping(value="userdetail")
public String userdetail(ModelMap model){
model.addAttribute("id", "0001");
return "userdetail";
}
@ModelAttribute("username")
public String GetUserName(){
//访问controller之前,先执行@ModelAttribute标记的方法,可以在前台页面访问到共享数据
return "公用账户";
}
}
区别:
- 使用SessionaAttributes标记的属性主要把信息放到session中,主要标记在Controller上。
- 使用ModelAttribute标记的主要用在方法上,然后在Action的方法参数里面加上ModelAttribute标记可以访问到。