struts2-11-OGNL实现书籍的增删改查

一:集合模拟数据库 nuc.sw.db--->BookDB.java

    

复制代码
 1 package nuc.sw.db;
 2 
 3 import java.util.ArrayList;
 4 import java.util.List;
 5 
 6 import nuc.sw.vo.Book;
 7 
 8 public class BookDB {
 9     //定义静态集合,类可以打点调用,并且类的多个对象也可以使用
10     public static List<Book> bookList=new ArrayList<Book>();
11 }
复制代码

 

二:DAO层对集合做增删改查相应 的操作  nuc.sw.dao--->BookDAO.java

复制代码
 1 package nuc.sw.dao;
 2 
 3 import java.util.List;
 4 import nuc.sw.db.BookDB;
 5 import nuc.sw.vo.Book;
 6 
 7 public class BookDAO {
 8     
 9     
10     //通过模拟数据库获取集合
11     List<Book> list = BookDB.bookList;
12 
13     //添加书籍方法   系统默认(add)
14     public void addBook(Book book){
15         list.add(book);
16     }
17     
18     //获取书籍方法  若没有get方法,则返回空
19     public List<Book> getBook(){
20         return list;
21     }
22     
23     //查找书籍信息
24     public Book findBook(Book book){
25         //泛化遍历集合  满足条件的直接定义
26         for(Book bookOne:list){
27             if(bookOne.getBookName().equals(book.getBookName()))
28             return bookOne;
29         }
30         return null;
31     }
32     
33     //修改书籍信息
34     public void updateBook(Book book1,Book book2){
35         book1.setBookAuthor(book2.getBookAuthor());
36         book1.setBookPrice(book2.getBookPrice());
37     }
38     
39     //删除书籍的方法 系统默认(remove)
40     public void deleteBook(Book book){
41             list.remove(book);
42    }
43 }
复制代码

 

三:VO层对Book进行属性说明

复制代码
 1 package nuc.sw.vo;
 2 
 3 public class Book {
 4   private String bookName;
 5   private String bookAuthor;
 6   private float bookPrice;
 7 public String getBookName() {
 8     return bookName;
 9 }
10 public void setBookName(String bookName) {
11     this.bookName = bookName;
12 }
13 public String getBookAuthor() {
14     return bookAuthor;
15 }
16 public void setBookAuthor(String bookAuthor) {
17     this.bookAuthor = bookAuthor;
18 }
19 public float getBookPrice() {
20     return bookPrice;
21 }
22 public void setBookPrice(float bookPrice) {
23     this.bookPrice = bookPrice;
24 }
25 
26 
27 }
复制代码

 

 

四:在action中调用DAO层的增删改查方法进而转入struts.xml中  nuc.sw.action--->BookAction

 1 package nuc.sw.action;
 2 
 3 import java.util.List;
 4 
 5 import com.opensymphony.xwork2.ActionContext;
 6 import com.opensymphony.xwork2.ActionSupport;
 7 import com.opensymphony.xwork2.ModelDriven;
 8 import com.opensymphony.xwork2.util.ValueStack;
 9 
10 import nuc.sw.dao.BookDAO;
11 import nuc.sw.vo.Book;
12 
13 public class BookAction extends ActionSupport implements ModelDriven<Book>{
14     
15     //模型驱动
16     private Book b=new Book();
17     //创建BookDAO的对象来调用增删改查书的方法。
18     BookDAO bookDAO=new BookDAO();
19     //将bList设置为全局变量
20     List<Book> bList = bookDAO.getBook();
21     
22     //值栈来存放;
23     ValueStack vs=ActionContext.getContext().getValueStack();
24     //模型驱动
25     @Override
26     public Book getModel() {
27         return b;
28     }
29     
30     //添加书籍方法
31     public String addBookMethod() throws Exception {
32         //通过BookDAO的对象来调用增书的方法
33         bookDAO.addBook(b);
34         return "addOK";
35   }
36     
37     //得到书的集合后存放到vs中
38     public String getBookMethod() throws Exception {
39         vs.set("books", bList);
40         return "getOK";
41     }
42     
43     //查找一本书籍的方法
44     public String findBookMethod() throws Exception {
45         Book findBook=bookDAO.findBook(b);
46         ActionContext.getContext().getSession().put("Book",findBook);
47         return "findOK";
48     }
49     
50     //修改书籍方法
51     public String updateBookMethod() throws Exception {
52         //先找到书
53         Book findBook=bookDAO.findBook(b);
54         //调用修改方法
55         bookDAO.updateBook(findBook,b);
56         //修改后仍显示集合的书籍而非修改过的一本书籍信息
57         ActionContext.getContext().getSession().put("Book",bList);
58         return "updateOK";
59     }
60     
61     //删除书籍方法
62     public String deleteBookMethod() throws Exception {
63         //找到书籍
64         Book findBook=bookDAO.findBook(b);
65         bookDAO.deleteBook(findBook);
66         //vs.set("Book","bList");  这样操作会显示删除所有,但实际只删除了一个
67         ActionContext.getContext().getSession().put("Book", bList);
68         return "deleteOK";
69     }
70 }

 

五:添加书籍的首页面--->addBook.jsp

    

复制代码
 1 <%@ page language="java" contentType="text/html; charset=utf-8"
 2     pageEncoding="utf-8"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 7 <title>添加书籍信息</title>
 8 </head>
 9 <body>
10 <table align="left" border="1"> 
11   <tr>
12     <td><a href="addBook.jsp">添加一本书籍信息</a></td>
13   </tr>
14   <tr>
15     <td><a href="${pageContext.request.contextPath}/findBook.jsp">查询某本书籍信息</a></td>
16   </tr>
17 </table>
18 <form action="${pageContext.request.contextPath}/addBookAction" method="post">
19   <table align="center" border="1">
20   <tr>
21     <td>书名:</td>
22     <td><input type="text" name="bookName"> </td>
23   <tr>
24   <tr>
25     <td>作者:</td>
26     <td><input type="text" name="bookAuthor"></td>
27   <tr>
28   <tr>
29     <td>价格:</td>
30     <td><input type="text" name="bookPrice"></td>
31   <tr>
32   <tr>
33      <td><input type="submit" value="添加"></td>
34   </tr>
35   </table>
36 </form>
37 </body>
38 </html>
复制代码

 

 

六:配置struts.xml,去相应的Actio中寻找对应的action  class method

     因为本实验是针对书籍做操作,所以建立Book.xml--->复制struuts.xml,修改名字即可

 

   struts.xml

复制代码
 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE struts PUBLIC
 3     "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
 4     "http://struts.apache.org/dtds/struts-2.3.dtd">
 5 
 6 <struts>
 7 
 8     <include file="Book.xml" />
 9     
10 </struts>
复制代码

 

Book.xml

 

复制代码
 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE struts PUBLIC
 3     "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
 4     "http://struts.apache.org/dtds/struts-2.3.dtd">
 5 
 6 <struts>
 7 
 8     <constant name="struts.enable.DynamicMethodInvocation" value="false" />
 9     <constant name="struts.devMode" value="true" />
10 
11     <package name="default" namespace="/" extends="struts-default">
12 
13          <action name="addBookAction" class="nuc.sw.action.BookAction" method="addBookMethod">
14               <result name="addOK" type="chain">getBookAction</result>
15          </action>
16          <action name="getBookAction" class="nuc.sw.action.BookAction" method="getBookMethod">
17              <result name="getOK">/showBookInfo.jsp</result>
18          </action>
19          <action name="findBookAction" class="nuc.sw.action.BookAction" method="findBookMethod">
20              <result name="findOK">/showOneBook.jsp</result>
21          </action>
22          <action name="updateBookAction" class="nuc.sw.action.BookAction" method="updateBookMethod">
23               <result name="updateOK">/showDeleteBookNewInfo.jsp</result>
24          </action> 
25         <action name="deleteBookAction" class="nuc.sw.action.BookAction" method="deleteBookMethod">
26             <result name="deleteOK">/showDeleteBookNewInfo.jsp</result>
27         </action>
28     </package>
29 
30 
31 </struts>
复制代码

 

七:显示所有书籍信息--->showBookInfo.jsp

      使用OGNL表达式获取信息,通过占位符进行修改删除操作。

 

 1 <%@ page language="java" contentType="text/html; charset=utf-8"
 2     pageEncoding="utf-8" import="nuc.sw.vo.Book,java.util.*"%>
 3 <%@ taglib prefix="s" uri="/struts-tags"%>  
 4 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 5 <html>
 6 <head>
 7 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 8 <title>全部书籍信息</title>
 9 </head>
10 <body>
11 <table align="left" border="1"> 
12   <tr>
13     <td><a href="addBook.jsp">添加一本书籍信息</a></td>
14   </tr>
15   <tr>
16     <td><a href="${pageContext.request.contextPath}/findBook.jsp">查询某本书籍信息</a></td>
17   </tr>
18 </table>
19   <table align="center" border="1">
20          <caption>全部书籍信息</caption>
21       <tr>
22           <td>书名:</td>
23           <td>作者:</td>
24          <td>定价:</td>
25          <td>操作1</td>
26          <td>操作2</td>
27        </tr>
28      <s:iterator value="books" var="b">
29       <tr>
30         <td><s:property value="#b.bookName" /></td>
31         <td><s:property value="#b.bookAuthor" /></td>
32         <td><s:property value="#b.bookPrice" /></td>
33         <td><a href="${pageContext.request.contextPath}/updateBook.jsp?
34                 bookName=<s:property value="#b.bookName" />
35                 &bookAuthor=<s:property value="#b.bookAuthor" />
36                 &bookPrice=<s:property value="#b.bookPrice" />">修改</a></td>
37         <td><a href="${pageContext.request.contextPath}/deleteBook.jsp?bookName=<s:property value="#b.bookName"/>">删除</a></td>
38       </tr>
39     </s:iterator>
40   </table>
41   <br>
42  
43   <s:debug/>
44 </body>
45 </html>

 

 

八:查找书籍--->findBook.jsp

复制代码
 1 <%@ page language="java" contentType="text/html; charset=utf-8"
 2     pageEncoding="utf-8"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 7 <title>Insert title here</title>
 8 </head>
 9 <body>
10 <form action="${pageContext.request.contextPath}/findBookAction" method="post">
11   <table align="center" border="1"> 
12     <caption>查找书籍信息</caption>
13   <tr>
14     <td>书名</td>
15     <td><input type="text" name="bookName"></td>
16   </tr>
17   <tr>
18     <td><input type="submit" value="查找"></td>
19   </tr>
20 </table>
21 </form>
22 </body>
23 </html>
复制代码

 

 

九:显示一本书籍信息--->showOneBook.jsp

     已结将Book存入session中,通过OGNL获取即可。

 1 <%@ page language="java" contentType="text/html; charset=utf-8"
 2     pageEncoding="utf-8" import="nuc.sw.vo.Book,java.util.*"%>
 3 <%@ taglib prefix="s" uri="/struts-tags"%>
 4 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 5 <html>
 6 <head>
 7 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 8 <title>结果书籍信息</title>
 9 </head>
10 <body>
11 <table align="left" border="1"> 
12   <tr>
13     <td><a href="addBook.jsp">添加一本书籍信息</a></td>
14   </tr>
15   <tr>
16     <td><a href="${pageContext.request.contextPath}/findBook.jsp">查询某本书籍信息</a></td>
17   </tr>
18 </table>
19  <table align="center" border="1">
20          <caption>结果书籍信息</caption>
21  <tr>
22           <td>书名:</td>
23           <td>作者:</td>
24          <td>定价:</td>
25   </tr>
26     <tr>
27       <td><s:property value="#session.Book.bookName"/></td>
28       <td><s:property value="#session.Book.bookAuthor"/></td>
29       <td><s:property value="#session.Book.bookPrice"/></td>
30     </tr>    
31 </table>    
32 </body>
33 </html>

 

十:修改书籍信息--->updateBook.jsp

     进行字符转换,否则会出现乱码

复制代码
 1 <%@ page language="java" contentType="text/html; charset=utf-8"
 2     pageEncoding="utf-8" import="nuc.sw.vo.Book,java.util.*"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 7 <title>修改书籍信息</title>
 8 </head>
 9 <body>
10 <table align="left" border="1"> 
11   <tr>
12     <td><a href="addBook.jsp">添加一本书籍信息</a></td>
13   </tr>
14   <tr>
15     <td><a href="${pageContext.request.contextPath}/findBook.jsp">查询某本书籍信息</a></td>
16   </tr>
17 </table>
18 <%
19   String bookName=request.getParameter("bookName");
20   bookName=new String(bookName.getBytes("ISO-8859-1"),"utf-8");
21   String bookAuthor=request.getParameter("bookAuthor");
22   bookAuthor=new String(bookAuthor.getBytes("ISO-8859-1"),"utf-8");
23   String bookPrice=request.getParameter("bookPrice");
24   bookPrice=new String(bookPrice.getBytes("ISO-8859-1"),"utf-8");
25 %>
26 <form action="${pageContext.request.contextPath}/updateBookAction" method="post">
27 <table align="center" border="1">
28   <caption>修改书籍信息</caption>
29   <tr>
30     <td>书名:</td>
31     <td><input type="text" name="bookName" value="<%=bookName%>"> </td>
32   <tr>
33   <tr>
34     <td>作者:</td>
35     <td><input type="text" name="bookAuthor" value="<%=bookAuthor%>"></td>
36   <tr>
37   <tr>
38     <td>价格:</td>
39     <td><input type="text" name="bookPrice" value="<%=bookPrice%>"></td>
40   <tr>
41   <tr>
42      <td><input type="submit" value="修改书籍信息"></td>
43   </tr>
44 
45   </table>
46 </form>
47 </body>
48 </html>
复制代码

 

 

十一:修改成功后仍需显示所有书籍信息--->showDeleteBookNewInfo.jsp

      OGNL获取集合中的数据

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <%@ taglib prefix="s" uri="/struts-tags"%>  
 4 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 5 <html>
 6 <head>
 7 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 8 <title>书籍信息</title>
 9 </head>
10 <body>
11 <table align="left" border="1"> 
12   <tr>
13     <td><a href="addBook.jsp">添加一本书籍信息</a></td>
14   </tr>
15   <tr>
16     <td><a href="${pageContext.request.contextPath}/findBook.jsp">查询某本书籍信息</a></td>
17   </tr>
18 </table>
19   <table align="center" border="1">
20          <caption>书籍信息</caption>
21       <tr>
22           <td>书名:</td>
23           <td>作者:</td>
24          <td>定价:</td>
25          <td>操作1</td>
26          <td>操作2</td>
27        </tr>
28        <!--  #session.Book   Book  -->
29      <s:iterator value="#session.Book" var="b">
30       <tr>
31         <td><s:property value="#b.bookName" /></td>
32         <td><s:property value="#b.bookAuthor" /></td>
33         <td><s:property value="#b.bookPrice" /></td>
34         <td><a href="${pageContext.request.contextPath}/updateBook.jsp?
35                 bookName=<s:property value="#b.bookName" />
36                 &bookAuthor=<s:property value="#b.bookAuthor" />
37                 &bookPrice=<s:property value="#b.bookPrice" />">修改</a></td>
38         <td><a href="deleteBook.jsp?bookName=<s:property value="#b.bookName"/>">删除</a></td>
39       </tr>
40     </s:iterator>
41   </table>
42   <br>
43  
44   <s:debug/>
45 </body>
46 </html>

 

十二:删除书籍页面--->deletBook.jsp

                 可以直接默认删除,也可以手动点击删除按钮;删除后显示的页面和修改后的一样

系统默认删除:

复制代码
 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 7 <title>删除书籍信息</title>
 8   <script type="text/javascript">
 9     function load(){
10         document.all.form1.submit();
11     }
12   </script>
13 </head>
14 <body  onload="load()">
15 
16     <% 
17     String bookName=request.getParameter("bookName"); 
18        bookName=new String(bookName.getBytes("ISO-8859-1"),"utf-8");
19     %>
20     <form name="form1" 
21           action="${pageContext.request.contextPath}/deleteBookAction"
22           method="post">
23         <input type="text" name="bookName" value="<%=bookName%>"/>
24         <input type="submit" value="删除"/>
25     </form>
26 </body>
27 </html>
复制代码

 

用户手动删除:

复制代码
 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 7 <title>删除书籍信息</title>
 8 </head>
 9 <body>
10     <%
11        String bookName=request.getParameter("bookName"); 
12        bookName=new String(bookName.getBytes("ISO-8859-1"),"utf-8");
13     %>
14     <form action="deleteBookAction"  method="post">
15         <input type="text" name="bookName" value="<%=bookName%>"/>
16         <input type="submit" value="删除"/>
17     </form>
18 </body>
19 </html>
复制代码

 

 

十二:项目结构

 

 

 

十三:执行结果

 

增加书籍:

 

 

显示所有书籍信息:

 

 

修改数据结构书的价格:

 

 

修改成功:

 

 

 

 

删除struts书:

 

 

查找数据结构书:

 

 

 

posted @ 2016-10-25 01:00  ~花开不败~  阅读(2781)  评论(1编辑  收藏  举报