首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 开源 FAQ 第二书店 博文视点 程序员
频道: 研发 数据库 中间件 信息化 视频 .NET Java 游戏 移动 服务: 人才 外包 培训
    图书品种:235680
       
热门搜索: ASP.NET Ajax Spring Hibernate Java

21.12  图书管理功能模块

21.12.1  图书管理功能模块

图书管理功能模块的具体功能如下。

图书入库:用于添加图书信息。

图书查询:用于显示图书的基本信息。

图书修改:用于修改图书信息。

图书删除:用于删除图书信息。

库存进入:用于添加图书数目。

库存预警:用户库存不足10本的图书查询。

21.12.2  创建图书的Action实现类

主要技术:继承了DispatchAction类,对图书信息实现多业务操作。

图书功能模块的Action实现类BookAction继承了DispatchAction类,实现多业务操作。在该类中,首先需要在该类属性中实例化图书模块的BookDao类(该类用于实现与数据库的交互)。图书管理模块Action实现类的关键代码如下。

例程21-30:光盘\mr\21\wyBooks\src\com\action\BookAction.java

package com.action;

import org.apache.struts.action.ActionMapping;

import org.apache.struts.action.ActionForm;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.ActionForward;

import com.actionForm.BookForm;

import org.apache.struts.actions.DispatchAction;

import com.dao.BookDao;

public class BookAction extends DispatchAction {

    private BookDao bookDao = new BookDao();

……  //此处省略了该类中的其他方法,这些方法将在后面的具体过程中给出

}

21.12.3  查看图书信息列表

管理员登录后,选择“图书管理”/“图书查询”菜单项,进入到查看图书列表页面,在该页面中将显示全部图书信息列表,同时提供删除图书信息、修改图书信息及具有分页功能的超链接。查看图书信息列表页面的运行结果如图21.15所示。

图21.15  查看图书信息列表页面的运行结果

1.查询图书信息Action类

打开保存实现半透明背景菜单的全部JavaScript代码的“JS\menu.JS”文件,可以找到如下所示的“图书查询”菜单项的超链接代码。

文件位置

<a href=bookAction.do?method=selectBookAction>图书查询</a>

从上面的URL地址中可以知道,查看图书信息列表模块涉及到的method的参数值为“selectBookAction”,当method=selectBookAction时,会调用BookAction类查看图书信息列表的方法selectBookAction()。查看图书信息列表selectBookAction()方法的关键代码如下。

例程21-31:光盘\mr\21\wyBooks\src\com\action\BookAction.java

public ActionForward selectBookAction(ActionMapping mapping,

            ActionForm form, HttpServletRequest request,

            HttpServletResponse response) {

        int number = 0;

        if (request.getParameter("number") != null) {

            number = Integer.parseInt(request.getParameter("number"));

        }

        request.setAttribute("number", String.valueOf(number));

        request.setAttribute("maxPage", String.valueOf(bookDao.selectBook()));

        request.setAttribute("list", bookDao.selectBook(number));

/*调用BookDao类中的selectBook()方法*/

        return mapping.findForward("selectBookAction");

    }

从上面的代码可以知道,查看图书信息列表使用的BookDAO类的方法是selectBook()。selectBook()方法实现的是对数据表的内容进行分段查询。分页查询的业务处理在方法体内进行处理,该方法的代码请读者查看21.9.5节中的相关内容。

2.struts-config.xml文件配置

在struts-config.xml文件中配置查看图书信息列表所涉及的<forward>元素,代码如下。

<action name="bookForm" parameter="method" path="/bookAction" scope="request" type="com.action. BookAction" validate="true">

      <forward name="selectBookAction" path="/book/selectBook.jsp"/>

</action>

接下来的工作是将Action实现类中的selectBook ()方法返回的查询结果显示在查看图书信息列表页selectBook.jsp中。在selectBook.jsp中,首先通过request.getAttribute()方法获取查询结果并将其保存在List容器类中,再通过循环将图书信息以列表形式显示在页面中。

21.12.4  添加图书信息

管理员登录系统后,选择“图书管理”/“图书入库”菜单项,进入到添加图书信息的页面。添加图书信息页面的运行结果如图21.16所示。

图21.16  添加图书信息页面的运行结果

1.设计添加图书信息页面

添加图书信息页面主要用于收集输入的图书信息,及通过自定义的JavaScript函数验证输入信息是否合法,该页面中涉及到的表单元素如表21.16所示。

表21.16                                       添加图书信息页面所涉及的表单元素

名    称

元 素 类 型

重 要 属 性

含    义

form

form

method="post" action="bookAction.do?method=insertBookAction" onSubmit="return checkEmpty(form)"

表单

hidden

bookNumber

value="<%=bookDao.selectMaxIdBook()%>"

图书编号

lineNumber

text

图书条形码

bookName

text

图书名称

author

text

图书作者

publish

text

出版社名称

publishNumber

text

出版次数

sortNumber

select

<%List sortList=bookSortDao.selectBookSortList();

for(int sort=0;sort<sortList.size();sort++){

BookSortForm sortForm=(BookSortForm)sortList.get(sort);

%>

<option value="<%=sortForm.getSortNumber()%>"><%=sortForm.getSortName()%></option>

<%}%>

图书种类编号

续表

名    称

元 素 类 型

重 要 属 性

含    义

inPirce

text

图书入库价格

singlePirce

text

图书售出价格

bookSum

text

图书入库数目

man

hidden

value="<%=session.getAttribute("account")%>"

操作员名称

creatime

hidden

value="<%=showTime.showCurrentTime()%>"

图书入库时间

Submit2

submit

value="添加"

【添加】按钮

Submit

reset

value="清除"

【清除】按钮

2.添加图书的Action实现类

在添加图书信息页面中输入合法的图书信息后,单击“添加”按钮,网页会访问一个URL,这个URL是“bookAction.do?method=insertBookAction”。从该URL地址中可以知道添加图书信息模块涉及到的method的参数值为“insertBookAction”,也就是当method= insertBookAction时,会调用BookAction类添加图书信息的方法insertBookAction(),添加图书信息insertBookAction ()方法的关键代码如下。

例程21-32:光盘\mr\21\wyBooks\src\com\action\BookAction.java

    public ActionForward insertBookAction(ActionMapping mapping,

            ActionForm form, HttpServletRequest request,

            HttpServletResponse response) {

        BookForm bookForm = (BookForm) form;

        if (bookForm.getAuthor() == null || bookForm.getAuthor().equals("")) {

            return mapping.findForward("insertBookAction");

/*当从页面中取得读者(author)信息为null时,进入图书入库页面*/

        }

        bookForm.setAuthor(bookForm.getAuthor());

        bookForm.setBookName(bookForm.getBookName());

        bookForm.setBookNumber(bookForm.getBookNumber());

        bookForm.setBookSum(bookForm.getBookSum());

        bookForm.setCreatime(bookForm.getCreatime());

        bookForm.setLineNumber(bookForm.getLineNumber());

        bookForm.setInPirce(bookForm.getInPirce());

        bookForm.setMan(bookForm.getMan());

        bookForm.setPublish(bookForm.getPublish());

        bookForm.setPublishNumber(bookForm.getPublishNumber());

        bookForm.setSinglePirce(bookForm.getSinglePirce());

        bookForm.setSortNumber(bookForm.getSortNumber());

        if (bookDao.insertBook(bookForm)) {

            request.setAttribute("message", "添加图书信息成功,请继续添加!!!");

        } else {

            request.setAttribute("message", "添加图书信息失败,请重新添加!!!");

        }

/*调用BookDao类,实现图书添加的操作*/

        return mapping.findForward("resultBookAction");

    }

3.struts-config.xml文件配置

在struts-config.xml文件中配置添加图书信息所涉及的<forward>元素,代码如下。

      <forward name="insertBookAction" path="/book/insertBook.jsp"/>

      <forward name="resultBookAction" path="/book/insertResultBook.jsp"/>

21.12.5  修改图书信息

管理员登录系统后,选择“图书管理”/“图书查询”菜单项,进入到查看图书列表的页面,在该页面中,单击想要修改的图书信息后面的“修改”超链接,进入到“修改图书信息”页面。修改图书信息页面的运行结果如图21.17所示。

图21.17  修改图书信息页面的运行结果

1.修改图书的Action实现类

在修改图书信息页面中修改图书信息后,单击【修改】按钮,网页会访问一个URL,URL是“bookAction.do?method=updateBookAction&bookNumber=BOOK-19&number=0”。从该URL地址中可以知道保存修改图书信息涉及到的method的参数值为“updateBookAction”,也就是当method= updateBookAction时,会调用bookAction类修改图书信息的方法updateBookAction()。保存修改图书信息的方法updateBookAction()的具体代码如下。

例程21-33:光盘\mr\21\wyBooks\src\com\action\BookAction.java

public ActionForward updateBookAction(ActionMapping mapping,

            ActionForm form, HttpServletRequest request,

            HttpServletResponse response) {

        BookForm bookForm = (BookForm) form;

        if (bookForm.getLineNumber().equals("")) {

            bookForm.setBookNumber(request.getParameter("bookNumber"));

            request.setAttribute("form", bookDao.selectBook(bookForm));

            return mapping.findForward("updateBookAction");

        }

        bookForm.setAuthor(bookForm.getAuthor());

//此处省略了用相关属性的getXXX方法重新设置该属性的setXXX方法的代码

        if (bookDao.updateBook(bookForm)) {

            request.setAttribute("result", "修改图书信息成功!!!");

        } else {

            request.setAttribute("result", "修改图书信息失败!!!");

        }

        return mapping.findForward("opeationBookAction");

    }

2.struts-config.xml文件配置

在struts-config.xml文件中配置修改图书信息页涉及的<forward>元素,代码如下。

      <forward name="opeationBookAction" path="/book/operationBook.jsp"/>

      <forward name="updateBookAction" path="/book/updateBook.jsp"/>

21.12.6  删除图书信息

管理员登录系统后,选择“图书管理”/“图书查询”菜单项,进入到查看图书列表页面,在该页面中单击想要删除的图书信息后面的“删除”超链接,进入到“删除图书信息”页面。

在“查看图书信息列表”页面中可以找到删除图书信息的超链接代码,如下所示。

<a href="javascript:deleteForm('<%=form.getBookNumber()%>','<%=number%>')">删除</a>

从上面的URL地址可以知道,单击“删除”超级链接触发的是脚本语言,该脚本语言的代码如下。

<script language="javascript">

function deleteForm(date1,date2){

if(confirm("确定删除吗?")){

window.location.href="bookAction.do?method=deleteBookAction&bookNumber="+date1+"&number="+date2;

}

}

</script>

删除图书信息页涉及到的method的参数值为“deleteBookAction”,当method= delete BookAction时,会调用BookAction类删除图书信息的方法deleteBookAction(),关键代码如下。

例程21-34:光盘\mr\21\wyBooks\src\com\action\BookAction.java

    public ActionForward deleteBookAction(ActionMapping mapping,

            ActionForm form, HttpServletRequest request,

            HttpServletResponse response) {

        BookForm bookForm = (BookForm) form;

        bookForm.setBookNumber(request.getParameter("bookNumber"));

        boolean result = bookDao.deleteBook(bookForm);

        if (result) {

        request.setAttribute("result", "删除该图书类型成功!!!");

        } else {

        request.setAttribute("result", "子表中仍然存在该图书的信息,删除该图书类型失败!!!");

        }

        return mapping.findForward("opeationBookAction");

    }

查看所有评论(0)条】

最近评论



正在载入评论列表...
热点评论