==================
Spring MVC数据传递
==================
针对通过表单或超链接(URL)提交的同步请求:
- 控制器方法返回String或ModelAndView类型的对象,携带目标页面的路径。
- 控制器方法如何将数据传递给目标页面?
- 只有转发可以传值,重定向无法传值。
1 目标页面
/src/main/webapp/addBookSuccess.jsp:
...
...
${book}
...
...
2 返回String对象
/src/main/java/cn/tedu/springmvc/controllers/BookController.java:
@Controller
@RequestMapping("/BookController")
public class BookController {
...
@RequestMapping("/addBook")
public String addBook(@RequestParam("name") String name,
@RequestParam("author") String author,
@RequestParam("price") double price,
Model model) {
System.out.println("控制器> 添加一本图书");
System.out.println("控制器> 书名:" + name);
System.out.println("控制器> 作者:" + author);
System.out.println("控制器> 价格:" + price);
model.addAttribute("book", new Book(0, name, author, price));
return "/addBookSuccess.jsp";
}
...
}
或
@Controller
@RequestMapping("/BookController")
public class BookController {
...
@RequestMapping("/addBook")
public String addBook(@RequestParam("name") String name,
@RequestParam("author") String author,
@RequestParam("price") double price,
HttpServletRequest request) {
System.out.println("控制器> 添加一本图书");
System.out.println("控制器> 书名:" + name);
System.out.println("控制器> 作者:" + author);
System.out.println("控制器> 价格:" + price);
request.setAttribute("book", new Book(0, name, author, price));
return "/addBookSuccess.jsp";
}
...
}
3 返回ModelAndView对象
/src/main/java/cn/tedu/springmvc/controllers/BookController.java:
@Controller
@RequestMapping("/BookController")
public class BookController {
...
@RequestMapping("/addBook")
public ModelAndView addBook(@RequestParam("name") String name,
@RequestParam("author") String author,
@RequestParam("price") double price) {
System.out.println("控制器> 添加一本图书");
System.out.println("控制器> 书名:" + name);
System.out.println("控制器> 作者:" + author);
System.out.println("控制器> 价格:" + price);
return new ModelAndView("/addBookSuccess.jsp")
.addObject("book", new Book(0, name, author, price));
}
...
}
例程:SpringMVC