目录

  • 一、配置依赖
    • 1、将框架打成jar包,然后导入新工程,并且把框架的依赖jar包导入进去
    • 2、导入分页依赖
    • 3、写入底层代码
  • 二、通用增删改查
  • 三、写主界面功能

一、配置依赖

1、将框架打成jar包,然后导入新工程,并且把框架的依赖jar包导入进去

将我们前面的写的代码打成一个jar包然后导入我们的项目


点击后我们在输入jar,选中java下的第一个选项

输入要放的地址,点击finish即可

这里我们的桌面就有了一个mvc.jar

然后再导入我们其他的依赖

导入我们的项目后基本的框架算是完成一半了

2、导入分页依赖

分页的tag

tld文件

**<?xml version="1.0" encoding="UTF-8" ?><taglib xmlns="http://java.sun.com/xml/ns/j2ee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"version="2.0"><description>JSTL 1.1 core library</description><display-name>JSTL core</display-name><tlib-version>1.1</tlib-version><short-name>x</short-name><uri>http://jsp.xlb.like.cn</uri><validator><description>Provides core validation features for JSTL tags.</description><validator-class>org.apache.taglibs.standard.tlv.JstlCoreTLV</validator-class></validator><tag><!-- 代表标签库的名字 --><name>page</name><!-- 改标签对应的助手类的全路径名 --><tag-class>com.xlb.tag.PageTag</tag-class><!-- 代表一个JSP标签(不能省) --><body-content>JSP</body-content><!-- 该自定义JSP标签的属性名称 --><attribute><name>pageBean</name><required>true</required> <rtexprvalue>true</rtexprvalue> </attribute></tag></taglib>
**

3、写入底层代码

实体类book

package com.xlb.entity;/*** 书籍* @author 波哥** 2022年6月29日 上午8:46:33*/
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;}public Book(String bname, float price) {this.bname = bname;this.price = price;}@Overridepublic String toString() {return "Book [bid=" + bid + ", bname=" + bname + ", price=" + price + "]";}}

二、通用增删改查

因为我们通用的查询前面博客已经有写过了,所有现在我们封装一个通用的增删改
BeseDao.java里面封装一个通用增删改

/*** 通用增删改* @param sql sql语句* @param t 对象* @param str 占位符* @return 影响行数* @throws Exception*/public int executeUpdate(String sql,T t,String[] str) throws Exception{Connection con = DBAccess.getConnection();PreparedStatement ps = con.prepareStatement(sql);for (int i = 0; i < str.length; i++) {//拿到数组里面所有对象Field f = t.getClass().getDeclaredField(str[i]);//打开访问权限f.setAccessible(true);//拿到属性值ps.setObject(i+1, f.get(t));}return ps.executeUpdate();}

然后我们写一个BookAction来写入增删改查

package com.xlb.web;import java.util.List;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import com.xlb.dao.BookDao;
import com.xlb.entity.Book;
import com.xlb.framework.ActionSupport;
import com.xlb.framework.ModelDriven;
import com.xlb.util.PageBean;/*** book增删改查* @author 波哥** 2022年6月29日 上午9:51:56*/
public class BookAction extends ActionSupport implements ModelDriven<Book>{private Book b = new Book();private BookDao bd=new BookDao();/*** 封装方法*/@Overridepublic Book getModel() {return b;}/*** 增* @param req* @param resp* @return*/public String add(HttpServletRequest req, HttpServletResponse resp) {try {bd.add(b);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}//toList代表跳到查询界面return "toList";}/*** 删除* @param req* @param resp* @return*/public String del(HttpServletRequest req, HttpServletResponse resp) {try {bd.del(b);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}//toList代表跳到查询界面return "toList";}/*** 修改* @param req* @param resp* @return*/public String edit(HttpServletRequest req, HttpServletResponse resp) {try {bd.edit(b);} catch (Exception e) {e.printStackTrace();}//toList代表跳到查询界面return "toList";}/*** 查询* @param req* @param resp* @return*/public String list(HttpServletRequest req, HttpServletResponse resp) {try {PageBean pagebean = new PageBean();//初始化pagebean.setRequest(req);List<Book> list = bd.list(b, pagebean);req.setAttribute("list", list);req.setAttribute("pageBean", pagebean);} catch (Exception e) {e.printStackTrace();}//执行查询展示return "list";}/*** 跳转到新增或修改界面* @param req* @param resp* @return*/public String preEdit(HttpServletRequest req, HttpServletResponse resp) {try {//拿到bid,当点增加bid=0int bid = b.getBid();if(bid != 0) {List<Book> list = bd.list(b, null);//只查一条,因为id唯一req.setAttribute("b", list);}} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}//toEdit代表跳到编辑界面return "toEdit";}}

使用测试类测试BookDaoTest.java

package com.xlb.dao;import static org.junit.Assert.*;import java.util.List;import org.junit.After;
import org.junit.Before;
import org.junit.Test;import com.xlb.entity.Book;
import com.xlb.util.PageBean;/*** 测试类* @author 波哥** 2022年6月29日 上午9:14:03*/
public class BookDaoTest {private PageBean pageBean=new PageBean();private BookDao bd=new BookDao();@Beforepublic void setUp() throws Exception {}@Afterpublic void tearDown() throws Exception {}/*** 查询*/@Testpublic void testListBookPageBean() {Book b = new Book();try {List<Book> list = bd.list(b, null);for (Book book : list) {System.out.println(book);}} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}/*** 增加*/@Testpublic void testAdd() {Book b = new Book(232311, "sadas", 3921321);try {bd.add(b);} catch (Exception e) {e.printStackTrace();}}/*** 修改*/@Testpublic void testEdit() {Book b = new Book(232311, "欧阳修大战鸡对长", 238923);try {bd.edit(b);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}/*** 删除*/@Testpublic void testDel() {Book b = new Book(232311, "欧阳修大战鸡对长", 238923);try {bd.del(b);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}}

测试结果

三、写主界面功能

导入主界面
bookList.java

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<%@ taglib uri="http://jsp.xlb.like.cn" prefix="x" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!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">
<linkhref="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/4.5.0/css/bootstrap.css"rel="stylesheet">
<scriptsrc="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/4.5.0/js/bootstrap.js"></script>
<title>书籍列表</title>
<style type="text/css">
.page-item input {padding: 0;width: 40px;height: 100%;text-align: center;margin: 0 6px;
}.page-item input, .page-item b {line-height: 38px;float: left;font-weight: 400;
}.page-item.go-input {margin: 0 10px;
}
</style>
</head>
<body><form class="form-inline"action="${pageContext.request.contextPath }/book.action?methodName=list" method="post"><div class="form-group mb-2"><input type="text" class="form-control-plaintext" name="bname" placeholder="请输入书籍名称"></div><button  type="submit" class="btn btn-primary mb-2">查询</button><a  href="${pageContext.request.contextPath }/book.action?methodName=preEdit" class="btn btn-primary mb-2">新增</a></form><table class="table table-striped"><thead><tr><th scope="col">书籍ID</th><th scope="col">书籍名</th><th scope="col">价格</th><th scope="col">操作</th></tr></thead><tbody><c:forEach items="${list}" var="b"><tr><td>${b.bid}</td><td>${b.bname}</td><td>${b.price}</td><td><a href="${pageContext.request.contextPath }/book.action?methodName=preEdit&bid=${b.bid}">编辑</a><a href="${pageContext.request.contextPath }/book.action?methodName=del&bid=${b.bid}">删除</a></td>  </tr></c:forEach></tbody></table><x:page pageBean="${pageBean}"></x:page></body>
</html>

导入修改和增加和修改公共页面
bookEdit.jsp

<%@ 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></title>
</head>
<body><form action="${pageContext.request.contextPath }/book.action?methodName=${empty b ? 'add' : 'edit' }" method="post">bid:<input type="text" name="bid" value="${b.bid}"/>bname:<input type="text" name="bname" value="${b.bname}"/>price:<input type="text" name="price" value="${b.price}"/><input type="submit"/>  </form>
</body>
</html>

运行结果
主界面

模糊查询

增加


删除

J2EE--自定义mvc增删改查相关推荐

  1. 极客技术专题【003期】:java mvc 增删改查 自动生成工具来袭

    日期:2013-4-17  来源:GBin1.com 技术专题介绍 分享专题:java mvc 增删改查 自动生成工具来袭 分享人:激情燃烧的UI 授课时间:2013/04/19  21:00-22: ...

  2. ASP.NET MVC增删改查

    ASP.NET MVC中的增删改查 基本都要使用C控制器中的两个action来完成操作,一个用于从主界面跳转到新页面.同时将所需操作的数据传到新界面,另一个则对应新界面的按钮,用于完成操作.将数据传回 ...

  3. java mvc增删改查_springmvc-CRUC增删改查

    demo 控制器 UserController.java: 1.获取列表: 控制器@Autowired private UserDao userDao; /** * 路径 : user/getAll ...

  4. ASP.NET中新建MVC项目并连接SqlServer数据库实现增删改查

    场景 ASP.NET中MVC编程模式简介与搭建HelloWorld项目: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10679 ...

  5. 基于 abp vNext 和 .NET Core 开发博客项目 - 自定义仓储之增删改查

    基于 abp vNext 和 .NET Core 开发博客项目 - 自定义仓储之增删改查 转载于:https://github.com/Meowv/Blog 本篇说一下自定义仓储的实现方式,其实在ab ...

  6. Java-GUI编程实战之管理系统 Day3【学生管理系统GUI设计、学生管理系统增删改查、项目MVC结构介绍、Java技能图谱】

    视频.课件.源码[链接:https://pan.baidu.com/s/13ffqGDzH-DZib6-MFViW3Q 提取码:zjxs] Java-GUI编程实战之管理系统 Day1[项目开发流程. ...

  7. 实现简单的增删改查(Asp.Net MVC+Layui)

    实现简单的增删改查(Asp.Net MVC+Layui) 一.页面效果 二.前期准备 1.新建项目 2. 在项目中新建文件夹(设置mvc的雏形) 3.连接数据库(SqlServer) JdbcUtil ...

  8. .net mvc html访问数据库,ASP.NET中新建MVC项目并连接SqlServer数据库实现增删改查

    场景 ASP.NET中MVC编程模式简介与搭建HelloWorld项目: 在上面使用MVC搭建起来Hello World项目后,怎样连接SqlServer数据库并实现增删改查. 这里使用的是Visua ...

  9. 欢迎来到Jsp编程课时十二——今天实现的目标是。@1将数据库的数据发送到浏览器。@2利用浏览器实现对数据库的增删改查操作。@3理解MVC三层架构的定义。

    完成项目会有以下的效果. JSP第二十课:Mvc+Mysql+Servlect+Jsp实现在浏览器上对数据库的增删改查. MVC全名是Model View Controller, 是 @@1模型(mo ...

最新文章

  1. 简单介绍Go语言错误处理异常捕获+异常抛出
  2. HTML5 网站大观:应用图片大背景的优秀 HTML5 网站作品
  3. 北京大学现代农业研究院张华伟实验室招聘启示
  4. vrrp广播风暴_企业园区网MSTP+VRRP组合
  5. LDAP 轻量级目录访问协议 介绍
  6. 让 sphinx 支持中文、日文和韩文
  7. 什么叫ipv6网络_(建议收藏)IPv6地址使用ping、telnet命令汇总
  8. .NET开发者如何使用MyCat
  9. samba配置过程(附网络凭据的解决方法)
  10. Android LiveData
  11. 基于GEE平台实现湖泊水位与水体面积关系分析
  12. Ubuntu安装输入法却不能切换输入法
  13. Anaconda新建虚拟环境-报错Multiple Errors Encountered
  14. 网站banner设计有什么好的方法
  15. 微服务的技术架构路线
  16. 什么是Watchdog?
  17. python数据分析面试题_面试题——Python数据分析与应用(补充:简答)
  18. 大数据学习内容及方法
  19. insmod: error inserting 'simp-blkdev.ko': -1 Invalid module format
  20. 车载VPA形象发展史:谁是第一个吃螃蟹的人?

热门文章

  1. 很漂亮网页背景渐变色代码
  2. 多人的证件照放在一张纸上怎么排版
  3. 使用scrcpy开源进行电脑usb控制安卓手机,简单方便
  4. 教程7--Schemas和客户端库
  5. Cannot mix different versions of joi schemas
  6. Jmeter读取CSV文件
  7. 北京中医药 计算机基础,北京中医药大学远程教育学院计算机基础2008辅导资料.doc...
  8. 618大促:手机品牌“神仙打架”,高端市场“谁主沉浮”?
  9. 07年7月仲夏在红瓦绿树下的青岛散心~
  10. 医学图像开源数据集汇总