CRUD - это аббревиатура создания, чтения, обновления и удаления, и это микрокосм обычных приложений. Если вы овладеете написанием CRUD в рамках, это означает, что вы можете использовать структуру для создания обычных приложений. Поэтому, когда вы используете новую структуру для разработки приложений OLTP (онлайн -обработка транзакций), вы сначала изучите, как писать CRUD. Это похоже на то, как людям нравится писать «Hello World» при изучении новых языков программирования.
Эта статья предназначена для описания разработки CRUD на стойках 2, поэтому ради простоты и простоты понимания я не буду тратить время на операции базы данных. Вместо этого хэш -таблица (хэш -карта), которая имитирует базу данных.
Конкретная реализация
Во -первых, давайте посмотрим на «поддельный» DAO (объект доступа к данным, объект доступа к данным), код заключается в следующем:
Учебник по пакетам. DAO; импорт java.util.collection; import java.util.concurrent.concurrenthashmap; import java.util.concurrent.concurrentmap; импорт turniormorial.model.book; public class bookdao {private Static Final Bookdao Encence; Private Static ConcurrentMap <строка> Bookdao (); data = new concurrenthashmap <string, book> (); data.put ("978-0735619678", новая книга ("978-0735619678", "Код, второе издание", 32.99); Data.put ("978-0596007866,", New.); Книга («978-0596007867», «Искусство управления проектами», 35,96)); data.put («978-0201633610», Новая книга («978-0201633610», «Проектирование: элементы многократного использования объектно-ориентированного программного обеспечения», 43,19)); «Data.pul (978-0577». Книга («978-0596527341», «Информационная архитектура для Всемирной паутины: проектирование крупномасштабных веб-сайтов», 25.19)); Data.put («978-0735605350», Новая книга («978-0735605350», «Программное обеспечение Оценка: демистификация черной арт», 25.19); {} public static bookdao getInstance () {return exaction;} public collection <book> getBooks () {return data.values ();} public book getBook (string isbn) {return data.get (isbn);} public void StoreBook (книга книга) {data.put (book.getisbn (), book); {data.remove (isbn);} public void remoteBooks (string [] isbn) {for (string isbn: isbn) {data.remove (isbn);}}}Листинг 1 SRC/TURANTION/DAO/BOUBDAO.JAVA
Я считаю, что для вышеуказанного кода не требуется объяснение. Я использую структуру данных condurentMap для хранения книжных объектов, которые в основном для облегчения поиска и хранения книжных объектов; Кроме того, я также установил, что переменная данных статически уникальной для моделирования базы данных приложения.
Далее следует класс книги модели данных, код выглядит следующим образом:
пакет turning.model; открытый класс книга {частная строка isbn; титул частной строки; частная двойная цена; public book () {} public book (string isbn, название строки, двойная цена) {this.isbn = isbn; this.title = title; this.price = price;} public String getisbn () {return isbn;} public void vesbn (string.sbn (string. isbn;} public double getPrice () {return Price;} public void setprice (двойная цена) {this.price = price;} public String getTitle () {return titЛистинг 2 SRC/TURAND/MODEL/BOOK.JAVA
Класс книг имеет три атрибута: ISBN, заголовок и цена представляют номер, имя и цену книги соответственно. Число используется для однозначного идентификации книги (эквивалентно первичному ключу в базе данных).
Затем давайте посмотрим на код класса действий:
Учебное пособие по пакетам. Коллекция <book> книги; частная книга DAO = bookDao.getInstance (); public book getBook () {return book;} public void setbook (книга книги) {this.book = book;} public String getisbn () {return isbn;} public void setisbn (String isbn) {isbn = isbn; isbn;} public void setisbnns (string [] isbnns) {this.isbns = isbnns;} public collection <book> getBooks () {return Books;} public void setbooks (collection <book> books) {this.books = books;} public String load () {book = dao.getbook (isbn); dao.getbooks (); return Success;} public String Store () {dao.StoreBook (book); return Success;} public String remove () {if (null! = isbn) {dao.removebook (isbn);} elsЛистинг 3 SRC/TURANTION/ACTION/BOOKACTION.JAVA
В классе BookAction атрибут ISBN используется для представления количества книг, которые будут отредактированы или удаляются, атрибут ISBN используется для представления количества книг, которые будут удалены, книга атрибутов представляет текущую книгу, а книги атрибутов представляют собой текущий список книг. BookAction имеет четыре метода действий, загрузку, перечисление, хранение и удаление, то есть CRUD, все реализовано в BookAction.
Далее находится код конфигурации действия:
<? xml version = "1.0" Encoding = "UTF-8"?> <! Doctype Struts Public "-// Apache Software Foundation // DTD Struts Configuration 2.0 // en" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <ducke name = "struts2_crud_crud_crud_crud_crud_crud_crud_crud_crud_10.0.dtd" extends = "struts-default" kinespace = "/book"> <name = "list" method = "list"> <sesult> list.jsp </result> </action> <name = "edit" method = "> <sult> <sult> edit.jsp </result> </action> <name =" store "method ="> <result. result. resirect "> resect.> actore. name = "remove" method = "удалить"> <result type = "redirect"> list.action </result> </action> </package> </struts>
Список 4 src/struts.xml
В приведенной выше конфигурации я использовал четыре определения действий. Все они находятся в пространстве имен «/книга». Таким образом, я могу назвать четыре метода действий книги для операций CRUD «http: // localhost: 8080/struts2_crud/book/list.action», «http: // localhost: 8080/struts2_crud/book/edit.action», «http: // localhost: 8080/struts2_crud». «http: // localhost: 8080/struts2_crud/book/remove.action». Конечно, это просто личное предпочтение. Вы можете определить действие (при условии, что его название «книга»), а затем получить доступ к нему через «http: // localhost: 8080/struts2_crud/book! List.action». Для получения подробной информации, пожалуйста, обратитесь к «Объяснению действий на стойке 2.0». Кроме того, я использую результат перенаправления типа (перенаправление), так как я хочу вернуться на страницу списка после завершения редактирования или удаления.
Вот код для страницы списка:
< %@ page language = "java" contentType = "text/html; charset = utf-8" pageencoding = "utf-8" %> < %@ taglib prefix = "s" uri = "/struts-cals" %> <! doctype html public "// w3c // dtd xhtml 1,0 transity // en eranity // en eranity//en"-// w3c // dtd xhtml 1,0 "-// w3c // dtd xhtml 1,0"-// w3c // dtd xhtml 1,0 ". "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd"><html xmlns =" http://www.w3.org/1999/xhtml "> <Head> <title> Title> </title> Solid Black; Border-Collapse: Collapsse;} Таблица Thead Tr Th {Border: 1px Solid Black; Padding: 3px; фоновый цвет: #ccccc;} таблица tbode td {border: 1px Solid Black; Padding: 3px;} </style> </Head> <body> <h2> Список книг </h2> <raft active = rave aeft aembe = remoge aember emaft aembe = strable emove = "habe emaft aembe =" "Hod> <h2> </h2> <f: style> </head> </h2 <h2> </h2> <b cellPacing = "0"> <TheAd> <tr> <th> Select </th> <Th> ISBN </th> <Th> Title </th> <Th> Price </th> <Th> операция </th> </tr> </thead> <tbody> <s: it value = "books"> <td> <td> <type = "cheame" vatue "vature". /> ' /> < /td> <td> <s: value value = "isbn" /> /> < /td> <td> $ <s: property value = "price" /> < /td> <td> <a href =' <s: url action = "redit"> <s name = "isbn" value = "isbn" /> < /s: url> '>'> '>'> '>'> 'eSt eStiT <S>'> '>' eSt vame = "isBn" href = '<s: url action = "удалить"> <s: param name = "isbn" value = "isbn"/> </s: url>'> delete </a> </td> </tr> </s: итератор> </tbody> </table> <s: seper value = "remove"/> <a href = "edit. </body> </html>Список 5 WebContent/book/list.jsp
В приведенном выше коде стоит отметить, что в теге <S: Form> я установил свойство темы на «простой», чтобы она мог отменить макет таблицы по умолчанию. Ранее некоторые друзья спрашивали меня: «Что мне делать, если я не хочу, чтобы кнопка отправки была размещена справа?» Вышеупомянутое потоотделение является одним из ответов. Конечно, лучше настроить тему и по умолчанию применить ее на весь сайт, чтобы вы могли получить унифицированный стиль сайта. Я подробно опишу это в будущих статьях.
Код страницы для редактирования или добавления книг выглядит следующим образом:
< %@ page language = "java" contentType = "text/html; charset = utf-8" pageencoding = "utf-8" %> < %@ taglib prefix = "s" uri = "/struts-cals" %> <! doctype html public "// w3c // dtd xhtml 1,0 transity // en eranity // en eranity//en"-// w3c // dtd xhtml 1,0 "-// w3c // dtd xhtml 1,0"-// w3c // dtd xhtml 1,0 ". "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd"><html xmlns =" http://www.w3.org/1999/xhtml "> <Head> <title> </haul> <bod> <hod> <hod> <hod> <ho2> <ho2> <ho2> <ho Head> <ha2> <ho Head> <ho Head> <ho Head> <ha2> <ho Head> <ho Head> == Книга "> Добавить книгу < /s: if> <s: else> redit book < /s: else> < /h2> <s: form action =" store "> <S: textfield name =" book.isbn "label =" isbn " /> <s: textfield name =" book.title "label =" title " /> <s: textfield name =" book. /> </s: форма> </body> </html>
Листинг 6 WebContent/book/edit.jsp
Если книга нулевая, это означает, что страница используется для добавления книг, и наоборот - это страница редактирования.
Чтобы облегчить всем, чтобы запустить примеры, я также опубликовал код web.xml следующим образом:
<? xml version = "1.0" Encoding = "utf-8"?> <web-app id = "webapp_9" версия = "2.4" xmlns = "http://java.sun.com/xml/ns/j2ee" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xsi: schemalocation = "http://java.sun.commlee" xsi: schemalocation = "http://java.sun.com/xmlee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> функциональности имени FileUpload </display-name> <filter> <filter-name> struts2 </filter-name> <filter-class> org.apache.struts2.dispatcher.filterdispatcher </filter-class> </filter> <filter-mapping> <filter-name> struts2 </filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <selcload-file-list> <selcower-file> index.html </werveding-file> </werveding-file-list> </web-app>
Список 7 WebContent/Web-Inf/web.xml
Задача выполнена, опубликовано следующее для запуска приложения, тип: http: // localhost: 8080/struts2_crud/book/list.action в браузере, и появляется страница, показанная на рисунке ниже:
Листинг 8 Страница листинга
Нажмите «Добавить книгу», и появляется страница, показанная на рисунке ниже:
Листинг 9 Добавить страницу книги
Вернитесь на страницу списка и нажмите «Редактировать», и представлена страница, показанная на рисунке ниже:
Листинг 10 страница книги «Редактировать
Суммировать
В этой статье лишь кратко представлены метод реализации CRUD Struts 2, поэтому не реализовано много функций, таких как интернационализация и проверка данных. Вы можете улучшить его на основе приведенного выше примера, и это также хорошо для практики. Если вы не понимаете, пожалуйста, оставьте мне сообщение. Редактор ответит на всех вовремя. Большое спасибо за вашу поддержку на веб -сайте Wulin Network!