zoukankan      html  css  js  c++  java
  • 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);
        }
    }

  • 相关阅读:
    Tomcat
    DOM/SAX/PULL解析XML
    Android网络编程 知识框架
    Chapter 10 Networking/JSON Services
    Chapter 10 Networking/Web Service Using HTTP
    Android-Universal-Image-Loader
    8.Media and Camera/Media Camera
    PAT乙级1007.素数对猜想(20)
    筛法求素数详解
    PAT乙级1006.换个格式输出整数(15)
  • 原文地址:https://www.cnblogs.com/zs0322/p/11175325.html
Copyright © 2011-2022 走看看