目录
一、环境搭建
1.将框架打成jar包,然后导入新工程,并且把框架的依赖jar包导入进去
2.将分页标签相关文件、及相关助手类导入
3.框架的配置文件添加、以及web.xml的配置-以后开源框架的使用从这一步开始
二、增删改查
一、环境搭建1.将框架打成jar包,然后导入新工程,并且把框架的依赖jar包导入进去
在之前的MVC集合框架里把
Action.java
ActionModel.java
ActionSupport.java
ConfigModel.java
ConfigModelFactory.java
DispatcherServlet.java
ForwardModel.java
ModelDriven.java
这几个类导成mvc.jar包,在使用的把此mvc.jar包之前jar包导进去
2.将分页标签相关文件、及相关助手类导入
3.框架的配置文件添加、以及web.xml的配置-以后开源框架的使用从这一步开始
web.xml
y1_mvc_crud mvc com.maomao.framework.DisPatcherServlet configLocation /aa.xml mvc *.action
aa.tld
JSTL 1.1 core library JSTL core 1.1 z http://jsp.veryedu.cn Provides core validation features for JSTL tags. org.apache.taglibs.standard.tlv.JstlCoreTLV page com.maomao.tag.PageTag JSP pageBean true true
二、增删改查
环境搭建好之后就可以开始编码了
Book实体类
package com.maomao.entity;
public class Book {
private int bid;
private String bname;
private float price;
public int getBid() {
return bid;
}
public void setBid(int bid) {
this.bid = bid;
}
public String getBname() {
return bname;
}
public void setBname(String bname) {
this.bname = bname;
}
public float getPrice() {
return price;
}
public void setPrice(float price) {
this.price = price;
}
public Book() {
// TODO Auto-generated constructor stub
}
public Book(int bid, String bname, float price) {
super();
this.bid = bid;
this.bname = bname;
this.price = price;
}
@Override
public String toString() {
return "Book [bid=" + bid + ", bname=" + bname + ", price=" + price + "]";
}
}
BaseDao.java
package com.maomao.util; import java.lang.reflect.Field; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.ArrayList; import java.util.List; import com.maomao.entity.Book; public class BaseDao{ public List executeQuery(String sql,PageBean pageBean,CallBack callBack) throws Exception{ // SELECt * FROM 'tb_book' WHERe bname like '%哈哈哈%'; //从上面得到SELECt COUNT(1) as n FROM (SELECt * FROM tb_book WHERe bname LIKE '%哈哈哈%') t; //目的是为了得到总记录数---->总目的是得到总页数 Connection con = null;//重复代码1 PreparedStatement ps = null;//重复代码2 ResultSet rs = null;//重复代码3 if(pageBean !=null && pageBean.isPagination()) { String countSql = getCountSql(sql); con = DBAccess.getConnection();//重复代码1 ps = con.prepareStatement(countSql);//重复代码2 rs = ps.executeQuery();//重复代码3 System.out.println(countSql); if(rs.next()) { //因为下面Sql语句里有个n 将n放进以下代码 //pageBean(当前实体类)就包含了总记录数 pageBean.setTotal(rs.getString("n")); } String pageSql = getpageSql(sql,pageBean); con = DBAccess.getConnection();//重复代码1 ps = con.prepareStatement(pageSql);//重复代码2 rs = ps.executeQuery();//重复代码3 } else { con = DBAccess.getConnection();//重复代码1 ps = con.prepareStatement(sql);//重复代码2 rs = ps.executeQuery();//重复代码3 } return callBack.foreach(rs); } private String getpageSql(String sql,PageBean pageBean) { // TODO Auto-generated method stub return sql + " limit "+pageBean.getStartIndex() + ","+pageBean.getRows(); } private String getCountSql(String sql) { // TODO Auto-generated method stub return "select count(*) as n from ("+sql+") t"; } //将以下代码不一样的提出来作为参数放到方法里,以及对象不能是定死的,所以将它换为泛型 public int executeUpdate(String sql,T t,String[] attrs) throws Exception { Connection con = DBAccess.getConnection(); PreparedStatement ps = con.prepareStatement(sql); //将 t 的某一个属性对应的值加到ps对象中 for (int i = 0; i < attrs.length; i++) { Field f = t.getClass().getDeclaredField(attrs[i]); f.setAccessible(true); ps.setObject(i+1, f.get(t)); } return ps.executeUpdate(); } }
BookDao.java
package com.maomao.dao; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import com.maomao.entity.Book; import com.maomao.util.BaseDao; import com.maomao.util.DBAccess; import com.maomao.util.PageBean; import com.maomao.util.StringUtils; public class BookDao extends BaseDao{ // 查询 public List list(Book b,PageBean pageBean) throws Exception{ String sql="select * from tb_book where 1=1"; String bname=b.getBname(); if(StringUtils.isNotBlank(bname)) { sql+=" and bname like '%"+bname+"%'"; } int bid=b.getBid(); // 前台jsp传递到后台,只要传了就有值,没传就是默认值,默认值就是0 if(bid!=0) { sql+=" and bid="+bid; } return super.executeQuery(sql, pageBean, rs ->{ List list=new ArrayList<>(); try { while(rs.next()) { list.add(new Book(rs.getInt("bid"), rs.getString("bname"), rs.getFloat("price"))); } } catch (Exception e) { e.printStackTrace(); } return list; }); } // 增 public int add(Book b) throws Exception { Connection con = DBAccess.getConnection(); String sql="insert into tb_book value(?,?,?)"; return super.executeUpdate(sql, b, new String[] {"bid","bname","price"}); } // 删 public int del(Book b) throws Exception { Connection con = DBAccess.getConnection(); String sql="delete from tb_book where bid=?"; return super.executeUpdate(sql, b, new String[] {"bid"}); } // 改 public int edit(Book b) throws Exception { Connection con = DBAccess.getConnection(); String sql="update tb_book set bname=?,price=? where bid=?"; return super.executeUpdate(sql, b, new String[] {"bname","price","bid"}); } }
BookAction.java
package com.maomao.web; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.maomao.dao.BookDao; import com.maomao.entity.Book; import com.maomao.framework.ActionSupport; import com.maomao.framework.ModelDriven; import com.maomao.util.PageBean; public class BookAction extends ActionSupport implements ModelDriven{ private Book b=new Book(); private BookDao bd =new BookDao(); @Override public Book getModel() { return b; } // 增 public String add(HttpServletRequest req, HttpServletResponse resp) { try { bd.add(b); } catch (Exception e) { e.printStackTrace(); } // 代表跳到查询界面 return "toList"; } // 删 public String del(HttpServletRequest req, HttpServletResponse resp) { try { bd.del(b); } catch (Exception e) { e.printStackTrace(); } // 代表跳到查询界面 return "toList"; } // 修 public String edit(HttpServletRequest req, HttpServletResponse resp) { try { bd.edit(b); } catch (Exception e) { e.printStackTrace(); } // 代表跳到查询界面 return "toList"; } // 查询 public String list(HttpServletRequest req, HttpServletResponse resp) { try { PageBean pageBean=new PageBean(); pageBean.setRequest(req); List list = bd.list(b, pageBean); req.setAttribute("list", list); req.setAttribute("pageBean", pageBean); } catch (Exception e) { e.printStackTrace(); } // 执行查询展示 return "list"; } // 跳转到新增/修改界面 public String preEdit(HttpServletRequest req, HttpServletResponse resp) { try { int bid = b.getBid(); if(bid != 0) { //传递bid到后台,且只能查出一条数据,那么list集合里只有一条数据 List list = bd.list(b,null); //id对应的值list.get(0) req.setAttribute("book", list.get(0)); } } catch (Exception e) { e.printStackTrace(); } //表示跳到查询界面 return "toEdit"; } }
前台代码 booklist.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://jsp.veryedu.cn" prefix="z" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>书籍列表
| 书籍ID | 书籍名 | 操作 |
|---|---|---|
| ${b.bid } | ${b.bname } | 编辑 删除 |



