1.有了数据绑定,类型总是为了String的HTTP请求参数,可用于填充不同的类型的对象属性

2.表单标签库

为了使用这些标签,必须在jsp页面开头处声明这个taglib指令

<%@taglib prefix="form" uri="http://www.springframework.org/tags/form"%>

form,input,password,hidden,textarea,checkbox,checkboxs,radiobutton,radiobuttons

select,option,options,errors渲染元素

表单标签

 1 <form:form commandName="book" action="book_save" method="post">
 2 </form>
 3
 4 commandName它定义了模型属性的名称,其属性用于填充所生成的表单
 5
 6 @RequestMapping("/book_input")
 7 public String inputBook(Model model){
 8
 9      model.addAttribute("book",new Book());
10 }
11
12 如果没有Model属性,jsp会报错,无法找到commandName属性

input标签:

 1 <form:input id="isbn" path="isbn" cssErrorClass="errorBox">2 </form>path:属性,它将这个输入的字段绑定到book的一个属性,绑定到book的isbn属性 5

数据绑定范例:

1.Domain

 1 package app05a.domain;
 2
 3 import java.io.Serializable;
 4
 5 public class Book implements Serializable {
 6
 7     private static final long serialVersionUID = 1520961851058396786L;
 8     private long id;
 9     private String isbn;
10     private String title;
11     private Category category;
12     private String author;
13
14     public Book() {
15     }
16
17     public Book(long id, String isbn, String title,
18             Category category, String author) {
19         this.id = id;
20         this.isbn = isbn;
21         this.title = title;
22         this.category = category;
23         this.author = author;
24     }
25
26     public long getId() {
27         return id;
28     }
29     public void setId(long id) {
30         this.id = id;
31     }
32     public String getIsbn() {
33         return isbn;
34     }
35     public void setIsbn(String isbn) {
36         this.isbn = isbn;
37     }
38     public String getTitle() {
39         return title;
40     }
41     public void setTitle(String title) {
42         this.title = title;
43     }
44     public Category getCategory() {
45         return category;
46     }
47     public void setCategory(Category category) {
48         this.category = category;
49     }
50     public String getAuthor() {
51         return author;
52     }
53     public void setAuthor(String author) {
54         this.author = author;
55     }
56 }

 1 package app05a.domain;
 2
 3 import java.io.Serializable;
 4
 5 public class Category implements Serializable {
 6     private static final long serialVersionUID = 5658716793957904104L;
 7     private int id;
 8     private String name;
 9
10     public Category() {
11     }
12
13     public Category(int id, String name) {
14         this.id = id;
15         this.name = name;
16     }
17
18     public int getId() {
19         return id;
20     }
21     public void setId(int id) {
22         this.id = id;
23     }
24     public String getName() {
25         return name;
26     }
27     public void setName(String name) {
28         this.name = name;
29     }
30 }

3.Controller

 1 package app05a.controller;
 2
 3 import java.util.List;
 4
 5 import org.apache.commons.logging.Log;
 6 import org.apache.commons.logging.LogFactory;
 7 import org.springframework.beans.factory.annotation.Autowired;
 8 import org.springframework.stereotype.Controller;
 9 import org.springframework.ui.Model;
10 import org.springframework.web.bind.annotation.ModelAttribute;
11 import org.springframework.web.bind.annotation.PathVariable;
12 import org.springframework.web.bind.annotation.RequestMapping;
13
14 import app05a.domain.Book;
15 import app05a.domain.Category;
16 import app05a.service.BookService;
17
18 @Controller
19 public class BookController {
20
21     @Autowired
22     private BookService bookService;
23
24     private static final Log logger = LogFactory.getLog(BookController.class);
25
26     @RequestMapping(value = "/book_input")
27     public String inputBook(Model model) {
28         List<Category> categories = bookService.getAllCategories();
29         model.addAttribute("categories", categories);
30         model.addAttribute("book", new Book());
31         return "BookAddForm";
32     }
33
34     @RequestMapping(value = "/book_edit/{id}")
35     public String editBook(Model model, @PathVariable long id) {
36         List<Category> categories = bookService.getAllCategories();
37         model.addAttribute("categories", categories);
38         Book book = bookService.get(id);
39         model.addAttribute("book", book);
40         return "BookEditForm";
41     }
42
43     @RequestMapping(value = "/book_save")
44     public String saveBook(@ModelAttribute Book book) {
45         Category category = bookService.getCategory(book.getCategory().getId());
46         book.setCategory(category);
47         bookService.save(book);
48         return "redirect:/book_list";
49     }
50
51     @RequestMapping(value = "/book_update")
52     public String updateBook(@ModelAttribute Book book) {
53         Category category = bookService.getCategory(book.getCategory().getId());
54         book.setCategory(category);
55         bookService.update(book);
56         return "redirect:/book_list";
57     }
58
59     @RequestMapping(value = "/book_list")
60     public String listBooks(Model model) {
61         logger.info("book_list");
62         List<Book> books = bookService.getAllBooks();
63         model.addAttribute("books", books);
64         return "BookList";
65     }
66 }

4.Service

 1 package app05a.service;
 2
 3 import java.util.List;
 4
 5 import app05a.domain.Book;
 6 import app05a.domain.Category;
 7
 8 public interface BookService {
 9
10     List<Category> getAllCategories();
11     Category getCategory(int id);
12     List<Book> getAllBooks();
13     Book save(Book book);
14     Book update(Book book);
15     Book get(long id);
16     long getNextId();
17
18 }

5.

  1 package app05a.service;
  2
  3 import java.util.ArrayList;
  4 import java.util.List;
  5
  6 import org.springframework.stereotype.Service;
  7
  8 import app05a.domain.Book;
  9 import app05a.domain.Category;
 10
 11 @Service
 12 public class BookServiceImpl implements BookService {
 13
 14     /*
 15      * this implementation is not thread-safe
 16      */
 17     private List<Category> categories;
 18     private List<Book> books;
 19
 20     public BookServiceImpl() {
 21         categories = new ArrayList<Category>();
 22         Category category1 = new Category(1, "Computing");
 23         Category category2 = new Category(2, "Travel");
 24         Category category3 = new Category(3, "Health");
 25         categories.add(category1);
 26         categories.add(category2);
 27         categories.add(category3);
 28
 29         books = new ArrayList<Book>();
 30         books.add(new Book(1L, "9780980839623",
 31                 "Servlet & JSP: A Tutorial",
 32                 category1, "Budi Kurniawan"));
 33         books.add(new Book(2L, "9780980839630",
 34                 "C#: A Beginner's Tutorial",
 35                 category1, "Jayden Ky"));
 36     }
 37
 38     @Override
 39     public List<Category> getAllCategories() {
 40         return categories;
 41     }
 42
 43     @Override
 44     public Category getCategory(int id) {
 45         for (Category category : categories) {
 46             if (id == category.getId()) {
 47                 return category;
 48             }
 49         }
 50         return null;
 51     }
 52
 53     @Override
 54     public List<Book> getAllBooks() {
 55         return books;
 56     }
 57
 58     @Override
 59     public Book save(Book book) {
 60         book.setId(getNextId());
 61         books.add(book);
 62         return book;
 63     }
 64
 65     @Override
 66     public Book get(long id) {
 67         for (Book book : books) {
 68             if (id == book.getId()) {
 69                 return book;
 70             }
 71         }
 72         return null;
 73     }
 74
 75     @Override
 76     public Book update(Book book) {
 77         int bookCount = books.size();
 78         for (int i = 0; i < bookCount; i++) {
 79             Book savedBook = books.get(i);
 80             if (savedBook.getId() == book.getId()) {
 81                 books.set(i, book);
 82                 return book;
 83             }
 84         }
 85         return book;
 86     }
 87
 88     @Override
 89     public long getNextId() {
 90         // needs to be locked
 91         long id = 0L;
 92         for (Book book : books) {
 93             long bookId = book.getId();
 94             if (bookId > id) {
 95                 id = bookId;
 96             }
 97         }
 98         return id + 1;
 99     }
100 }

5.配置文件

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4     xmlns:p="http://www.springframework.org/schema/p"
 5     xmlns:mvc="http://www.springframework.org/schema/mvc"
 6     xmlns:context="http://www.springframework.org/schema/context"
 7     xsi:schemaLocation="
 8         http://www.springframework.org/schema/beans
 9         http://www.springframework.org/schema/beans/spring-beans.xsd
10         http://www.springframework.org/schema/mvc
11         http://www.springframework.org/schema/mvc/spring-mvc.xsd
12         http://www.springframework.org/schema/context
13         http://www.springframework.org/schema/context/spring-context.xsd">
14
15     <context:component-scan base-package="app05a.controller"/>
16     <context:component-scan base-package="app05a.service"/>
17
18     <mvc:annotation-driven/>
19     <mvc:resources mapping="/css/**" location="/css/"/>
20     <mvc:resources mapping="/*.html" location="/"/>
21
22     <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
23         <property name="prefix" value="/WEB-INF/jsp/"/>
24         <property name="suffix" value=".jsp"/>
25     </bean>
26
27 </beans>

6.视图

 1 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
 2 <!DOCTYPE HTML>
 3 <html>
 4 <head>
 5 <title>Book List</title>
 6 <style type="text/css">@import url("<c:url value="/css/main.css"/>");</style>
 7 </head>
 8 <body>
 9
10 <div id="global">
11 <h1>Book List</h1>
12 <a href="<c:url value="/book_input"/>">Add Book</a>
13 <table>
14 <tr>
15     <th>Category</th>
16     <th>Title</th>
17     <th>ISBN</th>
18     <th>Author</th>
19     <th>&nbsp;</th>
20 </tr>
21 <c:forEach items="${books}" var="book">
22     <tr>
23         <td>${book.category.name}</td>
24         <td>${book.title}</td>
25         <td>${book.isbn}</td>
26         <td>${book.author}</td>
27         <td><a href="book_edit/${book.id}">Edit</a></td>
28     </tr>
29 </c:forEach>
30 </table>
31 </div>
32 </body>
33 </html>

 1 <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
 2 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
 3 <!DOCTYPE HTML>
 4 <html>
 5 <head>
 6 <title>Add Book Form</title>
 7 <style type="text/css">@import url("<c:url value="/css/main.css"/>");</style>
 8 </head>
 9 <body>
10
11 <div id="global">
12 <form:form commandName="book" action="book_save" method="post">
13     <fieldset>
14         <legend>Add a book</legend>
15         <p>
16             <label for="category">Category: </label>
17              <form:select id="category" path="category.id"
18                 items="${categories}" itemLabel="name"
19                 itemValue="id"/>
20         </p>
21         <p>
22             <label for="title">Title: </label>
23             <form:input id="title" path="title"/>
24         </p>
25         <p>
26             <label for="author">Author: </label>
27             <form:input id="author" path="author"/>
28         </p>
29         <p>
30             <label for="isbn">ISBN: </label>
31             <form:input id="isbn" path="isbn"/>
32         </p>
33
34         <p id="buttons">
35             <input id="reset" type="reset" tabindex="4">
36             <input id="submit" type="submit" tabindex="5"
37                 value="Add Book">
38         </p>
39     </fieldset>
40 </form:form>
41 </div>
42 </body>
43 </html>

 1 <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
 2 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
 3 <!DOCTYPE HTML>
 4 <html>
 5 <head>
 6 <title>Edit Book Form</title>
 7 <style type="text/css">@import url("<c:url value="/css/main.css"/>");</style>
 8 </head>
 9 <body>
10
11 <div id="global">
12 <form:form commandName="book" action="/book_update" method="post">
13     <fieldset>
14         <legend>Edit a book</legend>
15         <form:hidden path="id"/>
16         <p>
17             <label for="category">Category: </label>
18              <form:select id="category" path="category.id" items="${categories}"
19                 itemLabel="name" itemValue="id"/>
20         </p>
21         <p>
22             <label for="title">Title: </label>
23             <form:input id="title" path="title"/>
24         </p>
25         <p>
26             <label for="author">Author: </label>
27             <form:input id="author" path="author"/>
28         </p>
29         <p>
30             <label for="isbn">ISBN: </label>
31             <form:input id="isbn" path="isbn"/>
32         </p>
33
34         <p id="buttons">
35             <input id="reset" type="reset" tabindex="4">
36             <input id="submit" type="submit" tabindex="5"
37                 value="Update Book">
38         </p>
39     </fieldset>
40 </form:form>
41 </div>
42 </body>
43 </html>

7.测试应用

http://localhost:8080/app05a/book_list

转载于:https://www.cnblogs.com/sharpest/p/5308969.html

5.数据绑定和表单标签库相关推荐

  1. 表单标签库与数据绑定

    表单标签库 表单标签库中包含了可以用在JSP页面中渲染HTML元素的标签.在JSP页面使用表单标签库时,需要在JSP页面开头处声明taglib指令: <%@ taglib prefix=&quo ...

  2. SpringMVC:学习笔记(5)——数据绑定及表单标签

    SpringMVC--数据绑定及表单标签 理解数据绑定 为什么要使用数据绑定 基于HTTP特性,所有的用户输入的请求参数类型都是String,比如下面表单: 按照我们以往所学,如果要获取请求的所有参数 ...

  3. Spring MVC数据绑定和表单标签的应用(附带实例)

    为了让读者进一步学习数据绑定和表单标签,本节给出了一个应用范例 springMVCDemo04.该应用中实现了 User 类属性和 JSP 页面中表单参数的绑定,同时在 JSP 页面中分别展示了 in ...

  4. Spring MVC的表单标签库详解

    表单标签库中包含了可以用在 JSP 页面中渲染 HTML 元素的标签.在 JSP 页面使用 Spring 表单标签库时,必须在 JSP 页面开头处声明 taglib 指令,指令代码如下: <%@ ...

  5. SpringMVC的表单标签库

    目录 1.form标签 2.input标签 3.password标签 4.hidden标签 5.textarea标签 6.checkbox标签 7.checkboxes标签 8.radiobutton ...

  6. Spring MVC JSP 表单标签教程

    在本教程中,我们将通过一个示例讨论所有与Spring MVC相关的JSP表单标签. 在本教程中,我们将使用下面重要的弹簧MVC表单标签进行讨论: 表单标签 文本字段标签 选择标签 复选框 无线电盒 密 ...

  7. 中input标签赋值_Java程序员:Spring MVC JSP表单标签示例

    Spring MVC的表单标签为Java程序员提供了许多额外的支持.例如数据绑定,允许自动设置数据并从Java对象中检索数据. 从2.0版本开始,Spring提供了一组全面的数据绑定感知标记,用于在使 ...

  8. springmvc十九:springmvc表单标签

    1. Spring提供的轻量级标签库 2.可在JSP页面中渲染HTML元素的标签 3 用法 1)必须在JSP页面的开头处声明taglib指令 <%@ taglib prefix="fm ...

  9. SpringMVC学习系列(11) 之 表单标签

    2019独角兽企业重金招聘Python工程师标准>>> 本篇我们来学习Spring MVC表单标签的使用,借助于Spring MVC提供的表单标签可以让我们在视图上展示WebMode ...

最新文章

  1. 用 GStreamer 简化 Linux 多媒体开发
  2. PHP函数series,PHP: 简介 - Manual
  3. 任务五十二:王牌特工
  4. OPENCV计算图片间转换关系
  5. html 宽度和高度,如何检索HTML元素的实际宽度和高度?
  6. 【OpenCV3】棋盘格角点检测与绘制——cv::findChessboardCorners()与cv::drawChessboardCorners()详解
  7. 补充spring事务传播性没有考虑的几种情况
  8. 三角网导线平差实例_网平差三角网三边导线网.doc
  9. 点乘叉乘坐标公式_点积与叉乘的运算与物理意义
  10. MVDR波束形成MATLAB实现
  11. 区块链开发公司谈区块链与大数据的关系
  12. 【数据结构与算法】数据结构与算法最基础理论
  13. 静态文件用什么服务器配置,静态文件服务器路径怎么配置好
  14. opencv之使用floodfill填充孔洞
  15. IDEA插件推荐:Material Theme UI(把IDEA变得更加美观)
  16. 树状数组专题【完结】
  17. [企业信息化大家学系列]处于变革边缘的中国供应链管理
  18. javaWeb随机生成网页验证码图片
  19. mysql字段包含空格查询
  20. 计算机vga,电脑启用vga模式是什么意思?怎么修复?

热门文章

  1. 个人作业-Alpha项目测试
  2. iOS实录15:浅谈iOS Crash
  3. MathJax: 让前端支持数学公式
  4. 《ArcGIS Runtime SDK for Android开发笔记》——(4)、基于Android Studio构建ArcGIS Android开发环境...
  5. Go - 反射中 函数 和 方法 的调用 - v.Call()
  6. [读书笔记]C#学习笔记七: C#4.0中微小改动-可选参数,泛型的可变性
  7. MyEclipse项目中的包层次视图
  8. ubuntu访问win7
  9. hibernate(八)之事物---悲观锁
  10. wince中的hook(钩子)用法