【JavaWeb】全部撒花-小实例(附源码)

【JavaWeb】全部撒花-小实例(附源码),第1张

【JavaWeb】全部撒花-小实例(附源码) 前言

全部章节:
【JavaWeb】-Tomcat、Eclipse使用项目搭建(一)
【JavaWeb】-mysql、jdbc、dbcp使用(二)
【JavaWeb】-MVC、Servlet学习(三)
【JavaWeb】-Cookie、Session,token+学习(四)

  • Cookie的使用
  • Session的使用
  • token的使用

【JavaWeb】-jsp简单了解(五)
【JavaWeb】-小实例,全部源码(结)

javaweb到这里就差不多了,我们做一个小示例,完成一些基本 *** 作;

这里我给大家写了两个页面,实在没有什么素材,只能靠自己给大家写两个了;

同时这里是源码,是整个JavaWeb系列,因为直接从创建文件开始,就用的一个项目,从上面到下面所有的源码都在里面了,所以如果你直接看的这个博客,推荐你拿到这个项目,找到我的主页,从头到尾看一遍,所以说你真幸运直接有了大结局,当然了,这才只是个开始,后面还有更多:

全部源码,百度网盘

链接:https://pan.baidu.com/s/1_eQZgTuKHkgZ4RwODV_ylw?pwd=tyzt 
提取码:tyzt

这里我实在不想做一个系统了,因为之后几乎都是重复的 *** 作,大家如果把这个全部理解,做个系统简简单单,什么什么管理系统,无非是再加个侧边栏,然后对几张表的 *** 作,加上关系啥的,这里我在网上找的一个模板,也教大家怎么去拿到这种网页,变成自己使用;

这是我们进行 *** 作的页面:

这是修改时候的页面,一会儿呢就改成我们想要的那种:

实现效果

我们先来看一下实现效果:

  • 了解下大致的功能

    1、登录功能,这里没有建用户表,大家创建一个用户表一个查询方法就实现,最简单的功能
    2、对货物表的CRUD
    3、条件查询 -搜索功能
    4、带条件查询的分页
    

登录页面:

对单表的所有 *** 作页面,一页显示5个:

编辑和新增货物页面:

搜索功能,搜索带上分页:

好,大家可以拿到本地运行下,下面对代码进行下解释

讲解

首先就是代码的写的,这里拿最开始,我们先尝试着,把代码数据库中的数据显示到页面上:

首先就是数据库:

创建货物表:

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for good
-- ----------------------------
DROP TABLE IF EXISTS `good`;
CREATE TABLE `good` (
  `goodid` int(20) NOT NULL AUTO_INCREMENT,
  `goodname` varchar(20) NOT NULL,
  `surplus` int(20) NOT NULL,
  `goodprice` int(20) NOT NULL,
  PRIMARY KEY (`goodid`)
) ENGINE=InnoDB AUTO_INCREMENT=24 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of good
-- ----------------------------
INSERT INTO `good` VALUES ('1', '黑色森林', '2', '15');
INSERT INTO `good` VALUES ('2', '奶油蛋糕', '3', '13');
INSERT INTO `good` VALUES ('3', '水果蛋糕', '2', '11');
INSERT INTO `good` VALUES ('4', '冰淇凌蛋糕', '5', '13');
INSERT INTO `good` VALUES ('9', '牛奶蛋糕', '34', '9');
INSERT INTO `good` VALUES ('11', '肉松蛋糕', '13', '13');
INSERT INTO `good` VALUES ('12', '草莓蛋糕', '99', '23');
INSERT INTO `good` VALUES ('13', '苹果蛋糕', '32', '12');
INSERT INTO `good` VALUES ('14', '香蕉蛋糕', '32', '12');
INSERT INTO `good` VALUES ('15', '火龙果蛋糕', '43', '43');
INSERT INTO `good` VALUES ('16', '香橙蛋糕', '65', '31');
INSERT INTO `good` VALUES ('17', '苹果', '43', '54');
INSERT INTO `good` VALUES ('18', '菠萝', '32', '32');
INSERT INTO `good` VALUES ('19', '橙子', '435', '32');
INSERT INTO `good` VALUES ('20', '花椒', '43', '65');
INSERT INTO `good` VALUES ('21', '大蒜', '23', '54');
INSERT INTO `good` VALUES ('22', '鸡蛋', '32', '43');
INSERT INTO `good` VALUES ('23', '西红柿', '32', '43');

写一个pojo对象

package pojo;

public class Good {
	private int goodId;
	private String goodName;
	private int surplus;
	private int goodPrice;
	public int getGoodId() {
		return goodId;
	}
	public void setGoodId(int goodId) {
		this.goodId = goodId;
	}
	public String getGoodName() {
		return goodName;
	}
	public void setGoodName(String goodName) {
		this.goodName = goodName;
	}
	public int getSurplus() {
		return surplus;
	}
	public void setSurplus(int surplus) {
		this.surplus = surplus;
	}
	public int getGoodPrice() {
		return goodPrice;
	}
	public void setGoodPrice(int goodPrice) {
		this.goodPrice = goodPrice;
	}
	public Good(int goodId, String goodName, int surplus, int goodPrice) {
		super();
		this.goodId = goodId;
		this.goodName = goodName;
		this.surplus = surplus;
		this.goodPrice = goodPrice;
	}
	public Good() {
		super();
	}
	@Override
	public String toString() {
		return "Good [goodId=" + goodId + ", goodName=" + goodName + ", surplus=" + surplus + ", goodPrice=" + goodPrice
				+ "]";
	}
	
}

GoodDao接口:

package Dao;

import java.util.List;
import pojo.Good;

public interface GoodDao {
	public List<Good> selectGoodAll();
	public Good  selectGoodById();
	public List<Good> selectGoodBySearch(String condition);
	public int updateGood(Good good);
	public int insertGood(Good good);
	public int deleteGood(int goodId);
}

GoodDaoImpl实现类:

package Dao.impl;

import java.util.ArrayList;
import java.util.List;

import Dao.BaseDao;
import Dao.GoodDao;
import pojo.Good;
import util.DbcpUtil;

public class GoodDaoImpl extends BaseDao implements GoodDao {

	@Override
	public List<Good> selectGoodAll() {
		List<Good> list = new ArrayList<Good>();
		String sql = "select * from good";
		this.executeQuery(sql);
		try {
			while (rs.next()) {
				Good good = new Good(rs.getInt(1), rs.getString(2), rs.getInt(3), rs.getInt(4));
				list.add(good);
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			DbcpUtil.closeConnection();
		}
		return list;
	}

	@Override
	public Good selectGoodById() {
		Good good = new Good();
		String sql = "select * from good where goodid = ?";
		this.executeQuery(sql);
		try {
			good.setGoodId(rs.getInt(1));
			good.setGoodName(rs.getString(2));
			good.setSurplus(rs.getInt(3));
			good.setGoodPrice(rs.getInt(4));
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			DbcpUtil.closeConnection();
		}
		return good;
	}

	@Override
	public List<Good> selectGoodBySearch(String condition) {
		List<Good> list = new ArrayList<Good>();
		String sql = "select * from good where goodname like ?";
		this.executeQuery(sql);
		try {
			while (rs.next()) {
				Good good = new Good(rs.getInt(1), rs.getString(2), rs.getInt(3), rs.getInt(4));
				list.add(good);
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			DbcpUtil.closeConnection();
		}
		return list;
	}

	@Override
	public int updateGood(Good good) {
		String sql = "UPDATE good SET goodName=?,surplus=?,goodPrice='? where goodId=?";
		return this.executeUpdate(sql, good.getGoodName(),good.getSurplus(),good.getGoodPrice(),good.getGoodId());
	}

	@Override
	public int insertGood(Good good) {
		String sql = "insert into good (goodName,surplus,goodPrice)VALUES(?,?,?)";
		return this.executeUpdate(sql, good.getGoodName(),good.getSurplus(),good.getGoodPrice());
	}

	@Override
	public int deleteGood(int goodId) {
		String sql = "delete from buy where goodid=?";
		return this.executeUpdate(sql, goodId);
	}

}

这里为了方便就不写service层了,我们直接写servlet,首先就是:

GoodGetAllservlet 实现doGet方法

protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    GoodDao goodDao = new GoodDaoImpl();
    List<Good> goods =  goodDao.selectGoodAll();
    request.setAttribute("goods", goods);
    request.getRequestDispatcher("good.jsp").forward(request, response);
}

good.jsp页面将我们的数据渲染上去



    
        
                    
货物编号 货物名称 剩余数量 货物价格 *** 作
${good.goodId} ${good.goodName} ${good.surplus} ${good.goodPrice} 正常 编辑 删除

这样我们就成功把数据渲染上去了,运行页面,我们可以看到我们数据库里的信息已经渲染到页面了,那这里就是我们主要的一个流程实现方式,我们的代码就是这么一层层写的,通过这个方式你是不是可以再创建几个servlet把增删改也写一下呢;这些写完,我们来看下搜索功能;

搜索功能

搜索功能也是通过传递参数,具体实现在这里,通过keyword然后传递给servlet:

这里我直接是带条件的搜索了,这里最后一定要注意,我们把keyword放进了session,不然分页的时候你点击下一页就会没有搜索条件喽

很简单,利用了,sql语句中的模糊查询;

分页功能

分页比较困难些,这里为了方便,我们创建了一个对页脚进行面向对象 *** 作,进行了下封装,这里可能比较难理解一点,其实我们这里只需要关心两个数据

  • 我们的数据记录条数,这取决于我们可以分多少页,我这里一页5条,24条记录,就是24/5+1=5页,多少记录,才能知道多少页数,这都是要给到下面值得

  • 第二个就是通过前端传过来,现在是第几页,只有知道是第几页我们才能知道从哪里开始重新渲染数据;

    然后上一页下一页+1-1的 *** 作;

这里渲染是重点,也能会晕哦,这个关系一定要弄清,上手尝试下就理解了:

  • 首页
  • 上一页
  • 如果总页数小于3页,我们全部显示出来
  • ${i.index}
  • ${i.index}
  • 如果总页数大于三页 如果小于总页数-2的页数,我们就从当前页开始往后显示3页
  • ${i.index}
  • ${i.index}
  • ...
  • 如果已经接近末尾了,我们直接从当前页显示到末尾
  • ...
  • ${i.index}
  • ${i.index}
  • 下一页
  • 尾页
小结

到这里我们的JavaWeb知识点就学的差不多了,可能之后你就要开启框架之旅了,但是不管学习任何框架,都是通过底层去网上抽取的,不断地接管不断地封装,然后配置,但是对于学习一个框架,我们的底层原理一定要夯实,框架原理都是很简单的

我们不一定要去看源码,但是我们后面的能力不是在使用框架上,而是我们对框架的改错找错能力,框架都是人写的,也会有性能bug的地方,这时候就是我们对于原理,以及原生JavaWeb的熟练了,以及怎么通过框架实现我们对框架的自定义div,所以一定要动手把这一部分练习的很熟练,这样我们之后的学习可以说已经成功一半了,好了,当然了,这只是一点儿,也只是一个开始;

后来的小伙伴直接看到这个,那真的幸运了,把源码下载起来,回到之前的跟篇走完,希望你会有收获的,那到这里就求三连,点个关注吧

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/921062.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-16
下一篇 2022-05-16

发表评论

登录后才能评论

评论列表(0条)

保存