附加:前台相关操作

一、实现商品分类在前台主页显示

1、数据库添加typeGoods表,typeId char(2),typeName varchar(20)

2、Bean设计TypeGoods.java

package mybean;

public class TypeGoods {
 private String typeId;
 private String typeName;
 public String getTypeId() {
  return typeId;
 }
 public void setTypeId(String typeId) {
  this.typeId = typeId;
 }
 public String getTypeName() {
  return typeName;
 }
 public void setTypeName(String typeName) {
  this.typeName = typeName;
 }

}

3、TypeGoodsDAO类的list方法

package mybean;

import java.sql.*;
import java.util.LinkedList;

public class TypeGoodsDAO {
 public LinkedList<TypeGoods> list()
 {
  Connection conn=null;
  PreparedStatement ps=null;
  ResultSet rs=null;
  String sql="select * from typeGoods";
  LinkedList<TypeGoods> ts=new LinkedList<TypeGoods>();
  
  
  
  
  try{
  Class.forName(Const.DRIVER);
  conn=DriverManager.getConnection(Const.URL, Const.USER,Const.PASSWORD);
  ps=conn.prepareStatement(sql);
  
  rs=ps.executeQuery();
  
  while(rs.next()){
   TypeGoods t=new TypeGoods();
   t.setTypeId(rs.getString("typeId"));
   t.setTypeName(rs.getString("typeName"));
   ts.add(t);
   
  }
  
  
  }catch(Exception e){
   e.printStackTrace();
   
  }
  try {
   if(rs!=null)
    {rs.close();}
   if(ps!=null)
    {ps.close();}
   if(conn!=null)
    {conn.close();}
  } catch (SQLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  return ts;
 }

}

说明:为实现通用化,将常用的变量,定义为常量存储于Const类中

package mybean;

public class Const {
 public final  static String URL="jdbc:sqlserver://localhost:1433;database=ebuy";
 public final static String USER="shopping";
 public final static String PASSWORD="shopping";
 public final static String DRIVER="com.microsoft.sqlserver.jdbc.SQLServerDriver";

}

4、前台首页显示left.jsp部分代码

<ul class="list_con">
       <%
       TypeGoodsDAO tdao=new TypeGoodsDAO();
       LinkedList<TypeGoods> ts=tdao.list();
       for(TypeGoods t:ts)
       {
        %>
            
         <li><a href="index.jsp?no=1&type=<%=t.getTypeId()%>"><%=t.getTypeName() %> </a></li>
   
         
            <%} %>
        </ul>

5、菜单栏显示商品类别

二、商品分类显示

1、GoodsDAO中添加search方法

Class.forName(Const.DRIVER);
   conn=DriverManager.getConnection(Const.URL, Const.USER, Const.PASSWORD);
   ps=conn.prepareStatement(sql);
   
   ps.setString(1,type);//1
   
   rs=ps.executeQuery();
   
   while(rs.next()){
    Goods g=new Goods();
    g.setGid(rs.getInt("gid"));
    g.setName(rs.getString("name"));
    g.setPrice(rs.getFloat("price"));
    g.setNum(rs.getInt("num"));
    g.setContent(rs.getString("content"));
    g.setPicture(rs.getString("picture"));
    gs.add(g);
   }
   
   
   
  } catch (Exception e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  
  
  try {
   if(rs!=null)
    {rs.close();}
   if(ps!=null)
    {ps.close();}
   if(conn!=null)
    {conn.close();}
  } catch (Exception e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  
  
  return gs;
 }

2、right页确定是显示部分商品还是显示全部商品

<% String no=request.getParameter("no");
 String type=request.getParameter("type");
 String txt="";
 if(no==null||"1".equals(no))
 { 
  GoodsDAO  dao=new GoodsDAO();
  LinkedList<Goods> gs=null;
    if(no==null){
    txt="全部商品";
   gs=dao.list();
  }else if(no.equals("1")){
    System.out.println(type);
  gs=dao.search(type);
  txt="部分商品";
  }
   
 %>

<div class="current">
        <p>当前位置:首页&gt;<%=txt %></p>
    </div>
   <div class="right_down">

<%
     for(Goods g:gs){
     %>

<div class="post">
    <a href="detail.jsp?gid=<%=g.getGid()%>"><img src=\‘#\‘" /></a>
    <ul>
       <li>名称:<a href="detail.jsp?gid=<%=g.getGid()%>"><%=g.getName() %></a></li>
       <li>价格:<%=g.getPrice() %></li>
       <li>库存数量:<%=g.getNum() %>
      
          
      </ul>
    </div>
    
    <%}
    
    
   }%>
     
</div>

3、显示商品详细信息detail.jsp

<%@ page language="java" import="java.util.*,mybean.*" pageEncoding="UTF-8"%>
<%
String gid=request.getParameter("gid");
GoodsDAO dao=new GoodsDAO();
   Goods g=dao.getById(Integer.parseInt(gid));
 %>
<div class="detail">
<form method="GET" action="doCar.jsp">
    <img src="images/product.jpg">
    <ul>
            <li>编号:<%=g.getGid() %></li>
          <li>名称:<%=g.getName() %></li>
          <li>价格:<%=g.getPrice() %></li>
          <li><a href="comment.jsp?gid=<%=g.getGid()%>">查看评价</a></li>
       <li>数量:<input name="num" size="4" type="text">
       <input value="购买" type="submit"></li>
       <input name="gid" value="<%=g.getGid()%>" type="hidden">
       <input name="action" value="buy" type="hidden">
                 
      </ul>
 </form>
 </div>
<div class="describe">商品描述:<%=g.getContent()%></div>

说明:我们可以看到详细信息是在独立页显示的,尝试实现在首页的右侧显示

4、实现详细信息在右侧显示

right页更改

<%@ page language="java" import="java.util.*,mybean.*" pageEncoding="UTF-8"%>

<% String no=request.getParameter("no");
 String type=request.getParameter("type");
 String gid=request.getParameter("gid");
 String txt="";
 if(no==null||"1".equals(no))
 { 
  GoodsDAO  dao=new GoodsDAO();
  LinkedList<Goods> gs=null;
    if(no==null){
    txt="全部商品";
   gs=dao.list();
  }else if(no.equals("1")){
    System.out.println(type);
  gs=dao.search(type);
  txt="部分商品";
  }
  
 %>

<div class="current">
        <p>当前位置:首页&gt;<%=txt %></p>
    </div>
   <div class="right_down">

<%
     for(Goods g:gs){
     %>

<div class="post">
    <a href="index.jsp?no=detail&gid=<%=g.getGid()%>"><img src=\‘#\‘" /></a>
    <ul>
       <li>名称:<a href="index.jsp?no=detail&gid=<%=g.getGid()%>"><%=g.getName() %></a></li>
       <li>价格:<%=g.getPrice() %></li>
       <li>库存数量:<%=g.getNum() %>
      
          
      </ul>
    </div>
    
    <%}
    
 
}
if("detail".equals(no)){
 txt="详细信息"; 
%>
<jsp:include page="detail.jsp">
 <jsp:param value="<%=gid%>" name="gid"/>
</jsp:include>

<%
}
%>

</div>
 <div class="clear"></div>

时间: 2024-11-11 04:33:49

附加:前台相关操作的相关文章

第十二次课:前台相关操作

一.前台实现按商品分类显示商品 二.点击前台商品图片或名称,显示商品详细信息 三.前台实现分页显示 四.前台用户注册功能完善 五.前台用户登录完善 六.用户个人中心设计

linux下进程相关操作

一.定义和理解 狭义定义:进程是正在运行的程序的实例. 广义定义:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动. 进程的概念主要有两点: 第一,进程是一个实体.每一个进程都有它自己的地址空间,一般情况下,包括文本区域.数据区域和堆栈区域.文本区域存储处理器执行的代码:数据区域存储变量和进程执行期间使用的动态分配的内存:堆栈区域存储着活动过程调用的指令和本地变量. 第二,进程是一个“执行中的程序”.程序是一个没有生命的实体,只有处理器赋予程序生命时,它才能成为一个活动的实体,我们

MFC 对MYSQL数据库相关操作

记得看过有人说,现在的软件基本上都是连着数据库的,如果一个软件没有跟数据库相连,基本没什么作用.虽然这种说法略显片面,但数据库之于软件的重要也是毋庸置疑的. MFC连接数据库应该不算是什么新鲜的命题了,方法是有好几种的,本人试了下,感觉利用MySQL提供的C语言API来进行操作蛮方便的,所以在此记录下相关的操作. 要用MySQL提供的C语言API,首先要包含API的头文件目录,也就是在MFC工程属性中的"包含目录"下添加MySQL安装目录的"include"文件夹.

10、自学——Linux的学习进度与任务【用户和用户组相关操作】

用户和用户组相关操作 用户和用户组定义: 用户:资源获取标识符(资源分配),是安全权限模型的可信要素之一 用户组:用户组是指多个用户的集合,方便对一类需要同样权限的用户授权   密码:用户认证  Linux是多用户.多任务的操作系统.  多用户指:多人同时使用系统资源:多任务:同时运行多个进程 用户和用户组的类别: 1.用户:名称解析库 /etc/passwd a.管理员 root 用户标识(UID)为0 b.普通用户及系统用户  普通用户的用户标识(既UID):   CentOS 5,6: 5

docker实战之centos6.5上安装、镜像、容器相关操作

学习docker前,理解以下几个概念有助于更好的使用docker.镜像,容器,仓库.镜像,就是一个操作系统环境,里面只有你需要的几个应用程序,如apache,mysql,php之类,只读模板.容器,从镜像创建的运行实例.可视为一个简易环境中和其中运行的应用.仓库,存放镜像的地方.学过git的同学可能更容易理解. 一.安装docker时,增加第三方源epel如果是centos7,下载并安装这个软件包#wget http://mirror.hust.edu.cn/epel/beta/7/x86_64

C++ PDF文档相关操作

人生总是在赶着一个又一个的期限,直到最后的大限. 近来基本没更新过博客,实在是准备雅思看英语加上调节老看英语后的烦躁心情闹的.本来以为考完研就与大考再也不见了,这种想法实在是 Too young,Too naive.之前做过一个项目,是关于在Windows平台下用C++实现PDF文档制作的相关操作的,今天有点心情拿来总结下. 关于PDF的库其实有不少,本人因为一开始用神器搜到的是PDFlib,就用这个库做了.这就是所谓的缘分吧. PDFlib并非是开源库,要使用需要付费,否则会有一个让人不要不要

二叉树的相关操作

#include<stdio.h> #include<malloc.h> #define MAXSIZE 20 typedef char TEelemtype; typedef struct BiTNode{ TEelemtype data; struct BiTNode *lchild,*rchild; }BiTNode,*BiTree; //队列的方式 typedef struct queueelem { BiTNode* b[MAXSIZE]; int front,rear;

(二十四)linux新定时器:timefd及相关操作函数

timerfd是Linux为用户程序提供的一个定时器接口.这个接口基于文件描述符,通过文件描述符的可读事件进行超时通知,所以能够被用于select/poll的应用场景. 一,相关操作函数 #include <sys/timerfd.h> int timerfd_create(int clockid, int flags); int timerfd_settime(int fd, int flags, const struct itimerspec *new_value, struct itim

二叉树各种相关操作(建立二叉树、前序、中序、后序、求二叉树的深度、查找二叉树节点,层次遍历二叉树等)(C语言版)

将二叉树相关的操作集中在一个实例里,有助于理解有关二叉树的相关操作: 1.定义树的结构体: 1 typedef struct TreeNode{ 2 int data; 3 struct TreeNode *left; 4 struct TreeNode *right; 5 }TreeNode; 2.创建根节点: 1 TreeNode *creatRoot(){ 2 TreeNode * root =(TreeNode *)malloc(sizeof(TreeNode)); 3 if(NULL=