之前使用ProductForm拥有过疑问,问什么会用ProductForm类。因为ProductForm类是用来暂时保存从客户端界面提取数据,从客户端提取的数据类型都是String,不过Product类的price属性时float类型,ProductForm是从客户端提取的数据String类型转换到float类型的作用。有了数据绑定,就可以取代转换的步骤。如下。。。

//jsp中
<form:form commandname="book" action="save-book" method="post">
...
</form:form>
//.java中
@RequestMapping("save-book")
public String inputBook(Model model) {
    model.addAttribute("book",new Book());
    return "jsp名称";
}

需要使用标签库需要在Jsp页面添加如下代码

<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
标签库的标签有:


表单    描述 使用方法
form 渲染表单元素
input 渲染<input type='text'/>元素
password 渲染<input type='password'/>元素
hidden 渲染<input type='hidden'/>元素
textarea 渲染 textarea 元素
checkbox 渲染一个<input type='checkbox'/>元素 path,value
checkboxes 渲染多个<input type='checkbox'/>元素 path,item
radiobutton 渲染一个<input type='radio'/>元素 path,value
radiobuttons 渲染多个<input type='radio'/>元素 path,item
select  渲染一个选择元素 path,items,itemLabel,itemValue
option 渲染一个可选元素
options 渲染多个可选元素
errors 在span元素中渲染字段错误

pom.xml文件:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.example</groupId>
  <artifactId>firstSpringMVC</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>

	
  
  <dependencies>
  
<dependency>
   <groupId>javax.validation</groupId>
   <artifactId>validation-api</artifactId>
   <version>2.0.1.Final</version>
</dependency>

        
        
        
  	<dependency>
  		<groupId>javax.servlet</groupId>
  		<artifactId>javax.servlet-api</artifactId>
  		<version>3.1.0</version>
  		<scope>provided</scope>
  	</dependency>
  	<dependency>
  		<groupId>org.springframework</groupId>
  		<artifactId>spring-webmvc</artifactId>
  		<version>4.2.4.RELEASE</version>
  	</dependency>
  	<dependency>
  		<groupId>javax.servlet</groupId>
  		<artifactId>jstl</artifactId>
  		<version>1.2</version>
  		<scope>runtime</scope>
  	</dependency>
  </dependencies>
  <properties>
  	<maven.compiler.source>1.8</maven.compiler.source>
  </properties>
</project>



存在的疑问:

  1. 在BookEditForm.jsp中为什么会用到<c:url>(书上的解释为update-book为静态值,如果把静态值给action的话会有问题,不过为什么update是静态值)
    图片说明

  2. 在控制器类中返回的是"redirect:/list-book"而不是"/list-book"前面的redirect是代表什么?
    图片说明

3.还没有完全弄懂这些MVC之间的逻辑关系