web页面增、删、改

关于对Web的增删改操作,要缕清思路:

一:项目框架搭建

要用到的,Servlet、El与JSTL表达式、项目的基本框架搭建(就是java经典三层框架):

表述层WEB层: 包含JSP和Servlet,与web相关内容,负责浏览器响应和请求

业务逻辑层 service层  :业务逻辑,处理try...catch

数据访问层 dao层  :对SQL数据操作

除以上三层外,还要写个实体类domain,这个实体类根据数据库的数据而定义

依赖关系:web依赖于service  依赖于 dao层

 三:实现数据库连接  在MySQL中创建所需数据库,将表建好

数据库设计 

1,:创建数据库  store_1.0

2定义项目信息表名 product其中pid为自增长主键,增量为1

3:在product表插入记录 做试验

连接数据库

 创建一个DBUtils  定义为 MyDBUtils

package com.oracle.tools;
//创建一个工具类,定义为 MyDBUtils
import javax.sql.DataSource;

import org.apache.commons.dbcp.BasicDataSource;
public class MyDBUtils {
    public static final String DRIVER = "com.mysql.jdbc.Driver";
    public static final String URL = "jdbc:mysql://localhost:3306/store_v1.0?useUnicode=true&characterEncoding=UTF-8";
    public static final String USERNAME = "root";
    public static final String PASSWORD = "123456";
    /*
     * 创建连接池BasicDataSource
     */
    public static BasicDataSource dataSource = new BasicDataSource();
    //静态代码块
    static {
        //对连接池对象 进行基本的配置
        dataSource.setDriverClassName(DRIVER); // 这是要连接的数据库的驱动
        dataSource.setUrl(URL); //指定要连接的数据库地址
        dataSource.setUsername(USERNAME); //指定要连接数据的用户名
        dataSource.setPassword(PASSWORD); //指定要连接数据的密码
    }
    /*
     * 返回连接池对象
     */
    public static DataSource getDataSource(){
        return dataSource;
    }
}

四:建立实体类

在domain层下创建一个实体类  product 并封装

package com.oracle.domain;

public class Product {
    private String pid;
    private String pname;
    private Double market_price;
    private Double shop_price;
    private String pimage;
    private String pdate;
    private Integer is_hot;
    private String pdesc;
    private Integer pflag;
    private String cid;
    public String getPid() {
        return pid;
    }
    public void setPid(String pid) {
        this.pid = pid;
    }
    public String getPname() {
        return pname;
    }
    public void setPname(String pname) {
        this.pname = pname;
    }
    public Double getMarket_price() {
        return market_price;
    }
    public void setMarket_price(Double market_price) {
        this.market_price = market_price;
    }
    public Double getShop_price() {
        return shop_price;
    }
    public void setShop_price(Double shop_price) {
        this.shop_price = shop_price;
    }
    public String getPimage() {
        return pimage;
    }
    public void setPimage(String pimage) {
        this.pimage = pimage;
    }
    public String getPdate() {
        return pdate;
    }
    public void setPdate(String pdate) {
        this.pdate = pdate;
    }
    public Integer getIs_hot() {
        return is_hot;
    }
    public void setIs_hot(Integer is_hot) {
        this.is_hot = is_hot;
    }
    public String getPdesc() {
        return pdesc;
    }
    public void setPdesc(String pdesc) {
        this.pdesc = pdesc;
    }
    public Integer getPflag() {
        return pflag;
    }
    public void setPflag(Integer pflag) {
        this.pflag = pflag;
    }
    public String getCid() {
        return cid;
    }
    public void setCid(String cid) {
        this.cid = cid;
    }
    @Override
    public String toString() {
        return "Product [pid=" + pid + ", pname=" + pname + ", market_price=" + market_price + ", shop_price="
                + shop_price + ", pimage=" + pimage + ", pdate=" + pdate + ", is_hot=" + is_hot + ", pdesc=" + pdesc
                + ", pflag=" + pflag + ", cid=" + cid + "]";
    }    
}

五:实现增删改

在web包下创建AddProductServlet

注意:一个Servlet对应一个功能 ,实现几个功能就要建几个Servlet

package com.oracle.web;
//增
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
import java.util.UUID;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.beanutils.BeanUtils;

import com.oracle.domain.Product;
import com.oracle.service.ProductService;

public class AddProductServlet extends HttpServlet {
    private ProductService productService=new ProductService();
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //解决乱码
        request.setCharacterEncoding("UTF-8");
        //获取所有参数Map
        Map<String,String[]> map=request.getParameterMap();
        //创建Product对象
        Product product=new Product();
        //用BeanUtils进行封装
        try {
            BeanUtils.populate(product,map);
        } catch (IllegalAccessException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        //设置pid
        product.setPid(UUID.randomUUID().toString());
        //设置pdate
        Date date=new Date();
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM--dd HH:mm:ss");
        String d=sdf.format(date);
        product.setPdate(d);
        //调用Service层方法
        productService.add(product);
        //重定向
        response.sendRedirect(request.getContextPath()+"/AdminProductListServlet");
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }
}
package com.oracle.web;
//改
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.util.Map;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.beanutils.BeanUtils;

import com.oracle.domain.Product;
import com.oracle.service.ProductService;

public class AdminEditProductServlet extends HttpServlet {
    private ProductService productService = new ProductService();

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 解决乱码
        request.setCharacterEncoding("utf-8");
        // 从前台获取所有参数Map
        Map<String, String[]> map = request.getParameterMap();
        // 创建Product对象
        Product product = new Product();
        // 用BeanUtils进行封装
        try {
            BeanUtils.populate(product, map);
        } catch (IllegalAccessException | InvocationTargetException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        // 调用Service方法
        productService.edit(product);
        // 重定向
        response.sendRedirect(request.getContextPath() + "/AdminProductListServlet");
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }
}
package com.oracle.web;
//删
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.oracle.service.ProductService;

public class DeleteProductServlet extends HttpServlet {
    private ProductService productService = new ProductService();

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 获取pid
        String pid = request.getParameter("pid");
        // 调用service
        productService.delete(pid);
        // 重定向
        response.sendRedirect(request.getContextPath() + "/AdminProductListServlet");
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }
}

 六:实现servlet和对应jsp(html)页面

Servlet有两种创建方式:

1.手工创建:自己创建java类,实现Servlet具体内容,需要去web_INF下的web.xml配置Servlet

2.程序创建:在我们创建Servlet时,程序自动配置好web.xml

创建Dao层 ProductDao

package com.oracle.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.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;

import com.oracle.domain.Product;
import com.oracle.tools.JDBCUtils;
import com.oracle.tools.MyDBUtils;

public class ProductDao {
//    查询所有商品 
    public List<Product> getALL() throws SQLException{
/*//        获得连接
        Connection conn=JDBCUtils.getConn();
        String sql="select * from product";
        PreparedStatement pst=conn.prepareStatement(sql);
        ResultSet rs=pst.executeQuery();
//        处理结果集
        ArrayList<Product> arr=new ArrayList<Product>();
        while(rs.next()){   //rs.取行的值  
            Product pro=new Product();
            pro.setPid(rs.getString("pid"));
            pro.setPname(rs.getString("pname"));
            pro.setMarket_price(rs.getDouble("market_price"));
            pro.setIs_hot(rs.getInt("is_hot"));
            pro.setPdate(rs.getString("pdate"));
            pro.setPimage(rs.getString("pimage"));
            pro.setPdesc(rs.getString("pdesc"));
            pro.setPflag(rs.getInt("pflag"));
            pro.setCid(rs.getString("cid"));
            arr.add(pro);            
        }
        return arr;*/
//        创建QueryRunner对象
        QueryRunner qr=new QueryRunner(MyDBUtils.getDataSource());
        String sql="select * from product";
        List<Product> arr=qr.query(sql,new BeanListHandler<Product>(Product.class));
        return arr;        
    }
//    添加商品
    public void add(Product product) throws SQLException{
//        创建Queryrunner对象
        QueryRunner qr=new QueryRunner(MyDBUtils.getDataSource());//获得连接池对象
        String sql="insert into product(pid,pname,market_price,shop_price,pdate,pdesc,is_hot,cid) values(?,?,?,?,?,?,?,?)";
//        下面获取一定注意要按上面的字符串顺序来 
        Object[] obj={product.getPid(),product.getPname(),product.getMarket_price(),product.getShop_price(),product.getPdate(),product.getPdesc(),product.getIs_hot(),product.getCid()};
//        执行SQL
        qr.update(sql,obj);        
    }
//    根据pid查询商品
    public Product getProductById(String pid) throws SQLException{
        QueryRunner qr=new QueryRunner(MyDBUtils.getDataSource());
        String sql="select *from product where pid=?";
        Product product=qr.query(sql, new BeanHandler<Product>(Product.class),pid);
        return product;
    }
//    根据pid修改商品
    public void edit(Product product) throws SQLException{
        QueryRunner qr=new QueryRunner(MyDBUtils.getDataSource());
        String sql="update product set pname=?,market_price=?,shop_price=?,pdesc=?,is_hot=?,cid=? where pid=?";
        Object[] obj={product.getPname(),product.getMarket_price(),product.getShop_price(),product.getPdesc(),product.getIs_hot(),product.getCid(),product.getPid()};
        qr.update(sql,obj);        
    }
//    根据pid删除商品
    public void delete(String pid) throws SQLException{
        QueryRunner qr=new QueryRunner(MyDBUtils.getDataSource());
        String sql="delete from product where pid=?";
        qr.update(sql,pid);
    }
}

创建 ProductService

package com.oracle.service;

import java.sql.SQLException;
import java.util.List;

import com.oracle.dao.ProductDao;
import com.oracle.domain.Product;

public class ProductService {
    private ProductDao productDao=new ProductDao();
//    查询所有商品
    public List<Product> getAll(){
        List<Product> arr=null;
        try {
            arr=productDao.getALL();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return arr;    
    }
//    添加商品
    public void add(Product product){
        try {
            productDao.add(product);
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
//    根据pid查询商品
    public Product getProductById(String pid){
        Product product=null;
        try {
            product=productDao.getProductById(pid);
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return product;
    }
//    根据pid修改商品
    public void edit(Product product){
        try {
            productDao.edit(product);
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
//    根据pid删除商品
    public void delete(String pid){
        try {
            productDao.delete(pid);
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}
package com.oracle.web;
//
import java.io.IOException;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.oracle.domain.Product;
import com.oracle.service.ProductService;
public class AdminProductListServlet extends HttpServlet {
    // 后台的商品列表页面
    private ProductService productService = new ProductService();

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 获取商品列表
        List<Product> list = productService.getAll();
        // 向域中存list
        request.setAttribute("ProductList", list);
        // 请求转发
        request.getRequestDispatcher("/admin/product/list.jsp").forward(request, response);
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }
}

原文地址:https://www.cnblogs.com/zs0322/p/11175325.html