1.0、JSTL与jsp实现对数据库的操作

MySql 数据库:

create database if not exists CommodityDB;
use CommodityDB;drop table if exists Commod;
create table Commod(cid int primary key auto_increment comment '编号',cname varchar(64) not null comment '商品名称',cprice datetime not null comment '商品价格', cdetail varchar(225)  comment '商品描述'
);insert into Commod(cname,cprice,cdetail) values
('小米6',2499,'很不错的手机'),
('iPhoneX',5800,'不错,很贵'),
('锤子T3',2499,'不是很有名'),
('魅族手机',3699,'手机很好看'),
('OPPO R9',2599,'可以当炸弹用');

util工具类:

package com.hexianwei.util;import java.sql.*;
import java.util.ArrayList;
import java.util.List;/*** Sql的相关操作,增、删、改、查!* @author 何仙伟**/
public class DBUtil2 {//连接对象//Statement 命令对象//打开连接//关闭连接//得到一个连接对象//查询(有参,无参)//修改(有参,无参)static Connection conn = null;static Statement stmt = null;//驱动,服务器地址,登录用户名,密码    static String DBDRIVER="com.mysql.jdbc.Driver";static String DBURL="jdbc:mysql://localhost:3306/CommodityDB?serverTimezone=GMT%2B8";static String DBUSER="root";static String DBPWD="10086";/*** 打开连接*/public static void open() {//加载驱动try {Class.forName(DBDRIVER);conn=DriverManager.getConnection(DBURL,DBUSER,DBPWD);} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();}}/*** 关闭连接*/public static void close() {try {if(stmt!=null)stmt.close();if(conn!=null && !conn.isClosed())conn.close();} catch (SQLException e) {// TODO Auto-generated catch block
            e.printStackTrace();}}/*** 得到一个连接对象,当用户使用DBUtil无法解决个性问题时* 可以通过本方法获得连接对象* @return*/public static Connection getConnection() {try {if(conn==null ||conn.isClosed())open();} catch (SQLException e) {e.printStackTrace();}return conn;}/*** executeQuery* executeUpdate* 获得查询的数据集* select * from student where name='' and sex=''* @param sql* @return*/public static ResultSet executeQuery(String sql) {try {open();//保证连接是成功的stmt = conn.createStatement();return stmt.executeQuery(sql);} catch (SQLException e) {// TODO Auto-generated catch block
            e.printStackTrace();}return null;}//修改表格内容public static int executeUpdate(String sql) {int result = 0;try {open();//保证连接是成功的stmt = conn.createStatement();result = stmt.executeUpdate(sql);} catch (SQLException e) {// TODO Auto-generated catch block
            e.printStackTrace();} finally {close();}return result;}/*** 如果执行的查询或存储过程,会返回多个数据集,或多个执行成功记录数* 可以调用本方法,返回的结果,* 是一个List<ResultSet>或List<Integer>集合* @param sql* @return*/public static Object execute(String sql) {boolean b=false;try {open();//保证连接是成功的stmt = conn.createStatement();b = stmt.execute(sql);            //true,执行的是一个查询语句,我们可以得到一个数据集//false,执行的是一个修改语句,我们可以得到一个执行成功的记录数if(b){return stmt.getResultSet();}else {return stmt.getUpdateCount();}} catch (SQLException e) {// TODO Auto-generated catch block
            e.printStackTrace();} finally {if(!b) {close();}}return null;}public static Connection getConn() {try {Class.forName(DBDRIVER).newInstance();conn=DriverManager.getConnection(DBURL, DBUSER, DBPWD);} catch (InstantiationException | IllegalAccessException | ClassNotFoundException e) {// TODO Auto-generated catch block
            e.printStackTrace();} catch (SQLException e) {// TODO Auto-generated catch block
            e.printStackTrace();}return conn;}/*** 查询数据,参数形式* select * from student where name=? and sex=?*/public static ResultSet executeQuery(String sql,Object[] in) {try {open();//保证连接是成功的PreparedStatement pst = conn.prepareStatement(sql);for(int i=0;i<in.length;i++)pst.setObject(i+1, in[i]);stmt = pst;//只是为了关闭命令对象pstreturn pst.executeQuery();} catch (SQLException e) {// TODO Auto-generated catch block
            e.printStackTrace();}return null;}/*** 修改*/public static int executeUpdate(String sql,Object[] in) {try {open();//保证连接是成功的PreparedStatement pst = conn.prepareStatement(sql);for(int i=0;i<in.length;i++)pst.setObject(i+1, in[i]);stmt = pst;//只是为了关闭命令对象pstreturn pst.executeUpdate();} catch (SQLException e) {// TODO Auto-generated catch block
            e.printStackTrace();}finally {close();}return 0;}public static Object execute(String sql,Object[] in) {boolean b=false;try {open();//保证连接是成功的PreparedStatement pst = conn.prepareStatement(sql);for(int i=0;i<in.length;i++)pst.setObject(i+1, in[i]);b = pst.execute();//true,执行的是一个查询语句,我们可以得到一个数据集//false,执行的是一个修改语句,我们可以得到一个执行成功的记录数if(b){System.out.println("----");/*List<ResultSet> list = new ArrayList<ResultSet>();list.add(pst.getResultSet());while(pst.getMoreResults()) {list.add(pst.getResultSet());}*/return pst.getResultSet();}else {System.out.println("****");List<Integer> list = new ArrayList<Integer>();list.add(pst.getUpdateCount());while(pst.getMoreResults()) {list.add(pst.getUpdateCount());}return list;}} catch (SQLException e) {// TODO Auto-generated catch block
            e.printStackTrace();} finally {if(!b) {System.out.println("====");close();}}return null;}/*** 调用存储过程  proc_Insert(?,?,?)* @param procName* @param in* @return*/public static Object executeProcedure(String procName,Object[] in) {open();try {procName = "{call "+procName+"(";String link="";for(int i=0;i<in.length;i++) {procName+=link+"?";link=",";}procName+=")}";CallableStatement cstmt = conn.prepareCall(procName);for(int i=0;i<in.length;i++) {cstmt.setObject(i+1, in[i]);}if(cstmt.execute()){return cstmt.getResultSet();}else {return cstmt.getUpdateCount();}} catch (SQLException e) {// TODO Auto-generated catch block
            e.printStackTrace();}return null;}/*** 调用存储过程,并有输出参数* @procName ,存储过程名称:proc_Insert(?,?)* @in ,输入参数集合* @output,输出参数集合* @type,输出参数类型集合*/public static Object executeOutputProcedure(String procName,Object[] in,Object[] output,int[] type){Object result = null;try {CallableStatement cstmt = conn.prepareCall("{call "+procName+"}");//设置存储过程的参数值int i=0;for(;i<in.length;i++){//设置输入参数cstmt.setObject(i+1, in[i]);//print(i+1);
            }int len = output.length+i;for(;i<len;i++){//设置输出参数cstmt.registerOutParameter(i+1,type[i-in.length]);//print(i+1);
            }boolean b = cstmt.execute();//获取输出参数的值for(i=in.length;i<output.length+in.length;i++)output[i-in.length] = cstmt.getObject(i+1);if(b) {result = cstmt.getResultSet();}else {result = cstmt.getUpdateCount();}} catch (SQLException e) {// TODO Auto-generated catch block
            e.printStackTrace();}return result;}
}

View Code

Javabean:

package com.hexianwei.vo;import java.util.*;public class Commod{private int cid;private String cname;private double cprice;private String cdetail;public int getcid(){return cid;}public void setcid(int cid){this.cid = cid;}public String getcname(){return cname;}public void setcname(String cname){this.cname = cname;}public double getcprice(){return cprice;}public void setcprice(double cprice){this.cprice = cprice;}public String getcdetail(){return cdetail;}public void setcdetail(String cdetail){this.cdetail = cdetail;}public Commod () {}public Commod (int cid,String cname,double cprice,String cdetail) {this.cid = cid;this.cname = cname;this.cprice = cprice;this.cdetail = cdetail;}
}

View Code

dao层:

package com.hexianwei.dao;import com.hexianwei.util.DBUtil2;
import com.hexianwei.vo.Commod;import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;public class CommodDao {static List<Commod> list = new ArrayList<>();/*** 查询所有数据** @return*/public List<Commod> getAll() {list.clear();//调用方法之前把集合里的数据清空Commod commod = null;String sql = "select * from Commod";ResultSet rs = DBUtil2.executeQuery(sql);if (rs != null) {try {while (rs.next()) {commod = new Commod(rs.getInt(1),rs.getString(2),rs.getDouble(3),rs.getString(4));list.add(commod);}} catch (Exception e) {e.printStackTrace();} finally {DBUtil2.close();}}return list;}/*** 添加数据** @param cname* @param cprice* @param cdetail* @return*/public int insert(String cname, double cprice, String cdetail) {String sql = "insert into Commod(cname,cprice,cdetail) values(?,?,?)";Object[] in = {cname, cprice, cdetail};return DBUtil2.executeUpdate(sql, in);}/*** 根据id删除数据** @param cid* @return*/public int delete(int cid) {String sql = "delete from Commod where cid=?";Object[] in = {cid};return DBUtil2.executeUpdate(sql, in);}/*** 根据cid修改数据* @param cname* @param cprice* @param cdetail* @param cid* @return*/public int update(String cname, double cprice, String cdetail,int cid){String sql = "update Commod set cname=?, cprice=?,cdetail=? where cid=?";Object[] in={cname,cprice,cdetail,cid};return DBUtil2.executeUpdate(sql,in);}
}

View Code

bo层:

package com.hexianwei.bo;import com.hexianwei.dao.CommodDao;
import com.hexianwei.vo.Commod;import java.util.List;public class CommodBo {CommodDao cdao = new CommodDao();/*** 查询* @return*/public List<Commod> getAll(){return cdao.getAll();}/*** 添加* @param cname* @param cprice* @param cdetail* @return*/public int insert(String cname, double cprice, String cdetail){return cdao.insert(cname,cprice,cdetail);}/*** 删除* @param cid* @return*/public int delete(int cid){return cdao.delete(cid);}/*** 修改* @param cname* @param cprice* @param cdetail* @param cid* @return*/public int update(String cname, double cprice, String cdetail,int cid){return cdao.update(cname,cprice,cdetail,cid);}
}

View Code

控制层:

package com.hexianwei.control;import com.hexianwei.bo.CommodBo;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;@WebServlet(name = "Commod")
public class Commod extends HttpServlet {CommodBo cbo = new CommodBo();protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setCharacterEncoding("utf-8");response.setContentType("text/html;charset=utf-8");String action = request.getParameter("action");if (action.equals("getAll")) {getAll(request, response);}else if(action.equals("insert")){insert(request,response);}else if(action.equals("delete")){delete(request,response);}else if(action.equals("update")){update(request,response);}}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doPost(request, response);}/*** 查询** @param response*/public void getAll(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {request.setAttribute("list",cbo.getAll());request.getRequestDispatcher("index.jsp").forward(request,response);}/*** 添加* @param request* @param response*/public void insert(HttpServletRequest request, HttpServletResponse response) throws IOException {String cname = request.getParameter("cname");double cprice = Double.parseDouble(request.getParameter("cprice"));String cdetail = request.getParameter("cdetail");int i = cbo.insert(cname,cprice,cdetail);if (i>0){response.sendRedirect("Commod?action=getAll");}}/*** 删除* @param request* @param response*/public void delete(HttpServletRequest request, HttpServletResponse response) throws IOException {int cid = Integer.parseInt(request.getParameter("cid"));int i = cbo.delete(cid);if (i>0){response.sendRedirect("Commod?action=getAll");}}/*** 修改* @param request* @param response*/public void update(HttpServletRequest request, HttpServletResponse response) throws IOException {String cname = request.getParameter("cname");double cprice = Double.parseDouble(request.getParameter("cprice"));String cdetail = request.getParameter("cdetail");int cid = Integer.parseInt(request.getParameter("cid"));int i = cbo.update(cname,cprice,cdetail,cid);if (i>0){response.sendRedirect("Commod?action=getAll");}}
}

View Code

jsp界面:

<%--Created by IntelliJ IDEA.User: 猴赛雷Date: 2018/9/15Time: 7:22To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head><title>$Title$</title><style>a{text-decoration: none;}#div1{width: 80%;margin: 0 auto;}#table1{width: 100%;border-collapse: collapse;text-align: center;}</style>
</head>
<body>
<div id="div1"><table id="table1" border="1"><tr><th>CID</th><th>商品名称</th><th>商品价格</th><th>商品详情</th><th>操作</th></tr><c:forEach var="getAll" items="${list}"><tr><td>${getAll.cid}</td><td>${getAll.cname}</td><td>${getAll.cprice}</td><td>${getAll.cdetail}</td><td><a href="/Commod?action=delete&cid=${getAll.cid}"><button class="del">删除</button></a><button class="etid">编辑</button></td></tr></c:forEach></table><fieldset id="f"><legend>添加/修改</legend><form id="form1" action="" method="post"><input id="cid" type="hidden" name="cid"><label for="cname">商品名称</label><input id="cname" type="text" name="cname" required><br/><label for="cprice">商品价格</label><input id="cprice" type="text" name="cprice" required><br/><label for="cdetail">商品详情</label><input id="cdetail" type="text" name="cdetail" required><br/><button id="butAdd">添加</button><button id="butUp">修改</button></form></fieldset>
</div>
<script src="js/jquery-1.11.3.min.js"></script>
<script>$("#table1").on("click",".del",function () {if (confirm("您确定要删除吗?")) {return true;}else {return false;}});//添加按钮
    $("#butAdd").click(function () {document.getElementById("form1").action="Commod?action=insert";$(this).submit();});//修改按钮
    $("#butUp").click(function () {if ($("#cid")!="") {document.getElementById("form1").action="Commod?action=update";$(this).submit();}else{alert("请选择您要修改的商品");}});$("#table1").on("click",".etid",function () {var td = this.parentNode.parentNode.childNodes;$("#cid").val(td[1].innerText);$("#cname").val(td[3].innerText);$("#cprice").val(td[5].innerText);$("#cdetail").val(td[7].innerText);});
</script>
</body>
</html>

View Code

效果如下:

下载源码:https://pan.baidu.com/s/1NJpbStu36KkT0Urj_LFLzQ

转载于:https://www.cnblogs.com/hxw6/p/9651056.html

数据库web项目对数据库的操作相关推荐

  1. java web 导入数据库_关于JAVA、 JAVA Web项目导入数据库驱动包的问题

    导入jdbc驱动程序包其实有很多种方法,但是不同的导包方式有不同的含义, 1.给Tomcat导包(表示服务器可能要用到数据库,例如数据源),如果是MyEclipse集成Tomcat,显然是要用&quo ...

  2. 进行Java Web项目开发需要掌握的技术

    目前, 国内外信息化建设已经进入基于Web应用为核心的阶段, Java作为应用于网络的最好语言,前景无限看好.然而,就算用Java建造一个不是很烦琐的web应用,也不是件轻松的事情.概括一下,实施Ja ...

  3. 使用宝塔搭建环境,以及把自己本地的Web项目通过宝塔发布到远程云服务器上

    文章目录 使用宝塔搭建环境,以及把自己本地的Web项目通过宝塔发布到远程云服务器上 XSheel连接到远程云服务器之后使用宝塔搭建环境 使用宝塔搭建服务器的环境 什么是搭建服务器环境 1.安装宝塔 2 ...

  4. vs.net web项目使用visual source safe进行源代码管理(转)

     这段时间在公司做一个.net项目, 一个项目开发小组3个人,开发环境是vs.net,语言是c#,三个人协同开发.既然是协同开发,就要找一个源代码控制软件来进行开发中的源代码管理和版本控制.我们首先想 ...

  5. java web中英翻译_中英文翻译简单web项目示例(3)

    我们上一篇初步体验了一把百度翻译api的魅力,由于分享作者是一位java程序员,所以下载的是百度翻译java语言开发包,这节主要分享介绍基于java web项目嵌入百度翻译api做个简单的中文翻译英文 ...

  6. 网页中调用matlab,在C#的Web项目中调用Matlab代码的步骤

    在C#的Web项目中调用Matlab代码的方法 为了毕设的图形检索方向的研究,本人需要在信科的师兄师姐们已经完成的C#界面中,调用现在研究的算法的Matlab代码,以便看到实验的效果.前段时间已经拖延 ...

  7. Bootstrap4+MySQL前后端综合实训-Day06-AM【eclipse详细配置Tomcat、开发web项目、servlet、连接MySQL8.0数据库、用户登录界面的编写与验证、分页查询】

    [Bootstrap4前端框架+MySQL数据库]前后端综合实训[10天课程 博客汇总表 详细笔记][附:实训所有代码] 目   录 eclipse重置视图 MySQL数据库--建数据库.建数据库 s ...

  8. C# web项目中sql数据库转sqlite数据库

    最近做了一个小网站,用到了一个使用sql server 2005的.net cms系统,但是现在我所买虚拟主机的服务商,不给虚拟主机提供sql server服务了,那就转数据库吧,转啥好呢,思来想去, ...

  9. java web access_Java Web项目中连接Access数据库的配置方法

    本文是对前几天的"JDBC连接Access数据库的几种方式"这篇的升级.因为在做一些小项目的时候遇到的问题,因此才决定写这篇博客的.昨天已经将博客公布了.可是后来经过一些验证有点问 ...

最新文章

  1. 图灵2010.10书讯
  2. Citrix Xendesktop中VDA注册DDC的流程
  3. Pycharm环境调整
  4. 机器学习数据资料下载地址
  5. 前端学习(2848):鼠标点击事件
  6. 如何使用易我数据恢复向导恢复数码相机删除的图片
  7. LeetCode 346. 数据流中的移动平均值(队列)
  8. “哪里有人喜欢孤独,不过是害怕失望罢了”———村上春树《东尼泷谷》观后感...
  9. c中获取python控制台输出_在真实的tim中用C捕获控制台python打印
  10. 大学计算机基础超详细知识点(高手总结),大学计算机基础超详细知识点(高手总结).doc...
  11. 多态——面向接口编程
  12. python学习精华——成长篇(二)
  13. 妙招教你Office Word 2007文档另存为PDF文件[转]
  14. Android studio实现语音转文字功能
  15. 阿里云域名如何拍卖?
  16. 计算机专业轻薄本还是游戏本,十大精品笔记本电脑(高端轻薄本和高端游戏本)...
  17. 知识图谱的构建及用Neo4j和grapheco/InteractiveGraph实现知识图谱的可视化
  18. 服务过美国总统竞选的非传统投票UI【demo已放出】
  19. 基于浮云E绘图源码定制开发网络状态图(拓扑图),关联业务对象,并动态更新
  20. char* strlen()学习

热门文章

  1. DevStream 开源社区——相识、相知、相爱
  2. 计算机非编码类,真核生物非编码RNA基因:计算机识别及进化
  3. Jsp页面中双引号问题
  4. ClickHouse 物化视图
  5. UE4 如何做视屏清晰度(超清、高清、清晰、流畅)
  6. Pyramidal Person Re-Identification via Multi-Loss Dynamic Training
  7. 开学买笔记本 小编给你5点建议
  8. 构建微服务的十大 Go 框架/库
  9. vue ui的安装及使用
  10. 学以致用,小程序自学源码