工程目录
访问下面 requestmapping 对应的 handler ,127.0.0.1:8080/SpringMvcDemoFox/foxb_input
/**
* @Title: handleRequest
* @Description: TODO 进入录入页面
* @param model
* @return
* @return: String
*/
@RequestMapping("/foxb_input")
public String inputProduct() {
logger.info("InputProductController called");
return "foxb/ProductForm";
}
将会访问对应的视图 ProductForm.jsp
当我们录入对应的数据提交时,提交的action为 foxb_save ,springmvc 会去找这个对应的 处理器,@RequestMapping(value="/foxb_save",method=RequestMethod.POST):
<form action="foxb_save" method="post">
<fieldset>
<legend>Add Product Form1</legend>
<label for="name">product name:</label>
<input type="text" id="name" name="name" value="" tabindex="1" />
<label for="price">price:</label>
<input type="text" id="price" name="price" value="" tabindex="2" />
<div id="buttons">
<label for="dummy"> </label>
<input type="reset" id="reset" tabindex="3" />
<input type="submit" value="Add Product" tabindex="4" />
</div>
</fieldset>
</form>
/**
* @Title: saveProduct
* @Description: TODO 保存产品并且跳转显示页面
* @param pa
* @param model
* @return
* @return: String
*/
@RequestMapping(value="/foxb_save",method=RequestMethod.POST)
public String saveProduct(ProductForm pa, Model model) {
Product product = new Product();
product.setName(pa.getName());
product.setPrice(Double.valueOf(pa.getPrice()));
logger.info("SaveProductController called");
model.addAttribute("product", product);
return "foxb/ProductDetails";
}
其中saveProduct 方法中的参数,ProductForm pa ,其中对应了视图页面name,springMVC 会去创建这个类的实例,并且把提交的数据从 request 中取出,将对应的数据绑定给
ProductForm 中,而 Model model ,每个访问控制器 Handler 时,都会创建一个 Model 实例,用来存储返回的模型。可能此时我们发现这里并没有使用 modelandview,
其实不用 modelandview 也是可以的,甚至是不使用model,也可以响应页面,后面的实例会有介绍到,这里其中其实是springMVC 会默认的将我们的参数放入到 response 域中。