博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
web页面增、删、改
阅读量:4660 次
发布时间:2019-06-09

本文共 13429 字,大约阅读时间需要 44 分钟。

关于对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;//创建一个工具类,定义为 MyDBUtilsimport 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
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
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
getALL() throws SQLException{/*// 获得连接 Connection conn=JDBCUtils.getConn(); String sql="select * from product"; PreparedStatement pst=conn.prepareStatement(sql); ResultSet rs=pst.executeQuery();// 处理结果集 ArrayList
arr=new ArrayList
(); 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
arr=qr.query(sql,new BeanListHandler
(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.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
getAll(){ List
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
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

你可能感兴趣的文章
docker安装部署
查看>>
AVL树、splay树(伸展树)和红黑树比较
查看>>
多媒体音量条显示异常跳动
查看>>
运算符及题目(2017.1.8)
查看>>
ssh自动分发密匙脚本样板
查看>>
转 小辉_Ray CORS(跨域资源共享)
查看>>
Linux安装postgresql
查看>>
MyBatis启动:MapperStatement创建
查看>>
【 全干货 】5 分钟带你看懂 Docker !
查看>>
[转]优化Flash性能
查看>>
popStar手机游戏机机对战程序
查看>>
lambda表达式树
查看>>
二次注入原理及防御
查看>>
会话记住已登录功能
查看>>
Linux内核分析——可执行程序的装载
查看>>
第一阶段冲刺3
查看>>
父类引用指向子类对象
查看>>
网页如何实现下载功能
查看>>
IT男专用表白程序
查看>>
读《大道至简》第六章感想
查看>>