栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java首页index.jsp页面(包括商品展示页面:goodsList.jsp)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java首页index.jsp页面(包括商品展示页面:goodsList.jsp)

接上一篇:java登录验证码、2周内自动登录例题、注销

  1. 上一篇是登录注册的页面,注册成功跳转到登录,登录成功跳转到首页
  2. 下面来实现首页的代码,先来看要实现的页面
  3. 要实现一个头部的head.jsp页面,
  4. 该页面通过动态包含在index.jsp首页、goodsList.jsp商品展示页面中
  5. head.jsp实现的功能:点击登录、注册、注销按钮实现效果,(输入框、购物车代码还没实现,先给个div就行)
  6. 还有就是对商品类别表(type表)中的数据(1:手机,2:电脑,3:家居……)的展示,也就是商品分类,在head.jsp页面中给一个
      标签,在中实现,通过ajxa异步显示

    $.ajax({
    url:“”,
    type:“”,
    dataType:“”,
    success:function(data){
    //处理data
    },
    error:function(){
    //报错信息
    }
    })

    1. url给地址"/type?method=findAllType",该findAllType方法就是查type表的数据,把数据转成json格式返回
    2. 通过导包:fastjson-1.2.jar,JSON.toJSONString(),转成json格式
    3. type给get/post,这里用get
    4. dataType给格式,上面返回的json格式,所以这里type=“json”
    5. success:function(data){}获取成功,查到的type表中的数据就在data数组中,
    6. foreach遍历data数组,data[0].tname就是调用该数组第一个对象的tname属性
    7. 遍历并依次创建li>a标签添加到上面定义的ul标签里面
    8. 通过jQuery方法添加:$("#goodsType").append("
    9. ");jQuery使用详解
    10. a标签的href给的是/product?method=show&tid=${data[i].tid};
    11. 实现的就是点击手机、电脑通过a标签的href传值,调用show方法,show方法实现的就是:根据同时传来的tid值,在商品表中查找t_id=tid的商品,例如点击手机tid=1,就是查的所有的手机,点击电脑tid=2,就是查所有电脑。
    12. 查到的数据,放在req.serAttribute(“pageBean”,pageBean);数据保存起来
    13. show方法最后的返回值就是跳转到goodsList.jsp页面
    14. goodsList.jsp页面通过JSTL遍历刚刚保存的pageBean什么是JSTL?
    15. 以上遍历获取的数据太多了,需要实现分页
    16. 分页:分页查询详解
    17. 就是查数据的时候,sql语句给个limit ?,?
    18. 于是定义一个PageBean类,保存第几页的数据,
    一、head.jsp
    1. 导航是从bootstrap直接复制的,也就是的内容,要给a标签的路径
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    
    
    <%--    --%>
    <%--    --%>
    <%--    --%>
        Title
        
        
        
        
        
    
    
    
    
    
    
    
    
    二、Servle、Dao、Service 2.1 TypeController
    1. 重点就是findAllType()方法,返回的是json
    2. 调用service层的findAll方法,findAll()调用dao层的selectAll方法
    3. selectAll方法的sql语句就是““select t_id as tid,t_name as tname,t_info as tinfo from type limit 0,5;””
    @WebServlet(name = "TypeController",value = "/type")
    public class TypeController extends BaseServlet {
       public String findAllType(HttpServletRequest request,HttpServletResponse response){
           TypeService typeService = new TypeServiceImpl();
           List list = typeService.findAll();
    
            String json = JSON.toJSONString(list);
           return json;
       }
    }
    
    
    2.1.1dao层
    public interface TypeDao {
        public List selectAll();
    }
    
    
    2.1.2daoImpl
    public class TypeDaoImpl implements TypeDao {
        private QueryRunner queryRunner = new QueryRunner(C3p0Utils.getDataSource());
        @Override
        public List selectAll() {
            List list = null;
            String sql = "select t_id as tid,t_name as tname,t_info as tinfo from type limit 0,5;";
            try {
               list =  queryRunner.query(sql,new BeanListHandler(Type.class));
            } catch (SQLException e) {
                e.printStackTrace();
            }
            return list;
        }
    }
    
    
    2.1.3 service层
    public interface TypeService {
        public List findAll();
    }
    
    2.1.4 serviceImpl
    public class TypeServiceImpl implements TypeService {
    
        @Override
        public List findAll() {
            List list = null;
            TypeDao typeDao = new TypeDaoImpl();
            list = typeDao.selectAll();
            return list;
        }
    }
    
    2.2 ProductController
    1. 重点就是PageBean类,要给list 、pageIndex、pageSize、totalRows参数
    2. 调用service层的goodsList()方法,给的参数是第几页pageIndex,页大小pageSize,tid返回结果就是PageBean
    3. tid就是查商品表中分类是tid的商品,这里tid=1,定义的都是手机
    4. goodsList()方法调用dao层的selectCountByTid(tid)方法查当前tid=1的商品有几个,返回long值,注意sql语句是“select count(1) from product where t_id = ?”
    5. goodsList()方法调用dao层的selectProductByPage((pageIndex-1)*pageSize, pageSize,tid) 方法查tid=tid的商品从(pageIndex-1)*pageSize行,依次再查pageSize行,返回结果是List数组
    6. 注意sql语句是"select p_id as pid,t_id as tid,p_name as pname,p_time as ptime,p_image as pimage,p_price as pprice,p_state as pstate,p_info as pinfo from product where t_id = ? limit ?,?;"
    @WebServlet(name = "ProductController",value = "/product")
    public class ProductController extends BaseServlet {
    
        public String  show(HttpServletRequest req, HttpServletResponse resp) {
            int tid = Integer.parseInt(req.getParameter("tid"));
            int pageSize = 8;
            String pageIndex = req.getParameter("pageIndex");
            int page = 1;
            if(pageIndex!=null){
                page = Integer.parseInt(pageIndex);
            }
            //调用业务逻辑获取要展示的商品列表
            ProductService productService = new ProductServiceImpl();
            PageBean productPageBean = productService.goodsList(page,pageSize,tid);
            req.setAttribute("pageBean",productPageBean);
            return Constants.FORWARD+Constants.FLAG+"/goodsList.jsp";
        }
    
    }
    
    2.2.1 PageBean
    1. List list保存List
    2. int pageIndex;//定义第几页
    3. int pageSize; //定义页大小
    4. long totalRows; //全部数据有多少行
    5. int totalPage; //全部数据根据页大小确定多少页
    6. int startRow; //查询从第几行开始查,起始行
    7. 给上面的所有属性添加get和set方法,构造方法给前4个参数
    8. 给getTotalPage()方法return的值改为 return (totalRows % pageSize==0?totalRows / pageSize :pageRows /pageSize +1);
    import java.util.List;
    
    public class PageBean {
        private List list;
        private int startRow;//起始行
        private long totalRows;//总行数
        private int pageIndex;//页码
        private int pageSize;//页大小
        private int totalPage;//总页数
    
        public PageBean(List list, int pageIndex, int pageSize,long totalRows) {
            this.list = list;
            this.pageIndex = pageIndex;
            this.pageSize = pageSize;
            this.totalRows = totalRows;
        }
    
        public List getList() {
            return list;
        }
    
        public void setList(List list) {
            this.list = list;
        }
    
        public int getStartRow() {
            return startRow;
        }
    
        public void setStartRow(int startRow) {
            this.startRow = startRow;
        }
    
        public long getTotalRows() {
            return totalRows;
        }
    
        public void setTotalRows(long totalRows) {
            this.totalRows = totalRows;
        }
    
        public int getPageIndex() {
            return pageIndex;
        }
    
        public void setPageIndex(int pageIndex) {
            this.pageIndex = pageIndex;
        }
    
        public int getPageSize() {
            return pageSize;
        }
    
        public void setPageSize(int pageSize) {
            this.pageSize = pageSize;
        }
    
        public long getTotalPage() {
    
            return (totalRows % pageSize == 0 ? totalRows / pageSize : totalRows / pageSize + 1);
        }
    
        public void setTotalPage(int totalPage) {
            this.totalPage = totalPage;
        }
    }
    
    
    2.2.2 dao层
    public interface ProductDao {
        public List selectProductByPage(int startRow,int pageSize,int type);
        public long selectCountByTid(int type);
    }
    

    daoImpl

    public class ProductDaoImpl implements ProductDao {
        private QueryRunner queryRunner = new QueryRunner(C3p0Utils.getDataSource());
    
        @Override
        public List selectProductByPage(int startRow, int pageSize, int type) {
            List list = null;
            String sql = "select p_id as pid,t_id as tid,p_name as pname,p_time as ptime,p_image as pimage,p_price as pprice,p_state as pstate,p_info as pinfo from product where t_id = ? limit ?,?;";
            try {
                list  = queryRunner.query(sql,new BeanListHandler(Product.class),type,startRow,pageSize);
            } catch (SQLException e) {
                e.printStackTrace();
            }
            return list;
        }
    
        @Override
        public long selectCountByTid(int type) {
            Long count = null;
            String sql = "select count(1) from product where t_id = ?";
            try {
               count= (Long) queryRunner.query(sql,new ScalarHandler(),type);
            } catch (SQLException e) {
                e.printStackTrace();
            }
            return count;
        }
    }
    
    
    2.2.3 service层

    ProductService

    public interface ProductService {
        public PageBean goodsList(int pageIndex, int pageSize, int type);
    }
    

    ProductServiceImpl

    public class ProductServiceImpl implements ProductService {
        @Override
        public PageBean goodsList(int pageIndex, int pageSize, int type) {
            ProductDao productDao = new ProductDaoImpl();
            List list = productDao.selectProductByPage(((pageIndex-1)*pageSize),pageSize,type);
            long count = productDao.selectCountByTid(type);
            PageBean productPageBean = new PageBean(list,pageIndex,pageSize,count);
            return productPageBean;
        }
    }
    
    
    三、goodsList.jsp页面


    1. 重点就是foreach
    2. 上面说过了这里是处理req.setAttribute(“pageBean”,pageBean);
    3. jQuery方法获取${pageBean.list},这里.list是调用pageBean的getList()方法
    4. 获取的就是List list商品表的数据;
    5. JSTL方法遍历和判断,jsp页面开头加上<@taglib prefix=“c” url = “http://java.sun.com/jsp/jstl/core”%>,导包javax.servlet.jsp.jstl-api-1.2.2.jar
    6. 遍历:
    7. 判断:,判断是为了当再第一页和最后一页的时候不能再点击了


    上面一行显示4个商品,通过栅格实现
    每个商品的框是class=“thumbnail”
    框里面的文字信息class=“caption”

    分页查询

    具体看代码

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    
    
        Title
        
        
        
        
    
    
    
    
    

    商品列表

    商品名称:${g.pname}

    热销指数

    上架日期:${g.ptime}

    价格:${g.pprice}

    转载请注明:文章转载自 www.mshxw.com
    本文地址:https://www.mshxw.com/it/820691.html
    我们一直用心在做
    关于我们 文章归档 网站地图 联系我们

    版权所有 (c)2021-2022 MSHXW.COM

    ICP备案号:晋ICP备2021003244-6号