`

在Struts 2中实现CRUD(Struts 2系列之十)

阅读更多
 

CRUD是Create(创建)、Read(读取)、Update(更新)和Delete(删除)的缩写,它是普通应用程序的缩影。如果您掌握了某框架的CRUD编写,那么意味可以使用该框架创建普通应用程序了,所以大家使用新框架开发OLTP(Online Transaction Processing)应用程序时,首先会研究一下如何编写CRUD。这类似于大家在学习新编程语言时喜欢编写“Hello World”。

本文旨在讲述Struts 2上的CRUD开发,所以为了例子的简单易懂,我不会花时间在数据库的操作上。取而代之的是一个模拟数据库的哈希表(Hash Map)。

具体实现

首先,让我们看看的“冒牌”的DAO(Data Access Object,数据访问对象),代码如下:

package tutorial.dao;

import java.util.Collection;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;

import tutorial.model.Book;

public class BookDao {
   
private static final BookDao instance;
   
private static final ConcurrentMap<String, Book> data;
   
   
static {
       instance
= new BookDao();
       data
= new ConcurrentHashMap<String, Book>();
       data.put(
"978-0735619678", new Book("978-0735619678", "Code Complete, Second Edition", 32.99));
       data.put(
"978-0596007867", new Book("978-0596007867", "The Art of Project Management", 35.96));
       data.put(
"978-0201633610", new Book("978-0201633610", "Design Patterns: Elements of Reusable Object-Oriented Software", 43.19));
       data.put(
"978-0596527341", new Book("978-0596527341", "Information Architecture for the World Wide Web: Designing Large-Scale Web Sites", 25.19));
       data.put(
"978-0735605350", new Book("978-0735605350", "Software Estimation: Demystifying the Black Art", 25.19));
   }

   
   
private BookDao() {}
   
   
public static BookDao getInstance() {
       
return instance;
   }

   
   
public Collection<Book> getBooks() {
       
return data.values();
   }

   
   
public Book getBook(String isbn) {
       
return data.get(isbn);
   }

   
   
public void storeBook(Book book) {
       data.put(book.getIsbn(), book);
   }

       
   
public void removeBook(String isbn) {
       data.remove(isbn);
   }

   
   
public void removeBooks(String[] isbns) {
       
for(String isbn : isbns) {
           data.remove(isbn);
       }

   }

}
清单1 src/tutorial/dao/BookDao.java

以上代码相信不用解释大家也清楚,我使用ConcurrentMap数据结构存储Book对象,这主要是为了方便检索和保存Book对象;另外,我还将data变量设为静态唯一来模拟应用程序的数据库。

接下来是的数据模型Book类,代码如下:

package tutorial.model;

public class Book {
   
private String isbn;
   
private String title;
   
private double price;
   
   
public Book() {        
   }

   
   
public Book(String isbn, String title, double price) {
       
this.isbn = isbn;
       
this.title = title;
       
this.price = price;
   }


   
public String getIsbn() {
       
return isbn;
   }


   
public void setIsbn(String isbn) {
       
this.isbn = isbn;
   }


   
public double getPrice() {
       
return price;
   }


   
public void setPrice(double price) {
       
this.price = price;
   }


   
public String getTitle() {
       
return title;
   }


   
public void setTitle(String title) {
       
this.title = title;
   }
   
}
清单2 src/tutorial/model/Book.java

Book类有三个属性isbn,、title和price分别代表书籍的编号、名称和价格,其中编号用于唯一标识书籍(相当数据库中的主键)。

然后,我们再来看看Action类的代码:

package tutorial.action;

import java.util.Collection;

import tutorial.dao.BookDao;
import tutorial.model.Book;

import com.opensymphony.xwork2.ActionSupport;

public class BookAction extends ActionSupport {
   
private static final long serialVersionUID = 872316812305356L;
   
   
private String isbn;
   
private String[] isbns;
   
private Book book;
   
private Collection<Book> books;
   
private BookDao dao =  BookDao.getInstance();
       
   
public Book getBook() {
       
return book;
   }


   
public void setBook(Book book) {
       
this.book = book;
   }


   
public String getIsbn() {
       
return isbn;
   }


   
public void setIsbn(String isbn) {
       
this.isbn = isbn;
   }


   
public String[] getIsbns() {
       
return isbns;
   }


   
public void setIsbns(String[] isbns) {
       
this.isbns = isbns;
   }

       
   
public Collection<Book> getBooks() {
       
return books;
   }


   
public void setBooks(Collection<Book> books) {
       
this.books = books;
   }


   
public String load() {
       book
= dao.getBook(isbn);
       
return SUCCESS;
   }


   
public String list() {
分享到:
评论

相关推荐

    在Struts 2中实现CRUD

    ### Struts 2中实现CRUD操作详解 #### 一、引言 CRUD操作是软件开发中最常见的数据处理方式之一,它代表了对数据进行的四种...希望本文能帮助读者更好地理解Struts 2中的CRUD操作实现方法,并能在实际项目中灵活运用。

    Java Struts2 实现CRUD

    在Struts2中,创建新记录通常涉及以下步骤: 1. 创建一个Action类,这个类通常会有一个与添加操作相关的execute方法。 2. 设计一个JSP表单用于用户输入数据。 3. 使用Struts2的`.struts.xml`配置文件定义Action的...

    Struts2-Crud+JdbcDemo最简单的Struts2+jdbc学习曾删改查程序

    1. **Action类**:在Struts2中,业务逻辑通常封装在Action类中。一个Action类对应一个用户请求,处理相应的业务操作,并返回一个结果。 2. **配置文件**:主要包括struts.xml,它是Struts2的核心配置文件,用于定义...

    Struts2实现CRUD(增删改查)Maven版

    Struts2实现CRUD(增 删 改 查) Maven版; eclipse直接导入使用; 教程地址:http://blog.csdn.net/sky_zhangfan/article/details/1896842

    Struts实现CRUD操作

    在本教程中,我们将探讨如何利用Struts实现CRUD(创建、读取、更新和删除)操作,这是一些基本但至关重要的数据库交互功能。 首先,理解Struts框架的核心组件至关重要。ActionServlet是Struts的入口点,它处理HTTP...

    struts2CRUD

    在Struts2中,Action类作为Controller,处理用户的请求;Model通常是业务对象,负责数据的处理和存储;View则用于展示数据,通常由JSP页面或者FreeMarker模板实现。 3. **CRUD操作** CRUD操作是数据库管理中最基础...

    Struts 2.0系列(MAX)

    Struts 2.0系列(MAX),pdf格式,全方位介绍struts2: 常用的Struts 2.0的标志(Tag)介绍 Struts 2.0的Action讲解 ...在Struts 2中实现CRUD Struts 2中的OGNL Strus 2的新表单标志的使用 Struts 2与AJAX

    Struts2实现CRUD

    Struts2实现CRUD 实用的例子借助Struts2框架开发Web应用会减少大量的代码量

    用Struts实现Table的CRUD(create、read、update、delete)

    在Struts2中,可以通过Spring整合这些框架,实现依赖注入,使得DAO(Data Access Object)层能方便地操作数据库。 在Struts2中,异常处理也非常重要。通过`&lt;global-exception-mappings&gt;`标签可以全局处理异常,而`...

    Struts2_CRUD.rar_Struts2_CRUD_Struts2的增改删查 操作 示例_struts2_struts2

    Struts2是一个强大的Java EE应用程序框架...通过学习这个示例,初学者可以理解如何在Struts2中组织Action、Form、Interceptor、配置文件和视图,以及如何实现CRUD操作和模糊查找功能,为后续的Web开发打下坚实的基础。

    struts2 CRUD

    在Struts2中,我们使用`valueStack`和OGNL(Object-Graph Navigation Language)表达式来在Action和JSP之间传递数据。 更新(Update)操作涉及到修改已存在的记录。用户在表单中修改数据并提交后,Struts2 Action会...

    strutsCRUD1.rar_crud struts_struts1 crud_strutsCRUD1

    在本示例中,"strutsCRUD1.rar" 是一个包含Struts1实现CRUD操作的项目压缩包。CRUD代表创建(Create)、读取(Retrieve)、更新(Update)和删除(Delete),这是数据库操作的基本功能。 首先,让我们讨论一下Struts1的核心...

    struts2帮助文档

    struts2中实现CRUD struts2中的OGNL struts2的新表单标志的使用 struts2与AJAX一 struts2与AJAX二 struts2与AJAX三 struts2中用Spring实现IOC struts2中的零配置与IOC struts2介绍之使用连接标签 struts2入门 struts...

    带struts2和hibernate的crud小demo

    在这个Demo中,你将看到如何利用Struts2的Action和Hibernate的DAO(Data Access Object)来实现这四个基本操作。 1. 创建:用户提交表单后,Struts2的Action接收到请求,然后调用Hibernate的DAO方法将对象持久化到...

    Strut-crud.war(Struts的CRUD Demo Sample)

    struts的crud sample demo(struts-crud.war) 可以直接解压查看代码,或者放到工程中运行

    struts2.0中文教程

    01 为Struts 2.0做好准备 02 常用的Struts 2.0的标志(Tag) 03 Struts 2.0的Action讲解 04 在Struts 2.0中国际化...10 在Struts 2中实现CRUD 11 Struts 2中的OGNL 12 trus 2的新表单标志的使用 13 Struts 2与AJAX

    struts2-crud.zip_DEMO_Java web CRUD demo_struts2 CRUD_struts2 de

    1. **Action类**:在Struts2中,业务逻辑主要由Action类处理。每个Action类对应一个用户请求,负责处理用户的请求并返回相应的结果。 2. **配置文件**:Struts2的配置文件(通常为struts.xml)用于定义Action类、...

    struts_crud

    在Struts框架中实现CRUD操作,可以让我们更高效地开发Web应用。 Struts的CRUD实现主要涉及以下几个方面: 1. **Action类**:这是处理用户请求的核心组件。每个Action类对应一个业务逻辑,比如创建新记录、读取记录...

    struts2与hibernate的整合实现数据的crud

    7. **Action层设计**:在Struts2的Action类中,注入Service层的实现,根据用户的请求调用相应的Service方法,处理业务逻辑。 8. **JSP页面**:使用JSTL或EL表达式展示数据,结合JQuery进行前端交互,例如复选框删除...

Global site tag (gtag.js) - Google Analytics