@Autowired 和 @Service
在控制器中使用Autowired将依赖注入
为了能被作为依赖注入,用过注解@Autowired到字段或者方法
在配置文件中添加扫描包
<context:component-scan base-package="app03a.service"/>
在控制器中注入
@Autowired
private ProductService productService;
重定向和Flash属性
重定向的使用方法:在某个方法的返回值按照以下写法:
return "redirect:/product_view/" + saveProduct.getId();
Flash解决了在重定向中参数无法传递的问题
@RequestMapping(value = "/product_save", method = RequestMethod.POST)
public String saveProduct(ProductForm productForm, RedirectAttributes redirectAttributes){
logger.info("saveProduct called");
Product product = new Product();
product.setName(productForm.getName());
product.setDescription(productForm.getDescription());
try{
product.setPrice(Float.parseFloat(productForm.getPrice()));
}catch (NumberFormatException e){
e.printStackTrace();
}
//添加到实体类
Product saveProduct = productService.add(product);
redirectAttributes.addFlashAttribute("message", "The product was successfully added");
return "redirect:/product_view/" + saveProduct.getId();
}
路径变量
使用URL传值的一种方法,在某个方法的RequestMapping中添加这个字段
然后在被调用的方法中用同名的参数来接收
@RequestMapping("/product_view/{id}")
public String viewProduct(@PathVariable Long id, Model model){
Product product = productService.get(id);
model.addAttribute("product", product);
return "ProductView";
@ModelAttribute
Spring MVC 在每次调用请求处理方法时,都会创建一个Model类型的一个实例。
1. 如果要使用使用这个实例,可以在参数中添加一个Model类型的参数
2. 可以在方法中添加ModelAttribute注解类型访问Model实例
‘