mymvcdemo是自定义mvc框架的使用示例
1.1 实体类
package com.zking.mymvc.entity; import java.io.Serializable; public class Book implements Serializable { private Integer bookid; private String bookname; private String bookname_pinyin; private Float price; private String booktype; public Integer getBookid() { return bookid; } public void setBookid(Integer bookid) { this.bookid = bookid; } public String getBookname() { return bookname; } public void setBookname(String bookname) { this.bookname = bookname; } public String getBookname_pinyin() { return bookname_pinyin; } public void setBookname_pinyin(String bookname_pinyin) { this.bookname_pinyin = bookname_pinyin; } public Float getPrice() { return price; } public void setPrice(Float price) { this.price = price; } public String getBooktype() { return booktype; } public void setBooktype(String booktype) { this.booktype = booktype; } public Book() { // TODO Auto-generated constructor stub } public Book(Integer bookid, String bookname, String bookname_pinyin, Float price, String booktype) { super(); this.bookid = bookid; this.bookname = bookname; this.bookname_pinyin = bookname_pinyin; this.price = price; this.booktype = booktype; } public Book( String bookname, String bookname_pinyin, Float price, String booktype) { this.bookname = bookname; this.bookname_pinyin = bookname_pinyin; this.price = price; this.booktype = booktype; } @Override public String toString() { return "Book [bookid=" + bookid + ", bookname=" + bookname + ", bookname_pinyin=" + bookname_pinyin + ", price=" + price + ", booktype=" + booktype + "]"; } }
1.2 dao方法
package com.zking.mymvc.dao; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import org.junit.Test; import com.zking.dao.BaseDao02; import com.zking.dao.BaseDao02.ICovent; import com.zking.mymvc.entity.Book; import com.zking.util.DBHelper; import com.zking.util.PageBean; import com.zking.util.PinYinUtil; public class BookDao implements IBookDao { Connection con = null; PreparedStatement ps = null; ResultSet rs = null; @Override public List<Book> getBooks(Book book, PageBean pageBean) { String sql="select * from tb_book where 1=1"; List<Object> ls = new ArrayList<>(); if(book != null && book.getBookname() !=null && !"".equals(book.getBookname())) { sql +=" and bookname like ?"; ls.add("%"+book.getBookname()+"%") ; } return BaseDao02.query(sql, ls.toArray(), pageBean, new ICovent<Book>() { @Override public List<Book> convent(ResultSet rs) throws SQLException { List<Book> list = new ArrayList<>(); while(rs.next()) { Book book = new Book(); book.setBookid(rs.getInt("bookid")); book.setBookname(rs.getString("bookname")); book.setBookname_pinyin(rs.getString("bookname_pinyin")); book.setPrice(rs.getFloat("price")); book.setBooktype(rs.getString("booktype")); list.add(book); } return list; } }); } @Override public void addBook(Book book) { System.out.println(book); try { //创建连接 con=DBHelper.getConnection(); //SQL语句 String sql="insert into tb_book(bookname,bookname_pinyin,price,booktype) values(?,?,?,?)"; //执行语句 ps=con.prepareStatement(sql); //赋值ֵ ps.setString(1,book.getBookname()); ps.setString(2,PinYinUtil.toPinyin(book.getBookname().toLowerCase())); ps.setFloat(3, book.getPrice()); ps.setString(4, book.getBooktype()); ps.executeUpdate(); } catch (Exception e) { e.printStackTrace(); }finally { DBHelper.close(con, ps, null); } } @Override public int deleteBook(int bookid) { int n = 0; try { //创建连接 con=DBHelper.getConnection(); //定义SQL语句 String sql="delete from tb_book where bookid=?"; //获得执行语句 ps=con.prepareStatement(sql); //赋值 ps.setInt(1, bookid); n=ps.executeUpdate(); } catch (Exception e) { e.printStackTrace(); }finally { DBHelper.close(con, ps, rs); } return n; } @Test public void testGetBook() { Book book = new Book(); book.setBookname("西"); PageBean pageBean = new PageBean(); pageBean.setRows(5); pageBean.setPage(2); List<Book> list = getBooks(book, pageBean); list.forEach(System.out::println); } @Test public void testAddBook() { Book book = new Book("哈哈哈", "hhh", 34.33f, "小说"); BookDao bd = new BookDao(); bd.addBook(book); } }
package com.zking.mymvc.dao; import java.util.List; import com.zking.mymvc.entity.Book; import com.zking.util.PageBean; public interface IBookDao { /** * 查询方法 * @param book * @param pageBean * @return */ List<Book> getBooks(Book book, PageBean pageBean); /** * 增加方法 * @param book */ void addBook(Book book); /** * 删除方法 * @param bookid * @return */ int deleteBook(int bookid); }
1.3 写Service / biz 三层架构
package com.zking.mymvc.service; import java.util.List; import com.zking.mymvc.dao.BookDao; import com.zking.mymvc.dao.IBookDao; import com.zking.mymvc.entity.Book; import com.zking.util.PageBean; /** * @author PC * */ public class BookService implements IBookService { private IBookDao dao = new BookDao(); @Override public List<Book> getBooks(Book book,PageBean pageBean) { return dao.getBooks(book, pageBean); } @Override public void addBook(Book book) { dao.addBook(book); } @Override public void deleteBook(int bookid) { dao.deleteBook(bookid); } }
package com.zking.mymvc.service; import java.util.List; import com.zking.mymvc.entity.Book; import com.zking.util.PageBean; public interface IBookService { List<Book> getBooks(Book book,PageBean pageBean); void addBook(Book book); void deleteBook(int bookid); }
1.4 建action 相当于selvert
package com.zking.mymvc.action; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.zking.framework.AbstractDispatchAction; import com.zking.framework.ModelDrive; import com.zking.mymvc.entity.Book; import com.zking.mymvc.service.BookService; import com.zking.mymvc.service.IBookService; import com.zking.util.PageBean; public class BookAction extends AbstractDispatchAction implements ModelDrive { private Book book = new Book(); @Override public Object getModel() { return book; } //查询 private IBookService service = new BookService(); public String getBooks(HttpServletRequest req,HttpServletResponse resp) { PageBean pageBean = new PageBean(); pageBean.setRequest(req); pageBean.setRows(5); List<Book> bookPager = service.getBooks(book, pageBean); req.setAttribute("bookPager", bookPager); return "book"; } /** * 增加 * @param req * @param resp * @return */ public String addBook(HttpServletRequest req,HttpServletResponse resp) { service.addBook(book); return "success"; } /** * 删除 * @param req * @param resp * @return */ public String deleteBook(HttpServletRequest req,HttpServletResponse resp) { service.deleteBook(book.getBookid()); return "ok"; } }
1.5 con连接MySQL 8.0 版本
#oracle9i #driver=oracle.jdbc.driver.OracleDriver #url=jdbc:oracle:thin:@localhost:1521:orcl #user=scott #pwd=123 #sql2005 #driver=com.microsoft.sqlserver.jdbc.SQLServerDriver #url=jdbc:sqlserver://localhost:1433;DatabaseName=test1 #user=sa #pwd=123 #sql2000 #driver=com.microsoft.jdbc.sqlserver.SQLServerDriver #url=jdbc:microsoft:sqlserver://localhost:1433;databaseName=unit6DB #user=sa #pwd=888888 #mysql driver=com.mysql.cj.jdbc.Driver url=jdbc:mysql://localhost:3306/tb_books?useUnicode=true&characterEncoding=UTF-8&useSSL=false&allowPublicKeyRetrieval=true #url=jdbc:mysql://119.23.46.143:3306/db_s2_easyui?useUnicode=true&characterEncoding=UTF-8&useSSL=false user=root pwd=123456
1.6 配置文件 XML
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE config[ <!ELEMENT config (action*)> <!ELEMENT action (forward*)> <!ELEMENT forward EMPTY> <!ATTLIST action path CDATA #REQUIRED type CDATA #REQUIRED > <!ATTLIST forward name CDATA #REQUIRED path CDATA #REQUIRED redirect (true|false) "false" > ]> <config> <action path="/bookAction" type="com.zking.mymvc.action.BookAction"> <forward name="book" path="/bookList.jsp" redirect="false"/> <forward name="success" path="http://localhost:8080/J2EE_mymvcdemo/bookAction.action?methodName=getBooks" redirect="true"/> <forward name="ok" path="http://localhost:8080/J2EE_mymvcdemo/bookAction.action?methodName=getBooks" redirect="true"/> </action> </config>
1.7 主界面布局
<%@page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <%@taglib prefix="z" uri="/zking"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>通用分页案例书本信息</title> </head> <body> <h1>书本信息</h1> <form action="<%=request.getContextPath()%>/bookAction.action?methodName=getBooks" method="post"> <input type="text" name="bookname" value="<%=request.getParameter("bookname")==null ? "" : request.getParameter("bookname")%>"/> <input type="submit" value="查询"> </form> <table width="100%" border="1" cellpadding="0" cellspacing="0"> <thead> <tr> <td>书本编号</td> <td>书本名字</td> <td>书本拼音</td> <td>书本价格</td> <td>书本类型</td> <td>操作<a href="<%=request.getContextPath()%>/addBook.jsp">增加</a></td> </tr> </thead> <c:forEach items="${bookPager}" var="b"> <tr> <td>${b.bookid}</td> <td>${b.bookname}</td> <td>${b.bookname_pinyin}</td> <td>${b.price}</td> <td>${b.booktype}</td> <td><a href="<%=request.getContextPath()%>/bookAction.action?methodName=deleteBook&bookid=${b.bookid}">删除</a></td> </tr> </c:forEach> </table> <z:paging pageBean="${pageBean}"/> </body> </html>
1.8 增加界面布局
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <h1>增加</h1> <form action="<%=request.getContextPath()%>/bookAction.action?methodName=addBook" method="post"> 书本名字: <input type="text" name="bookname"><br> 书本价格: <input type="text" name="price"><br> 书本类型: <input type="text" name="booktype"><br> <input type="submit" value="提交"> </form> </body> </html>
1.9 写tld配置文件
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd"> <!-- 标签库描述符 --> <taglib xmlns="http://java.sun.com/JSP/TagLibraryDescriptor"> <tlib-version>1.0</tlib-version> <jsp-version>1.2</jsp-version> <short-name>Simple Tags</short-name> <uri>/zking</uri> <tag> <name>paging</name> <tag-class>com.zking.tag.PagingTag</tag-class> <body-content>empty</body-content> <attribute> <name>pageBean</name> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> </tag> </taglib>
2.0 注意架包 我是已经打包好的