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  >
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书:

查找数据结构书:

时间: 2024-12-20 16:02:35

struts2-11-OGNL实现书籍的增删改查的相关文章

struts2-10-属性驱动实现书籍的增删改查

一:集合模拟数据库 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 ArrayL

Struts2+Spring+Hibernate实现员工管理增删改查功能(一)之ssh框架整合

前言        转载请标明出处:http://www.cnblogs.com/smfx1314/p/7795837.html 本项目是我写的一个练习,目的是回顾ssh框架的整合以及使用.项目介绍:此项目主要有前台管理员通过登录进入员工管理系统页面,之后可以对员工列表进行常规的增删改查.以及部门列表的增删改查.IDE使用的是eclipse,个人感觉比较好用,不过最近我正在研究idea,数据库是mysql,前台主要以bootstrap为主. 这点是直接摘抄的 struts 控制用的 hibern

6.实现struts2+hibernate实现学生列表的增删改查

1.dao 2.daoimpl 3.action 4.struts.xml(实现页面跳转)

61 书籍和出版社 的增删改查 几秒后跳转一个页面

主要内容: 书籍的增删改查: 增:  selecct标签    for循环{% for press in  press_list %}...option....{% endif %} <select name="press_id"> {% for press in press_list %} <option value="{{ press.id }}">{{ press.name }}</option> {% endfor %}

Struts2+Hibernate+Spring框架实现增删改查

一.添加3个框架的JAR包,完成后写配置文件: 1.web配置文件: 1 <?xml version="1.0" encoding="UTF-8"?> 2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation=&quo

Hibernate基于Maven和Struts2搭建的增删改查

注:要全套流程截图操作的自行在我博客下载 一.建立一个maven多模块项目 二.把各个模块依赖起来,导入相应jar包 三.选中entity模块,右键Add Framework Support,找到hibernate确认 四 .配置一个数据库 五.建立并配置hibernate.cfg.xml信息 六.用hibernate创建实体对象 七.在util模块编写hibernateUtil类,在dao模块调用Util和实体创建增删改查的方法,在service模块实现相关业务 八.右键web模块,Add F

【实战问题】【11】增删改查在SQLServer客户端都是正常的。但在程序里用mybatis的时候,新增会失败

前言: 我的情况和参考博客里的是一样的,所以此处仅做备份. 增删改查在SQLServer客户端都是正常的.但是在程序里用mybatis的时候,只有删改查是正常的,新增会失败.报错:17023 不支持的特性 正文: 检查jar包 oracle的jdbc驱动有很多版本,jdk1.5的驱动是classes12.jar,而jdk1.6(也就是官方所说的6.0)的驱动就是ojdbc6. 根据自己的情况选择合适的jar包,且不要把两个jar包都放进去 参考博客: myBatis+oracle11g inse

搭建第一个web项目:实现用户的增删改查

好久没写这个web的代码了,再不写估计以前的也忘记的差不多了,赶紧复习下,顺便把自己的想法慢慢实现了. 最近在公司发现以前的项目有用easyUI搭建的.赶紧copy回来学习下. 感觉写日志真的很有必要,自己总结的肯定要比每次从网上查阅来的靠谱.每次搭建一个基本的web项目都都要查ssh的配置真的很忧伤啊,有木有!!! 把jar包的截图截了一下,要不总是记不清该用到的基本jar有啥. 其中Struts中用到的jar有:commons-fileupload.jar  commons-io.jar  

框架 day39-42 SSH整合练习项目CRM(配置文件,增删改查,ajax,上传/下载,分页,BaseDao/Action)

1     配置文件 1.1   spring配置 1.1.1       介绍     加载properties     配置数据源DataSource     配置SessionFactory , 加载所有hbm.xml     hibernate事务管理     使用 <import > 所有的模块都使用单独配置文件 1.1.2       使用源码包     使用config源码,将源码和配置文件分开存放,方便程序的维护. 1.1.3       spring核心 1.1.