当然最重头戏的还是ProductController类,该类中的方法通过RequestMapping指定Request和Handler的对应关系,而在saveProduct方法的参数中通过RedirectAttribute实现页面的重定向。
@Controller
public class ProductController {
private static final Log logger = LogFactory.getLog(ProductController.class);
@Autowired
private ProductService productService;
@RequestMapping(value="/productInput")
public String inputProduct(){
//logger.info("inputProduct called");
return "ProductForm";
}
@RequestMapping(value="/productSave", 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());
product.setPrice(productForm.getPrice());
//add product
Long productID = productService.addProduct(product);
redirectAttributes.addAttribute("message", "The product was successfully added.");
return "redirect:/product_view/" + productID;
}
@RequestMapping(value="/product_view/{id}")
public String viewProduct(@PathVariable Long id, Model model){
Product product= productService.queryProduct(id);
model.addAttribute("product", product);
return "ProductDetails";
}
}
如下是web.xml配置文件,应用servlet和servlet-mapping元素,servlet元素内的<load-on-startup>元素是可选的。如果存在,则它将在应用程序启动时装载servlet并调用它的init方法,若不存在,则在该servlet的第一个请求时加载,可以通过<init-param>中的<param-value>元素指定配置文件的路径,如果没有<init-param>元素,则默认路径为程序的WEB-INF目录下的servletName-servlet.xml。