3atv精品不卡视频,97人人超碰国产精品最新,中文字幕av一区二区三区人妻少妇,久久久精品波多野结衣,日韩一区二区三区精品

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ssh2项目之自己想的购物网站

發布時間:2023/12/15 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ssh2项目之自己想的购物网站 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

想著把零碎的整理一下,合成一個完整的,雖然做完還是很簡陋的項目

哎呀,這樣一個小練手的項目,我居然做了七天,天哪,先大概回想一下有哪些需求

工具:tomcat /weblogic ?myeclipse ?mysql

數據庫里有用戶表,用戶權限表,商品表,商品分類表,留言表,訂單表,訂單明細表,還應該在加一個購物車的表,偷懶,購物車信息就放在session里了

大概要實現的功能:

用戶:查詢商品,分類查詢商品(菜單欄上的頂級分類),根據商品的名字模糊查詢商品,注冊(默認用戶等級),登陸后添加購物車,批量添加到購物車,購物車里的商品選中全部或部分提交訂單,下訂單,模擬付款,催店家發貨,取消訂單,批量刪除自己的訂單,對商品留言(評價),刪除自己的留言

管理員:新增用戶(指定用戶的等級),刪除用戶,修改用戶的信息;;新增用戶的權限信息,刪除用戶的權限(刪除之前必須先刪掉具有該權限的用戶),增加商品(商品的圖片上傳,可以選擇分類),修改商品,刪除商品,增加商品的分類,刪除商品的分類(刪除之前必須先刪掉該分類下的所有的商品),對用戶的留言管理(刪除),對商品的訂單管理(發貨,刪除訂單)

使用攔截器,未登錄不可以進行下面的操作,轉到登陸頁面(管理員去管理員的登陸界面,用戶去用戶的登陸界面)

先在做完了,但是離一個真正的產品 還有很遠的距離,只是自己練手用的

一開始使用weblogic 做服務器,哎呀,服務器配好數據源,爽的不行,但是啟動太慢,加之自己不太會使用,不適合調試使用,所以又配了tomcat ,

ssh2的框架的搭建參考:http://blog.csdn.net/i_do_can/article/details/50378275

搭好框架就可以開始了我是先寫后臺,上面的那些需要實現的功能也是我邊寫邊修改的,目錄結構


先設計實體類


其中pagebean 是為了分頁顯示使用的 get/set方法都要有,我只貼出數據字段間的關系,比如主鍵啦,一對多啦

public class PageBean {private List<?> list; //通過hql從數據庫分頁查詢出來的list集合private int allRows; //總記錄數private int totalPage; //總頁數private int currentPage; //當前頁 }

user里的字段

package com.cl.shopping.bean;import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.Table;@Entity @Table(name="tbl_user") public class User {private Integer id;private String username;private String password;private UserRole role;private String realname;private String tel;private String email;private String address;@Id@GeneratedValuepublic Integer getId() {return id;}@ManyToOne@JoinColumn(name="role")public UserRole getRole() {return role;}} 商品里的字段 package com.cl.shopping.bean;import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.Table;@Entity @Table(name = "tbl_goods") public class Goods{private Integer id;private String goodsname;private GoodTypes goodtypes;private Integer count;private Float price;private String goodspic;private String goodsdesc;@Id@GeneratedValuepublic Integer getId() {return this.id;}//商品對商品種類:多個商品對一個分類@ManyToOne@JoinColumn(name="goodstype")public GoodTypes getGoodtypes() {return goodtypes;}@Overridepublic int hashCode() {final int prime = 31;int result = 1;result = prime * result + ((id == null) ? 0 : id.hashCode());return result;} //只比較 id 在com.cl.shopping.action.OrderAction.ordersubmitformsession() 里可能會使用@Overridepublic boolean equals(Object obj) {Goods other = (Goods) obj;if (id == null) {if (other.id != null)return false;} else if (!id.equals(other.id))return false;return true;}} 商品分類 package com.cl.shopping.bean;import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.Table;@Entity @Table(name = "tbl_goods_type") public class GoodTypes {private Integer id;private Integer pid;private String typename;private String note;@Id@GeneratedValuepublic Integer getId() {return this.id;}} 用戶對商品留言類

package com.cl.shopping.bean;import java.util.Date;import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.OneToMany; import javax.persistence.Table;/*商品留言列表*/ @Entity @Table(name="tbl_goods_board") public class GoodBoards {private int id;private User user;private Goods good;private String message;private Date date;@Id@GeneratedValuepublic int getId() {return id;}//一條留言只可以由一個用戶發表,一個用戶可以發表多條留言//現在是相對留言而言,多個留言對應于一個用戶@ManyToOne@JoinColumn(name="userId")public User getUser() {return user;}//一個留言對應一個商品,一個商品可以有多個留言//現在是相對留言而言,多個留言對應于一個商品@ManyToOne@JoinColumn(name="goodsId")public Goods getGood() {return good;}} 訂單類 package com.cl.shopping.bean;import java.util.Date;import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.Table;@Entity @Table(name = "tbl_order") public class Order {/** 這幾個參數的關系:如果用戶取消了訂單,頁面顯示已取消* 如果用戶未付款,顯示 付款,取消訂單* 如果用戶已付款,但是還沒有發貨,顯示,已付款,等待發貨,提醒發貨* 如果用戶已付款,但是還沒有發貨,顯示 訂單已發貨* */private Integer id;//費用private Float cost;//下訂單的用戶private User userid;//訂單的生成時間private Date createtime;//訂單對否有效 ,用戶可以取消訂單,不是刪除, 0有效 1 無效 未付款直接取消,已付款的涉及退款問題private int valid; //是否付款 : 0 未付款 1:已付款private int pay;//是否發貨 : 0 未發貨 1:已發貨private int deliver;//訂單的發貨時間private Date delivertime;@Id@GeneratedValuepublic Integer getId() {return id;}//對訂單而言,多個訂單由一個用戶產生@ManyToOne@JoinColumn(name="userid")public User getUserid() {return userid;} } 訂單明細類 package com.cl.shopping.bean;import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.OneToOne; import javax.persistence.Table;@Entity @Table(name = "tbl_order_detail") public class OrderDetail {private Integer id;//對應哪個訂單private Order orderid;//對應哪個商品private Goods goodsid;private String goodsname;//單價private Float baseprice;private Integer num;@Id@GeneratedValuepublic Integer getId() {return id;}//一條訂單詳情 對應一個訂單@OneToOne@JoinColumn(name="orderid")public Order getOrderid() {return orderid;}//一條訂單詳情 對應一個商品@OneToOne@JoinColumn(name="goodsid")public Goods getGoodsid() {return goodsid;}} 以及購物車類 package com.cl.shopping.bean;public class Cart {private Integer goodsid;private String goodsName;//單價private Float baseprice;//數量private Integer count;//小計private Float amount;}

然后寫dao層,我大概分了幾個模塊,由于每個界面都想做分頁,所有就把分頁單獨寫在一個dao里

BaseDao extends HibernateDaoSupport ? ,以后每個dao直接繼承就好了,這樣我在spring里配數據源時也更加方面一些,里面就兩個方法:一個獲取要查詢的語句的結果的總記錄數,一個進行分頁,分頁就是使用hibernate里提供好的

package com.cl.shopping.dao;import java.util.List;import org.hibernate.Query; import org.hibernate.Transaction; import org.springframework.orm.hibernate3.support.HibernateDaoSupport;public class BaseDao extends HibernateDaoSupport {public int getAllRowCount(String hql){int allRows = 0;List<?> list = getHibernateTemplate().find(hql);allRows = list.size();return allRows;}//通過名字模糊查詢public int getAllRowCount(String hql,String name){int allRows = 0;List<?> list = getHibernateTemplate().find(hql,name);allRows = list.size();return allRows;}/*** 使用hibernate提供的分頁功能,得到分頁顯示的數據* */public List<?> queryByPage(String hql, int offset, int pageSize){Query query = getSession().createQuery(hql).setFirstResult(offset).setMaxResults(pageSize);List<?> list = query.list();return list;}} 關于分頁很多人有不同的做法,我偷懶,就直接使用?

getSession().createQuery(hql).setFirstResult(offset).setMaxResults(pageSize);

接著寫關于用戶的dao,我寫成了接口

package com.cl.shopping.dao;import java.util.List;import com.cl.shopping.bean.User; import com.cl.shopping.bean.UserRole;public interface UserDao {void saveUser(User user);void deleteUser(int id);//根據對象直接刪除void deleteUser(User user);List<?> findUserByName(String name);//找到所有是該權限的用戶List<?> findUserByRoleId(int roleid);User findUserById(int id);//roleList<?> findAllRole();void saveRole(UserRole role);void deleteRole(int id);}

實現類:

package com.cl.shopping.dao.impl;import java.util.List;import com.cl.shopping.bean.User; import com.cl.shopping.bean.UserRole; import com.cl.shopping.dao.BaseDao; import com.cl.shopping.dao.UserDao;public class UserDaoImpl extends BaseDao implements UserDao{public void deleteUser(int id) {//先加載特定實例Object p = getHibernateTemplate().get(User.class, new Integer(id));//刪除特定實例getHibernateTemplate().delete(p);}public void deleteUser(User user) {getHibernateTemplate().delete(user);}public List<?> findUserByRoleId(int roleid) {List<?> list = null;list = this.getHibernateTemplate().findByNamedParam("from User u where u.role.id=:roleid","roleid",roleid);return list;}public void saveUser(User user) {getHibernateTemplate().saveOrUpdate(user);}//這里不是做的搜索,是確定知道名字的, 所以沒有做模糊查詢public List<?> findUserByName(String name) {// Query query = getSession().createQuery("from User u where u.username = :username"); // query.setParameter("username", name); // List<?> list = query.list(); // User user = null; // if(list.size() > 0){ // user = (User) list.get(0); // } // return user;// http://blog.csdn.net/yaorongzhen123/article/details/8556484List<?> list = null;list = this.getHibernateTemplate().findByNamedParam("from User u where u.username=:name","name",name);return list;}public List<?> findAllUser() { // //以前的寫法 // Query query = getSession().createQuery("from User"); // return query.list();return this.getHibernateTemplate().find("from User");}public List<?> findAllRole() {return this.getHibernateTemplate().find("from UserRole order by id");}public void saveRole(UserRole role) {getHibernateTemplate().saveOrUpdate(role);}public void deleteRole(int id) {Object p = getHibernateTemplate().get(UserRole.class, new Integer(id));//刪除特定實例getHibernateTemplate().delete(p);}public User findUserById(int id) {//先加載特定實例User p = getHibernateTemplate().get(User.class, new Integer(id));return p;}}

關于商品的?

package com.cl.shopping.dao;import java.util.List;import com.cl.shopping.bean.GoodTypes; import com.cl.shopping.bean.Goods;public interface GoodsDao {/*Goods*/void saveGoods(Goods goods);void deleteGoods(int id);void deleteGoods(Goods goods);List<?> findGoodsByTypeId(int typeid);List<?> findGoodsByName(String name);Goods findGoodsById(int id);/*GoodTypes*/void saveGoodTypes(GoodTypes goodTypes);void deleteGoodTypes(int id);List<?> findAllGoodTypes();}

商品的刪除寫了兩個,一個是id 刪除(先根據id查出來,再把對象刪除),一個是直接對象刪除(減少查的過程,用于刪除分類時,直接傳遞對象)

實現類:

package com.cl.shopping.dao.impl;import java.util.List;import com.cl.shopping.bean.GoodTypes; import com.cl.shopping.bean.Goods; import com.cl.shopping.dao.BaseDao; import com.cl.shopping.dao.GoodsDao;public class GoodsDaoImpl extends BaseDao implements GoodsDao{public void saveGoods(Goods goods) {getHibernateTemplate().saveOrUpdate(goods);}//需要刪除實例的主鍵public void deleteGoods(int id) {//get()可以取空的數據集,但load()不行//先加載特定實例Object p = getHibernateTemplate().get(Goods.class, new Integer(id));//刪除特定實例getHibernateTemplate().delete(p);}public void deleteGoods(Goods goods) {// TODO Auto-generated method stubgetHibernateTemplate().delete(goods);}public List<?> findGoodsByTypeId(int typeid) {List<?> list = null;//list = this.getHibernateTemplate().find("from Goods g where g.goodtypes.id = ?",typeid);return list;}public Goods findGoodsById(int id) {Goods goods = getHibernateTemplate().get(Goods.class, new Integer(id));return goods;}public List<?> findGoodsByName(String name) {List<?> list = null;//list = this.getHibernateTemplate().find("from Goods g where g.goodsname like ?","%" + name + "%");return list;}public void saveGoodTypes(GoodTypes goodTypes) {getHibernateTemplate().saveOrUpdate(goodTypes);}public void deleteGoodTypes(int id) {Object p = getHibernateTemplate().get(GoodTypes.class, new Integer(id));//刪除特定實例getHibernateTemplate().delete(p);}public List<?> findAllGoodTypes() {// TODO Auto-generated method stubreturn this.getHibernateTemplate().find("from GoodTypes");}} 關于訂單的 package com.cl.shopping.dao;import java.util.List;import com.cl.shopping.bean.Order; import com.cl.shopping.bean.OrderDetail;public interface OrderDao {/*order*///增加訂單,返回最新增加的id int saveOrder(Order order);//管理員刪除 訂單void deleteOrder(int id);// //管理員發貨 // void deliverOrder(Order order); // // //用戶 取消 訂單 其實就是更新訂單,只是修改一個字段而已 // void removeOrder(Order order); // // //用戶 付款 其實就是更新訂單,只是修改一個字段而已 // void payOrder(Order order);//根據訂單id 查找訂單 顯示訂單詳情時,上面是訂單信息,下面是訂單詳細Order findOrderById(int id);//分頁的使用basedao 里的/*orderdetail*///增加訂單詳情void saveOrderdetail(OrderDetail orderdetail);//管理員,用戶刪除 void deleteOrderdetail(int id);//直接根據對象刪除 void deleteOrderdetail(OrderDetail orderdetail);List<OrderDetail> findAllOrderdetailByOrderId(int id);}

為何保存訂單會有一個返回值,兄弟呀,我是使用的mysql的逐漸自增,但是在保存訂單時,我需要獲取剛生成的訂單在數據庫的id作為訂單明細的外鍵,所以這里有個返回值,就是返回剛生成的id?

<span style="white-space:pre"> </span>getHibernateTemplate().saveOrUpdate(order);getHibernateTemplate().flush(); // 為何要返回呢,是因為有些主鍵類型是自增的,插入成功后才能得到該主鍵值,所以需要返回PO給調用者 ;int last_insert_id = order.getId();return last_insert_id;

實現類

package com.cl.shopping.dao.impl;import java.util.List;import com.cl.shopping.bean.Order; import com.cl.shopping.bean.OrderDetail; import com.cl.shopping.dao.BaseDao; import com.cl.shopping.dao.OrderDao;public class OrderDaoImpl extends BaseDao implements OrderDao{public int saveOrder(Order order) {getHibernateTemplate().saveOrUpdate(order);getHibernateTemplate().flush(); // 為何要返回呢,是因為有些主鍵類型是自增的,插入成功后才能得到該主鍵值,所以需要返回PO給調用者 ;int last_insert_id = order.getId();return last_insert_id;}public void deleteOrder(int id) {Object p = getHibernateTemplate().get(Order.class, new Integer(id));getHibernateTemplate().delete(p);}// public void deliverOrder(Order order) { // // getHibernateTemplate().saveOrUpdate(order); // // } // // public void removeOrder(Order order) { // // getHibernateTemplate().saveOrUpdate(order); // // } // // public void payOrder(Order order) { // // getHibernateTemplate().saveOrUpdate(order); // // }public Order findOrderById(int id) {Order order = getHibernateTemplate().get(Order.class, new Integer(id));return order;}public void saveOrderdetail(OrderDetail orderdetail) {getHibernateTemplate().saveOrUpdate(orderdetail);}public void deleteOrderdetail(int id) {OrderDetail p = getHibernateTemplate().get(OrderDetail.class, new Integer(id));getHibernateTemplate().delete(p);}public void deleteOrderdetail(OrderDetail orderdetail) {getHibernateTemplate().delete(orderdetail);}@SuppressWarnings("unchecked")public List<OrderDetail> findAllOrderdetailByOrderId(int id) {List<OrderDetail> list = null;list = this.getHibernateTemplate().findByNamedParam("from OrderDetail o where o.orderid.id=:orderid","orderid",id);return list;}} 關于用戶對商品的留言: package com.cl.shopping.dao;import com.cl.shopping.bean.GoodBoards;/*留言就做一個用戶新增的,然后分頁顯示,管理員刪除的功能,不可更改*/ public interface GoodBoardsDao {void saveGoodBoards(GoodBoards goodBoards);void deleteGoodBoards(int id);}

實現類

package com.cl.shopping.dao.impl;import com.cl.shopping.bean.GoodBoards; import com.cl.shopping.dao.BaseDao; import com.cl.shopping.dao.GoodBoardsDao;public class GoodBoardsDaoImpl extends BaseDao implements GoodBoardsDao{public void saveGoodBoards(GoodBoards goodBoards) {getHibernateTemplate().saveOrUpdate(goodBoards);}public void deleteGoodBoards(int id) {Object p = getHibernateTemplate().get(GoodBoards.class, new Integer(id));getHibernateTemplate().delete(p);}} 寫完dao 開始service層

抽象方法跟dao差不多,多個分頁查詢的

先是user相關的

package com.cl.shopping.service;import java.util.List;import com.cl.shopping.bean.PageBean; import com.cl.shopping.bean.User; import com.cl.shopping.bean.UserRole;public interface UserService {void saveUser(User user);void deleteUser(int id);//這個只是登陸是查新使用。User findUserByName(String name);User findUserById(int id);PageBean findUserBypage(int pageSize, int page);//roleList<?> findAllRole();void saveRole(UserRole role);void deleteRole(int id);}實現類 package com.cl.shopping.service.impl;import java.util.List;import com.cl.shopping.bean.PageBean; import com.cl.shopping.bean.User; import com.cl.shopping.bean.UserRole; import com.cl.shopping.dao.impl.UserDaoImpl; import com.cl.shopping.service.UserService;public class UserServiceImpl implements UserService{private UserDaoImpl userdao;public UserServiceImpl(){ // session = GetSession.getSession();userdao = new UserDaoImpl();}public void setUserdao(UserDaoImpl userdao) {this.userdao = userdao;}public void saveUser(User user) {userdao.saveUser(user);}public void deleteUser(int id) {userdao.deleteUser(id);}public User findUserByName(String name) {List<?> list = userdao.findUserByName(name);if(list.size() > 0){ return (User)list.get(0);}return null;}public List<?> findAllUser() {return userdao.findAllUser();}public User findUserById(int id) {// TODO Auto-generated method stubreturn userdao.findUserById(id);}public PageBean findUserBypage(int pageSize, int page) {PageBean pageBean = new PageBean();String hql = "from User";int allRows = userdao.getAllRowCount(hql);int totalPage = pageBean.getTotalPages(pageSize, allRows);int currentPage = pageBean.getCurPage(page);int offset = pageBean.getCurrentPageOffset(pageSize, currentPage);List<?> list = userdao.queryByPage(hql, offset, pageSize);pageBean.setList(list);pageBean.setAllRows(allRows);pageBean.setCurrentPage(currentPage);pageBean.setTotalPage(totalPage);return pageBean;}public List<?> findAllRole() {return userdao.findAllRole();}public void saveRole(UserRole role) {userdao.saveRole(role);}//刪除權限時,要刪除所以是該權限的用戶public void deleteRole(int id) {List<User> list = (List<User>) userdao.findUserByRoleId(id);for(int i= 0;i<list.size();i++){userdao.deleteUser(list.get(i));}userdao.deleteRole(id);} } 關于商品的: package com.cl.shopping.service;import java.util.ArrayList; import java.util.List;import com.cl.shopping.bean.GoodTypes; import com.cl.shopping.bean.Goods; import com.cl.shopping.bean.PageBean;public interface GoodsService {/*Goods*/void saveGoods(Goods goods);void deleteGoods(int id);Goods findGoodsById(int id);List<?> findGoodsByName(String name);PageBean findGoodsByName(String name,int pageSize, int page);PageBean findGoodsBypage(int pageSize, int page);PageBean findGoodsBypage(int pageSize, int page,List<GoodTypes> lists);/*GoodTypes*/void saveGoodTypes(GoodTypes goodTypes);void deleteGoodTypes(int id);PageBean findGoodTypesByPage(int pageSize, int page);List<?> findAllGoodTypes(); }

實現類

package com.cl.shopping.service.impl;import java.util.List; import com.cl.shopping.bean.GoodTypes; import com.cl.shopping.bean.Goods; import com.cl.shopping.bean.PageBean; import com.cl.shopping.dao.impl.GoodsDaoImpl; import com.cl.shopping.service.GoodsService;public class GoodServiceImpl implements GoodsService {private GoodsDaoImpl goodsDaoImpl;public void saveGoods(Goods goods) {goodsDaoImpl.saveGoods(goods);}public void deleteGoods(int id) {goodsDaoImpl.deleteGoods(id);}public Goods findGoodsById(int id) {Goods goods = goodsDaoImpl.findGoodsById(id);return goods;}public List<?> findGoodsByName(String name) {List<?> list = goodsDaoImpl.findGoodsByName(name);return list;}public PageBean findGoodsByName(String name,int pageSize, int page) {PageBean pageBean = new PageBean();/* String hql = "from Goods g where g.goodsname like ?" ;int allRows = goodsDaoImpl.getAllRowCount(hql,"%" + name + "%");int totalPage = pageBean.getTotalPages(pageSize, allRows);int currentPage = pageBean.getCurPage(page);int offset = pageBean.getCurrentPageOffset(pageSize, currentPage);hql = "from Goods g where g.goodsname like '%" + name + "%'";//這句話純測試看看 ,是可以使用的,原來就是 % 要加 ' 呀allRows = goodsDaoImpl.getAllRowCount(hql);*///原來就是 % 要加 ' 呀String hql = "from Goods g where g.goodsname like '%" + name + "%'";int allRows = goodsDaoImpl.getAllRowCount(hql);int totalPage = pageBean.getTotalPages(pageSize, allRows);int currentPage = pageBean.getCurPage(page);int offset = pageBean.getCurrentPageOffset(pageSize, currentPage);List<?> list = goodsDaoImpl.queryByPage(hql, offset, pageSize);pageBean.setList(list);pageBean.setAllRows(allRows);pageBean.setCurrentPage(currentPage);pageBean.setTotalPage(totalPage);return pageBean;}/*** pageSize為每頁顯示的記錄數* page為當前顯示的網頁*/public PageBean findGoodsBypage(int pageSize, int page) {PageBean pageBean = new PageBean();String hql = "from Goods";int allRows = goodsDaoImpl.getAllRowCount(hql);int totalPage = pageBean.getTotalPages(pageSize, allRows);int currentPage = pageBean.getCurPage(page);int offset = pageBean.getCurrentPageOffset(pageSize, currentPage);List<?> list = goodsDaoImpl.queryByPage(hql, offset, pageSize);pageBean.setList(list);pageBean.setAllRows(allRows);pageBean.setCurrentPage(currentPage);pageBean.setTotalPage(totalPage);return pageBean;}//分類查詢,lists里放的是需要查詢的分類的 id ,其實這里lists存的直接是分類對象public PageBean findGoodsBypage(int pageSize, int page,List<GoodTypes> lists) {PageBean pageBean = new PageBean();String hql = "from Goods g where g.goodtypes.id in (";for(int i = 0;i<lists.size();i++){hql = hql + lists.get(i).getId() + ",";}hql=hql.substring(0,(hql.length()-1));hql += ")";//數據庫 SELECT * FROM tbl_goods g where g.id in (10,6,7) int allRows = goodsDaoImpl.getAllRowCount(hql);int totalPage = pageBean.getTotalPages(pageSize, allRows);int currentPage = pageBean.getCurPage(page);int offset = pageBean.getCurrentPageOffset(pageSize, currentPage);List<?> list = goodsDaoImpl.queryByPage(hql, offset, pageSize);pageBean.setList(list);pageBean.setAllRows(allRows);pageBean.setCurrentPage(currentPage);pageBean.setTotalPage(totalPage);return pageBean;}public void saveGoodTypes(GoodTypes goodTypes) {goodsDaoImpl.saveGoodTypes(goodTypes);}public void deleteGoodTypes(int id) {List<Goods> list = (List<Goods>) goodsDaoImpl.findGoodsByTypeId(id);for(int i = 0;i<list.size();i++){goodsDaoImpl.deleteGoods(list.get(i));}goodsDaoImpl.deleteGoodTypes(id);}public List<?> findAllGoodTypes() {// TODO Auto-generated method stubreturn goodsDaoImpl.findAllGoodTypes();}public PageBean findGoodTypesByPage(int pageSize, int page) {PageBean pageBean = new PageBean();String hql = "from GoodTypes";int allRows = goodsDaoImpl.getAllRowCount(hql);int totalPage = pageBean.getTotalPages(pageSize, allRows);int currentPage = pageBean.getCurPage(page);int offset = pageBean.getCurrentPageOffset(pageSize, currentPage);List<?> list = goodsDaoImpl.queryByPage(hql, offset, pageSize);pageBean.setList(list);pageBean.setAllRows(allRows);pageBean.setCurrentPage(currentPage);pageBean.setTotalPage(totalPage);return pageBean;}public void setGoodsDaoImpl(GoodsDaoImpl goodsDaoImpl) {this.goodsDaoImpl = goodsDaoImpl;}} 這里有幾個要注意的就是,一個是使用“like”模糊查詢時,需要加上單引號,這個問題,困擾了好久說實話,

首頁沒有做js效果,類似那種鼠標一上去,二級菜單出現這種的,我雖界面沒有寫,但是我把查詢的代碼寫出來了,

public PageBean findGoodsBypage(int pageSize, int page,?List<GoodTypes> lists) ?看代碼完全可以看懂

還有刪除商品分類時,一般刪除我們都是傳一個 id 過來,這里需要先查詢出使用了此分類的商品,依次刪除,這里為了提高效率,直接是傳的對象過去

關于留言的:

package com.cl.shopping.service;import com.cl.shopping.bean.GoodBoards; import com.cl.shopping.bean.PageBean;public interface GoodBoardsService {void saveGoodBoards(GoodBoards goodBoards);void deleteGoodBoards(int id);PageBean findGoodsBypage(int pageSize, int page,int goodid); }

實現類

package com.cl.shopping.service.impl;import java.util.List;import com.cl.shopping.bean.GoodBoards; import com.cl.shopping.bean.PageBean; import com.cl.shopping.dao.GoodBoardsDao; import com.cl.shopping.dao.impl.GoodBoardsDaoImpl; import com.cl.shopping.service.GoodBoardsService;public class GoodBoardsServiceImpl implements GoodBoardsService {private GoodBoardsDaoImpl goodBoardsDaoImpl;public void saveGoodBoards(GoodBoards goodBoards) {goodBoardsDaoImpl.saveGoodBoards(goodBoards);}public void deleteGoodBoards(int id) {goodBoardsDaoImpl.deleteGoodBoards(id);}public PageBean findGoodsBypage(int pageSize, int page,int goodid) {PageBean pageBean = new PageBean();String hql ;if(goodid != 0){//用戶查該商品hql = "from GoodBoards g where g.good.id=" + goodid;}else{//管理員查全部hql = "from GoodBoards";}int allRows = goodBoardsDaoImpl.getAllRowCount(hql);int totalPage = pageBean.getTotalPages(pageSize, allRows);int currentPage = pageBean.getCurPage(page);int offset = pageBean.getCurrentPageOffset(pageSize, currentPage);List<?> list = goodBoardsDaoImpl.queryByPage(hql, offset, pageSize);pageBean.setList(list);pageBean.setAllRows(allRows);pageBean.setCurrentPage(currentPage);pageBean.setTotalPage(totalPage);return pageBean;}public void setGoodBoardsDaoImpl(GoodBoardsDaoImpl goodBoardsDaoImpl) {this.goodBoardsDaoImpl = goodBoardsDaoImpl;}} 這里由于用戶的留言是針對單個商品的,即在單個商品里留言,所以在查詢時,寫了兩個方法,一個管理員分頁顯示所有的留言,一個是用戶的根據商品的id分頁顯示該商品的留言

關于訂單的

package com.cl.shopping.service;import java.util.List;import com.cl.shopping.bean.Order; import com.cl.shopping.bean.OrderDetail; import com.cl.shopping.bean.PageBean;public interface OrderService {/*order*///增加訂單,連訂單明細一起增加的void saveOrder(Order order,List<OrderDetail> orderdetaillist);//管理員刪除 訂單 ,連訂單明細一起刪除void deleteOrder(int id);//管理員發貨void deliverOrder(Order order);//用戶 取消 訂單 其實就是更新訂單,只是修改一個字段而已void removeOrder(Order order);//用戶 付款 其實就是更新訂單,只是修改一個字段而已void payOrder(Order order);//根據訂單id 查找訂單 顯示訂單詳情時,上面是訂單信息,下面是訂單詳細Order findOrderById(int id);//管理員查詢所有的訂單PageBean findAllOrderBypage(int pageSize, int page);//用戶查詢自己的所有的訂單 其他什么用戶根據時間啦,訂單編號啦,訂單里的某一個商品名來模糊查找訂單啦,就暫時先不做了PageBean userFindOrderBypage(int userid ,int pageSize, int page);//查詢訂單 的 明細 管理員和用戶都可以查詢PageBean findAllOrderDetailBypage(int orderid,int pageSize, int page);}

功能就見注釋吧,實現類

package com.cl.shopping.service.impl;import java.util.List;import com.cl.shopping.bean.Order; import com.cl.shopping.bean.OrderDetail; import com.cl.shopping.bean.PageBean; import com.cl.shopping.dao.impl.OrderDaoImpl; import com.cl.shopping.service.OrderService;public class OrderServiceImpl implements OrderService{private OrderDaoImpl orderDaoImpl;public void deleteOrder(int id) {// 先刪除訂單明細,再刪除訂單//根據商品的id找出所有的訂單明細List<OrderDetail> list = orderDaoImpl.findAllOrderdetailByOrderId(id);//這里根據 id 刪是可以的,但是效率不高,這里先查了一次,刪除前又要查一次,所以直接根據 對象刪for(int i =0; i < list.size(); i++){ // orderDaoImpl.deleteOrderdetail(list.get(i).getId());orderDaoImpl.deleteOrderdetail(list.get(i));} orderDaoImpl.deleteOrder(id);}public void deliverOrder(Order order) {// TODO Auto-generated method stuborderDaoImpl.saveOrder(order);}public void removeOrder(Order order) {// TODO Auto-generated method stuborderDaoImpl.saveOrder(order);}public void payOrder(Order order) {// TODO Auto-generated method stuborderDaoImpl.saveOrder(order);}public Order findOrderById(int id) {Order order = orderDaoImpl.findOrderById(id);return order;}public PageBean findAllOrderBypage(int pageSize, int page) {PageBean pageBean = new PageBean();String hql = "from Order";int allRows = orderDaoImpl.getAllRowCount(hql);int totalPage = pageBean.getTotalPages(pageSize, allRows);int currentPage = pageBean.getCurPage(page);int offset = pageBean.getCurrentPageOffset(pageSize, currentPage);List<?> list = orderDaoImpl.queryByPage(hql, offset, pageSize);pageBean.setList(list);pageBean.setAllRows(allRows);pageBean.setCurrentPage(currentPage);pageBean.setTotalPage(totalPage);return pageBean;}public PageBean userFindOrderBypage(int userid, int pageSize, int page) {PageBean pageBean = new PageBean();String hql = "from Order o where o.userid.id = " + userid;int allRows = orderDaoImpl.getAllRowCount(hql);int totalPage = pageBean.getTotalPages(pageSize, allRows);int currentPage = pageBean.getCurPage(page);int offset = pageBean.getCurrentPageOffset(pageSize, currentPage);List<?> list = orderDaoImpl.queryByPage(hql, offset, pageSize);pageBean.setList(list);pageBean.setAllRows(allRows);pageBean.setCurrentPage(currentPage);pageBean.setTotalPage(totalPage);return pageBean;}public PageBean findAllOrderDetailBypage(int orderid, int pageSize, int page) {PageBean pageBean = new PageBean();String hql = "from OrderDetail o where o.orderid.id = " + orderid;int allRows = orderDaoImpl.getAllRowCount(hql);int totalPage = pageBean.getTotalPages(pageSize, allRows);int currentPage = pageBean.getCurPage(page);int offset = pageBean.getCurrentPageOffset(pageSize, currentPage);List<?> list = orderDaoImpl.queryByPage(hql, offset, pageSize);pageBean.setList(list);pageBean.setAllRows(allRows);pageBean.setCurrentPage(currentPage);pageBean.setTotalPage(totalPage);return pageBean;}public void setOrderDaoImpl(OrderDaoImpl orderDaoImpl) {this.orderDaoImpl = orderDaoImpl;}public void saveOrder(Order order, List<OrderDetail> orderdetaillist) {int id = orderDaoImpl.saveOrder(order);//上一次被插入的 id order.setId(id);for(int i = 0 ; i < orderdetaillist.size(); i++){OrderDetail orderdetail = orderdetaillist.get(i);//設置訂單id orderdetail.setOrderid(order);orderDaoImpl.saveOrderdetail(orderdetail);}}} 保存訂單明細時,使用了剛剛生成的訂單id 作為外鍵,其他查詢什么的比如根據訂單id查詢訂單明細,就看具體方法吧

剩下的就是開始寫action 里,不過在這之前,先搞定幾個問題,一個是登陸是的驗證碼

我一開始使用的用不了,說是struts2的緣故,參考?http://blog.csdn.net/shiyuezhong/article/details/8246958

然后在管理員進行商品添加時,我需要獲得商品的分類列表,還有就是在用戶進行分類查詢時,我要根據用戶查到那個分類,找到所有的子孫類,然后分頁顯示,哈哈,查詢的代碼是上面說的分類查詢里

com.cl.shopping.service.impl.GoodServiceImpl.findGoodsBypage(int, int, List<GoodTypes>)

hql 語句的處理

<span style="white-space:pre"> </span>String hql = "from Goods g where g.goodtypes.id in (";for(int i = 0;i<lists.size();i++){hql = hql + lists.get(i).getId() + ",";}hql=hql.substring(0,(hql.length()-1));hql += ")";上面都有,查詢子分類使用了遞歸,對了先看一下我的分類數據庫怎么存的吧


實現的遞歸方法,一個顯示時很明顯,一個沒有做處理,其實是一樣,看代碼啦

//遍歷數據庫的type 無級菜單 遞歸 原數據 遍歷的父id 填充物 處理后的數據public static void parse(List<GoodTypes> list,int pid,String s,List<GoodTypes> lists){//對list進行一次循環遍歷for(int i = 0; i <list.size();i++){GoodTypes types = (GoodTypes) list.get(i);//如果該商品分類的父id == 當前遍歷的商品分類的id -->該商品分類是當前遍歷商品分類的下一級目錄if(types.getPid() == pid){ // System.out.println(s+types.getTypename());//把空格填充進去types.setTypename(s+types.getTypename());lists.add(types);//繼續找該商品分類的下一級目錄parse(list,types.getId(),s+"——",lists);}}}//這個只是分類,但是不加任何字符public static void parse(List<GoodTypes> list,int pid,List<GoodTypes> lists){//對list進行一次循環遍歷for(int i = 0; i <list.size();i++){GoodTypes types = (GoodTypes) list.get(i);//如果該商品分類的父id == 當前遍歷的商品分類的id -->該商品分類是當前遍歷商品分類的下一級目錄if(types.getPid() == pid){ // System.out.println(s+types.getTypename());//把空格填充進去types.setTypename(types.getTypename());lists.add(types);//繼續找該商品分類的下一級目錄parse(list,types.getId(),lists);}}}框架的架子配好后,直接在上面修改就好,看看spring文件注冊的bean,算了,全部貼上吧

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"xmlns:p="http://www.springframework.org/schema/p"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd"><!-- weblogic 數據源 參考 http://blog.csdn.net/jacklee_6297/article/details/5347439 --><!-- <bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> <property name="jndiName"> <value>mysql</value></property> </bean> --><!-- spring proxool --><bean id="dataSource"class="org.springframework.jdbc.datasource.DriverManagerDataSource"><property name="driverClassName"><value>org.logicalcobwebs.proxool.ProxoolDriver</value></property><property name="url"><value>proxool.shopping</value></property></bean> <!-- spring hibernate --><bean id="sessionFactory"class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"><property name="dataSource" ref="dataSource" /><!-- 注解類 bean 需要連數據庫的 --><property name="annotatedClasses"><list><value>com.cl.shopping.bean.User</value><value>com.cl.shopping.bean.UserRole</value><value>com.cl.shopping.bean.Goods</value><value>com.cl.shopping.bean.GoodTypes</value><value>com.cl.shopping.bean.GoodBoards</value><value>com.cl.shopping.bean.Order</value><value>com.cl.shopping.bean.OrderDetail</value></list></property><property name="hibernateProperties"><props><prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop><prop key="hibernate.show_sql">true</prop><prop key="hibernate.format_sql">true</prop><prop key="hibernate.hbm2ddl.auto">update</prop></props></property><!-- <property name="schemaUpdate"> <value>true</value> </property> --></bean><!-- DAO --><bean id="baseDao" class="com.cl.shopping.dao.BaseDao"><property name="sessionFactory" ref="sessionFactory"></property></bean><bean id="UserDaoImpl" class="com.cl.shopping.dao.impl.UserDaoImpl" parent="baseDao"></bean><bean id="GoodsDaoImpl" class="com.cl.shopping.dao.impl.GoodsDaoImpl" parent="baseDao"></bean><bean id="GoodBoardsDaoImpl" class="com.cl.shopping.dao.impl.GoodBoardsDaoImpl" parent="baseDao"></bean><bean id="OrderDaoImpl" class="com.cl.shopping.dao.impl.OrderDaoImpl" parent="baseDao"></bean><!-- Service --><bean id="UserServiceImpl" class="com.cl.shopping.service.impl.UserServiceImpl"><property name="userdao" ref="UserDaoImpl"></property></bean><bean id="GoodServiceImpl" class="com.cl.shopping.service.impl.GoodServiceImpl"><property name="goodsDaoImpl" ref="GoodsDaoImpl"></property></bean><bean id="GoodBoardsServiceImpl" class="com.cl.shopping.service.impl.GoodBoardsServiceImpl"><property name="goodBoardsDaoImpl" ref="GoodBoardsDaoImpl"></property></bean><bean id="OrderServiceImpl" class="com.cl.shopping.service.impl.OrderServiceImpl"><property name="orderDaoImpl" ref="OrderDaoImpl"></property></bean><!-- Action --><!-- 生成驗證碼 --><bean id="securityCodeImageAction" name="securityCodeImageAction" class="com.cl.shopping.action.SecurityCodeImageAction"></bean><!-- struts2 對應ben的 name 名 --><bean id="UserAction" name="userAction" class="com.cl.shopping.action.UserAction"><property name="userservice" ref="UserServiceImpl"></property> </bean><bean id="GoodsAction" name="goodsAction" class="com.cl.shopping.action.GoodsAction"><property name="goodService" ref="GoodServiceImpl"></property> </bean><bean id="GoodTypesAction" name="goodTypesAction" class="com.cl.shopping.action.GoodTypesAction"><property name="goodService" ref="GoodServiceImpl"></property> </bean><!-- 菜單的分類查詢 --><bean name="classificGoodsAction" class="com.cl.shopping.action.ClassificGoodsAction"><property name="goodsService" ref="GoodServiceImpl"></property></bean><!-- 添加商品:圖片上傳 --><bean name="addgoodsAction" class="com.cl.shopping.action.AddgoodsAction"><property name="goodsService" ref="GoodServiceImpl"></property></bean><!-- 用戶權限 --><bean name="roleAction" class="com.cl.shopping.action.RoleAction"><property name="userservice" ref="UserServiceImpl"></property> </bean><!-- 用戶查詢商品--><bean name="userGoodsAction" class="com.cl.shopping.action.UserGoodsAction"><property name="goodService" ref="GoodServiceImpl"></property><property name="goodBoardsService" ref="GoodBoardsServiceImpl"></property></bean><!-- 用戶的留言--><bean name="goodBoardsAction" class="com.cl.shopping.action.GoodBoardsAction"><property name="goodBoardsService" ref="GoodBoardsServiceImpl"></property></bean><!-- 購物車--><bean name="carAction" class="com.cl.shopping.action.CarAction"><property name="goodService" ref="GoodServiceImpl"></property></bean><!-- 訂單 --><bean name="orderAction" class="com.cl.shopping.action.OrderAction"><property name="orderService" ref="OrderServiceImpl"></property><property name="goodService" ref="GoodServiceImpl"></property></bean><!-- 訂單明細 --><bean name="orderDetailAction" class="com.cl.shopping.action.OrderDetailAction"><property name="orderService" ref="OrderServiceImpl"></property></bean><!-- 聲明式事物配置 --><!-- 配置事務管理器 --><bean id="transactionManager"class="org.springframework.orm.hibernate3.HibernateTransactionManager"><property name="sessionFactory"><ref bean="sessionFactory" /></property></bean><!-- 配置事務傳播特性 --><tx:advice id="TestAdvice" transaction-manager="transactionManager"><tx:attributes><tx:method name="save*" propagation="REQUIRED" /><tx:method name="del*" propagation="REQUIRED" /><tx:method name="update*" propagation="REQUIRED" /><tx:method name="add*" propagation="REQUIRED" /><tx:method name="find*" propagation="REQUIRED" /><tx:method name="get*" propagation="REQUIRED" /><tx:method name="apply*" propagation="REQUIRED" /><tx:method name="remove*" propagation="REQUIRED" /><tx:method name="insert*" propagation="REQUIRED" /></tx:attributes></tx:advice><!-- 配置參與事務的類 --><aop:config><!-- 正則表達式 com.cl.spring.service 下所有的類的所有的方法 --><aop:pointcut id="allTestServiceMethod"expression="execution(* com.cl.shopping.service.*.*(..))" /><aop:advisor pointcut-ref="allTestServiceMethod"advice-ref="TestAdvice" /></aop:config></beans>連接池的proxool.xml

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE proxool-config> <proxool-config><proxool><alias>shopping</alias><driver-url>jdbc:mysql://localhost:3306/nxf_shopping?characterEncoding=UTF8</driver-url><driver-class>com.mysql.jdbc.Driver</driver-class><driver-properties><property name="user" value="root"/><property name="password" value=""/></driver-properties><maximum-connection-count>30</maximum-connection-count><minimum-connection-count>10</minimum-connection-count><house-keeping-sleep-time>90000</house-keeping-sleep-time><prototype-count>5</prototype-count><house-keeping-test-sql>select CURRENT_DATE</house-keeping-test-sql></proxool> </proxool-config> struts 的配置文件主要是各種action

里面有些是跳轉,有些是重定向實現的,攔截器就把注釋去掉,把下一句配上就好了

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN""http://struts.apache.org/dtds/struts-2.3.dtd"><struts><constant name="struts.i18n.encoding" value="UTF-8"/> <!-- 定義權限控制攔截器 --><package name="struts-shop" extends="struts-default"><interceptors><interceptor name="login" class="com.cl.shopping.intecepeter.intecepeter"/><interceptor-stack name="myStack"><interceptor-ref name="login"/><interceptor-ref name="defaultStack"/></interceptor-stack></interceptors><!-- (這句是設置所有Action自動調用的攔截器堆棧) --><default-interceptor-ref name="myStack"/></package><constant name="struts.objectFactory" value="spring" /> <!-- <package name="default" namespace="/" extends="struts-shop"> --><package name="default" namespace="/" extends="struts-default"><!-- 定義全局處理結果 --><global-results><!-- 邏輯名為login的結果,映射到/login.jsp頁面 --><result name="login">/admin/login.jsp</result><result name="userlogin">/user/login.jsp</result></global-results><!-- user --><action name="checklogin" class="userAction" method="checklogin"><result name="admin">/admin/index.jsp</result><result name="user" >/user/index.jsp</result></action><!-- 退出登陸 --><action name="loginout" class="userAction" method="loginout"><result name="admin">admin/index.jsp</result><result name="user" >/user/index.jsp</result></action><!-- 管理員添加用戶之前,先獲取所有的權限信息 --><!-- 試試添加和修改使用同一個界面 ,發現修改玩用戶再點擊新增用戶時,是修改用戶界面,原因是action 里user是有值的,所以還是分開寫吧--><action name="preuseradd" class="roleAction"><result>usermanager/adduser.jsp</result></action><action name="preuseruptade" class="userAction" method="preuseradd"><result>usermanager/updateuser.jsp</result></action><action name="useradd" class="userAction" method="useradd"><result name="admin" type="redirectAction">userlist</result><result name="user">user/index.jsp</result></action><action name="userlist" class="userAction" method="userlist"><result>usermanager/userlist.jsp</result></action><action name="deluser" class="userAction" method="deluser"><result type="redirectAction">userlist</result></action><!-- role --><!-- 獲取所有的權限信息 --><action name="rolelist" class="roleAction"><result>usermanager/rolelist.jsp</result></action><action name="saverole" class="roleAction" method="saverole"><result type="redirectAction">rolelist</result></action><action name="delrole" class="roleAction" method="delrole"><result type="redirectAction">rolelist</result></action><!-- goods --><!-- 添加商品之前先獲取所有已有的商品分類 --><action name="pregoodsadd" class="goodTypesAction" method="goodtypesname"><result>/goods/addgoods.jsp</result></action><action name="goodslist" class="goodsAction" method="goodslist"><result>/goods/goodslist.jsp</result></action><!-- 新建一個action 處理商品 問題 圖片 --><action name="goodsadd" class="addgoodsAction" ><!-- <result type="redirectAction">goodslist</result> --><result type="redirectAction"><param name="actionName">goodslist</param> <param name="curPage">1</param> </result></action><action name="delgoods" class="goodsAction" method="delgoods"><result type="redirectAction">goodslist</result></action><action name="preupdategoods" class="goodsAction" method="preupdategoods"><result >/goods/updategoods.jsp</result></action><action name="updategoods" class="goodsAction" method="updategoods"><result type="redirectAction">goodslist</result></action><!-- goodtypes --><!-- 添加商品分類之前先獲取所有已有的商品分類 --><action name="pregoodtypesadd" class="goodTypesAction" method="goodtypesname"><result>/goods/addgoodtypes.jsp</result></action><!-- 添加分類完成后重定向到分類列表頁面--><action name="goodtypesadd" class="goodTypesAction" method="goodtypesadd"><result type="redirectAction"><param name="actionName">goodtypeslist</param> <param name="curPage">1</param> </result></action><!-- 商品的分類查詢 --><action name="usergoodsclassific" class="classificGoodsAction" method="usergoodsclassific"><result>user/classificgoodslist.jsp</result></action><action name="goodtypeslist" class="goodTypesAction" method="goodtypeslist"><result>/goods/goodtypeslist.jsp</result></action><action name="delgoodtypes" class="goodTypesAction" method="delgoodtypes"><result type="redirectAction">goodtypeslist</result></action><!-- 使用ajax異步更新,不需要返回值 --><action name="updategoodtypes" class="goodTypesAction" method="updategoodtypes"></action><!-- 管理員對商品的留言 查看與刪除 --><action name="goodboardslist" class="goodBoardsAction" method="goodboardslist"><result>/goods/goodboardslist.jsp</result></action><action name="delgoodboards" class="goodBoardsAction" method="delgoodboards"><result type="redirectAction">goodboardslist</result></action><!-- 用戶的操作 --><!-- 商品 --><action name="usergoodslist" class="userGoodsAction" method="usergoodslist"><result>/user/goodslist.jsp</result></action><!-- 用戶查看單個商品時可以查看其他用戶對于該商品的留言 --><action name="userviewgood" class="userGoodsAction" method="userviewgood"><result>/user/viewgood.jsp</result></action><!-- 用戶查詢商品 --><action name="usergoodlistbyname" class="userGoodsAction" method="usergoodlistbyname"><result>/user/goodslist.jsp</result></action><!-- 留言 --><!-- 用戶新增留言,跳回商品首頁好了,調到單個商品查詢頁面是需要數據的 --><action name="usergoodboardsadd" class="goodBoardsAction" method="usergoodboardsadd"><!-- <result type="redirectAction">usergoodslist</result> --><result type="redirectAction"><param name="actionName">userviewgood</param> <param name="goodid">${goodBoards.good.id}</param> </result></action><!-- 用戶只可以刪除自己的留言 ,在頁面里判斷當前登錄用戶的id與該條留言的id是否相同 --><action name="userdelgoodboards" class="goodBoardsAction" method="delgoodboards"><!-- <result type="redirectAction">usergoodslist</result> --><!-- 刪除留言后 重定向到單個商品查詢頁面 --><result type="redirectAction"><param name="actionName">userviewgood</param> <!-- ${goodBoards.good.id} 為 goodBoardsAction 里的數據 , goodid 是userGoodsAction里參數--> <param name="goodid">${goodBoards.good.id}</param> </result></action><!-- 購物車 --><action name="addcart" class="carAction" method="addcart"><result>/user/cart.jsp</result></action><action name="showcart" class="carAction" ><result>/user/cart.jsp</result></action><!-- 批量添加 購物車 --><action name="addcartlist" class="carAction" method="addcartlist"><result>/user/cart.jsp</result></action><action name="removeorclearcart" class="carAction" method="removeorclearcart"><result>/user/cart.jsp</result></action><action name="updatecart" class="carAction" method="updatecart"><result>/user/cart.jsp</result></action><!-- 訂單 --><!-- 管理員查詢所有的訂單 --><action name="orderlist" class="orderAction" method="orderlist"><result>/goods/orderlist.jsp</result></action><!-- 管理員發貨 --><action name="deliverorder" class="orderAction" method="deliverorder"><result type="redirectAction">orderlist</result></action> <!-- 用戶查詢自己的訂單 ,需要當前登錄用戶的id--><action name="userorderlist" class="orderAction" method="userorderlist"><result>user/orderlist.jsp</result></action><!-- 用戶查詢自己的訂單明細 ,一是訂單信息,二是訂單明細--><action name="uservieworder" class="orderDetailAction" method="uservieworder"><result>/user/vieworderdetail.jsp</result></action><!-- 從購物車提交訂單 ,不寫在商品查詢頁面直接購買了,用戶必須先加購物車在下訂單--><action name="ordersubmitformsession" class="orderAction" method="ordersubmitformsession"><result type="redirectAction">userorderlist</result></action><!-- 在單個商品詳情頁面直接購買單個商品 --><action name="orderinone" class="orderAction" method="orderinone"><result type="redirectAction">userorderlist</result></action> <!-- 刪除選中的訂單 --><action name="deleteorders" class="orderAction" method="deleteorders"><result type="redirectAction">userorderlist</result></action> <!-- 刪除單個訂單 --><action name="deleteorder" class="orderAction" method="deleteorder"><result type="redirectAction">userorderlist</result></action> <!-- 用戶付款 --><action name="userpayorder" class="orderAction" method="userpayorder"><result type="redirectAction">userorderlist</result></action> <!-- 用戶取消訂單 --><action name="usercancelorder" class="orderAction" method="usercancelorder"><result type="redirectAction">userorderlist</result></action><!-- 獲取驗證碼 --><action name="verifycode" class="securityCodeImageAction"><result name="success" type="stream"> <param name="contentType">image/jpeg</param> <param name="inputName">imageStream</param> <param name="bufferSize">2048</param> </result> </action></package></struts> 攔截器的主要代碼

// 取得請求相關的ActionContext實例 Map<String,Object> session = invocation.getInvocationContext().getSession();Object user = session.get("loginuser");// 如果沒有登陸,返回重新登陸 if(user != null ){invocation.invoke();}//獲取action名 此處action名為 struts2 文件里定義的名字 好機智用戶的操作都添加了user前綴String actionName = invocation.getInvocationContext().getName(); // System.err.println(actionName);//把驗證碼放行 checklogin也需要放行if("verifycode".equals(actionName) || "checklogin".equals(actionName)){invocation.invoke();}//管理員跳管理員登陸頁面,用戶條用戶登陸頁面if(actionName.indexOf("user") >= 0){ // System.err.println("userlogin");return "userlogin";}else{ // System.err.println("login");return "login";}其實代碼有很多要修改的地方,用戶的操作都加上user開始,這樣配攔截器就方便多了

最復雜的就是action 和jsp 里的邏輯了,需要各種邏輯判斷,其實說實話我現在一個都想不起來,只能慢慢回憶

就看著struts 文件回憶吧,攔截器說完了,全局的處理結果不需要說了,就是所有的 action 都可以使用,再就是用戶的登陸,沒有什么,看一下驗證碼是否正確,檢查一下數據庫是否存在,

/*用戶登陸*/public String checklogin(){//判斷驗證碼和用戶名以及密碼是否為空,放在js里判斷 errorif(session == null){session=(Map)ActionContext.getContext().getSession();}//Struts2中獲取request對象String s = session.get("VerifyCode").toString();if(!s.equalsIgnoreCase(verifyCode)){this.addFieldError("username", "VerifyCode is error");return "login";}if(checkUser(user)){if( loginuser.getRole().getRolename().equals("manager")){return "admin";}return "user";}addFieldError("username", "username or password is error");return "login";}/*查看數據庫是否存在該用戶*/public Boolean checkUser(User user){loginuser = userservice.findUserByName(user.getUsername());if(loginuser == null){return false;}session.put("loginuser", loginuser);return true;}登出嘛,由于當前登陸用戶的信息是存在session里的,清空就好了嘛 ?session.clear();

寫struts是發現這個框架好笨呀,有些action,尤其是用到同一個變量,需要從頁面取值或發送給頁面時,最好分開寫,要不會出現實體類被占用的情況,就像我在進行用戶修改時,第一次點總是空,后面的就好了,但是點其他的,有一定的幾率顯示上一個的信息,對這我也是無語了,不過你分開寫,多建幾個action就解決了

用戶增加之前需要獲取用戶的全部權限信息,用戶修改之前,除了要獲取數據庫里的權限信息已下拉菜單顯示,還需要獲得要修改的用戶的當前信息 看看jsp里struts提供的select

<!-- 使用這個時,value 里的值不可以是空。,如果為空,就會報錯,value里是選中的值 value="user1.role.id"這樣就沒問題啦 --><s:select list="rolelist" listValue="rolename" listKey="id" name="id" headerKey="0" headerValue="請選擇權限" value="user1.role.id" > </s:select>list里是要遍歷的數據,我是從數據庫獲取的。liatvalue是下拉菜單顯示的內容,顯示哪個屬性的內容,listkey是通過哪個屬性遍歷,headerkey是第一個顯示什么,headervalue是顯示的值,vuale里是默認顯示的數據

下面是用戶的增加,分兩個,一個是用戶注冊,一個是管理員新增用戶,再有就是管理員對所有的用戶的查詢以及刪除

接著是權限的的操作,管理員的:顯示所有的權限,新增權限,修改權限,刪除權限,沒有修改的是因為我是當管理員點擊要修改的信息時,顯示的信息變成輸入框,值還是原來的值,管理員直接在輸入框里修改,然后通過ajax傳到服務器,頁面我就沒有做刷新

jsp:

<span style="white-space:pre"> </span><s:iterator value="pageBean.list"><tr class="trtd"><td align="center"><font color="#DBDBDB"><s:property value="id"/></font></td><td align="center" class="edittext"><s:property value="pid"/></td><td align="center" class="edittext"><s:property value="typename"/></td><td align="center" class="edittext"><s:property value="note"/></td><td align="center"><!-- struts2 的支持真好,寫個id 就映射到goodtypes.id啦 --><a href="javascript:if( confirm('確實要刪除<--<s:property value="typename"/>-->嗎?'))location='delgoodtypes?id=<s:property value="id"/>' ">刪除</a>||編輯請直接點擊</td></tr></s:iterator>js:

$(function() { //獲取class為edittext的元素 $(".edittext").click(function() { var td = $(this); var txt = td.text(); var input = $("<input type='text'value='" + txt + "'/>"); td.html(input); input.click(function() { return false; }); //獲取焦點 input.trigger("focus"); //文本框失去焦點后提交內容,重新變為文本 input.blur(function() { var newtxt = $(this).val(); //判斷文本有沒有修改 if (newtxt != txt) { td.html(newtxt); //不需要使用數據庫的這段可以不需要 //ajax異步更改數據庫,加參數date是解決緩存問題 ,這里我要接收對象的全部屬性值,不會http://q.cnblogs.com/q/69488/var childs = td.parent().children();//去掉最后一個 “基本操作”var item_length = childs.length-1;var item_value = new Array(item_length);for(i = 0; i < item_length; i++){ // item_value[i] = childs[i].innerHTML;item_value[i] = childs[i].innerText;}// var url = "updategoodtypes?id=" + item_value[0]+"&pid="+item_value[1]+"&typename="+item_value[2]+"?e="+item_value[3]; //使用get()方法打開一個一般處理程序,data接受返回的參數(在一般處理程序中返回參數的方法 context.Response.Write("要返回的參數");) //數據庫的修改就在一般處理程序中完成 get 需要在服務器里編碼防止亂碼 // $.get(url, function(data) { if(data=="1") { alert("該類別已存在!"); td.html(txt); return; } // alert(data); td.html(newtxt); // }); //http://www.w3school.com.cn/jquery/ajax_post.asp$.post("updategoodtypes",{id:item_value[0], pid:item_value[1], typename:item_value[2], note:item_value[3] });} else { td.html(newtxt);} }); }); }); 使用post不需要修改編碼,如果是使用get方式,需要修改一下編碼

good.setGoodsname(new String(good.getGoodsname().getBytes("ISO-8859-1"),"UTF-8"));接著是商品的,商品添加之前,同樣的需要獲得商品的分類信息,顯示所有的商品,商品的添加時,我一開始就是全部放在一個action 里,可郁悶了,獲取的圖片的值是空,好無語呀,然后分開寫,就OK 了

public String execute(){//獲取服務器路徑 D:\ JavaWeb \ apache-tomcat-7.0.30 \ webapps \s sh2shoping \ uploadString path = ServletActionContext.getServletContext().getRealPath("/upload");//這個方式確實可以獲得 // HttpServletRequest request = ServletActionContext.getRequest(); // String roles = request.getParameter("goodtypes");//商品的分類還是獲取 null // goods.setGoodtypes();if(pic != null){String name = System.currentTimeMillis() + picFileName.substring(picFileName.lastIndexOf("."));File savefile = new File(path,name);try {FileUtils.copyFile(pic, savefile);goods.setGoodspic("upload/"+name);} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}else{//設置默認的圖片goods.setGoodspic("upload/0000.jpg");}goodsService.saveGoods(goods);return "success";}添加商品后重定向到商品查詢頁面,設置為顯示第一頁 <action name="goodsadd" class="addgoodsAction" ><!-- <result type="redirectAction">goodslist</result> --><result type="redirectAction"><param name="actionName">goodslist</param> <param name="curPage">1</param> </result></action>刪除商品,沒有什么好說的,更新商品,這里也是需要獲取商品分類的,我沒有再使用struts的,而是判斷,需要標簽

<%@taglib uri="/struts-tags" prefix="s" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <select name="goodtypes.id" ><s:iterator value="lists" var="g"><c:choose><c:when test="${g.typename == goods1.goodtypes.typename}"><option value="${g.id}" selected="selected"><s:property value="typename"/></option></c:when><c:otherwise> <option value="${g.id}" ><s:property value="typename"/></option></c:otherwise></c:choose> </s:iterator> </select>更新商品時如果沒有上傳新圖片,還要保存為原來的圖片,這個我是判斷上傳的圖片是需要預覽的
<!-- 如果沒有更新圖片,還是使用原來的 --><input type="hidden" name="goodspic" value="<s:property value="goods1.goodspic"/>">struts 自動轉型為對象的屬性了,上傳的預覽
jsp: <tr><td></td><td align="center" valign="middle" ><div><img id="preview" width="100px" height="100px" src="<s:property value="goods1.goodspic"/>" /></div></td></tr><tr><td align="center">商品圖片</td><td align="center"><!-- 如果沒有更新圖片,還是使用原來的 --><input type="hidden" name="goodspic" value="<s:property value="goods1.goodspic"/>"><input type="file" id="pic" name="pic" οnchange="javascript:setImagePreview();" /></td></tr>js: //下面用于圖片上傳預覽功能function setImagePreview(avalue) {var docObj=document.getElementById("pic");var imgObjPreview=document.getElementById("preview");var AllImgExt=".jpg|.jpeg|.gif|.bmp|.png|"//全部圖片格式類型var FileExt=docObj.value.substr(docObj.value.lastIndexOf(".")).toLowerCase(); //console.log(docObj.value.substr(docObj.value.indexOf(".") + 1));//console.log(FileExt);if(AllImgExt.indexOf(FileExt+"|")!=-1)//如果圖片文件,則進行圖片信息處理 {if(docObj.files &&docObj.files[0]){//火狐下,直接設img屬性imgObjPreview.style.display = 'block';imgObjPreview.style.width = '150px';imgObjPreview.style.height = '150px'; //imgObjPreview.src = docObj.files[0].getAsDataURL();//火狐7以上版本不能用上面的getAsDataURL()方式獲取,需要一下方式imgObjPreview.src = window.URL.createObjectURL(docObj.files[0]);}else{//IE下,使用濾鏡docObj.select();var imgSrc = document.selection.createRange().text;var localImagId = document.getElementById("localImag");//必須設置初始大小localImagId.style.width = "150px";localImagId.style.height = "150px";//圖片異常的捕捉,防止用戶修改后綴來偽造圖片try{localImagId.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale)";localImagId.filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = imgSrc;}catch(e){alert("您上傳的圖片格式不正確,請重新選擇!");return false;}imgObjPreview.style.display = 'none';document.selection.empty();}}else{alert("上傳'.jpg、.jpeg、.gif、.bmp、.png'格式的圖片,請重新選擇!");docObj.value="";return false;}return true;}然后是商品的分類,新增,刪除 ,更新(ajax異步更新)啦,查詢啦,然后是一個分類顯示商品,jsp: <a href="usergoodsclassific?typeid=1">服裝類</a>???<a href="usergoodsclassific?typeid=2">電子類</a>???<a href="usergoodsclassific?typeid=3">家具類</a>???<a href="usergoodsclassific?typeid=4">食品類</a>???action:

<span style="white-space:pre"> </span>public String usergoodsclassific(){List<GoodTypes> list = (List<GoodTypes>) goodsService.findAllGoodTypes();ArrayList<GoodTypes> lists = new ArrayList<GoodTypes>();TypeMenue.parse(list, typeid, lists);//把當前的父級id也添加到lists里GoodTypes goodtype = new GoodTypes();goodtype.setId(typeid);lists.add(goodtype);//根據列表里的id查詢商品pageBean = goodsService.findGoodsBypage(pagesize, curPage,lists);return "success";}接著就是留言了,管理員對所有的留言查看與刪除

哈哈,到用戶的操作啦

用戶查看商品,分類查看商品,點擊某個商品時,可以查看商品的詳細信息,還有其他用戶對該商品的留言,用戶可以自己留言,也可以刪除自己的留言,刪除自己的留言,我做了兩種,個人喜歡第二種(未注釋那個,判斷一下該用戶可以刪除,顯示刪除按鈕),而第一種是所有的留言后都有刪除按鈕,等用戶刪除時,再來判斷

<script type="text/javascript">function deleteboard(goodid,boardid,userid,loginuserid){if(loginuserid == userid){if( confirm("確實要刪除這條留言嗎?")){var uri = "userdelgoodboards?goodBoards.good.id=" + goodid + "&goodBoards.id=" + boardid;location.href = uri;}}else{alert("親,只可以刪除自己的留言哦");}}</script><fieldset><legend>商品留言列表</legend><div class="main" align="center"><table width="1000" cellpadding="1" border="0" cellspacing="1"><s:iterator value="pageBeanboard.list"><tr class="trtd"><td align="center"><s:property value="user.username"/></td><td align="center"><s:property value="user.role.rolename"/></td><td align="center"><s:property value="date"/></td><td align="center"><textarea name="goodsdesc" style="width:200px; color: #666464; height:50px; border:0; background-color:transparent;overflow : hidden ;resize:none " disabled="disabled"><s:property value="message"/></textarea></td><td align="center"><!-- struts2 的支持真好,寫個id 就映射到goodtypes.id啦 --><%-- <a href="javascript:void(0)" οnclick="deleteboard(<s:property value="good.id"/>,<s:property value="id"/>,<s:property value="user.id"/>,${loginuser.id})">刪除</a> --%><%-- ${loginuser.id} --%><!-- 用戶只可以刪除自己的留言, --><c:if test="${user.id == loginuser.id}"><a href="javascript:if( confirm('確實要刪除你的這條留言嗎?'))location='userdelgoodboards?goodBoards.good.id=<s:property value="good.id"/>&goodBoards.id=<s:property value="id"/>' ">刪除</a></c:if></tr></s:iterator></table>上面的代碼使用了?<fieldset> ,textarea也是處理過的,?textarea無邊框文本透明背景文本樣式, hidden:不顯示超過對象尺寸的內容 ? 取消chrome下textarea可拖動放大resize:none

點擊鏈接時,彈出confirm提示框

還做了一個搜索框,用戶可以根據商品名稱進行模糊查詢

用戶新增完留言后,要跳回原頁面,需要一個參數,就是商品的id,根據這個參數查詢商品的信息,用戶的留言信息,看看分頁的代碼,用戶刪除自己的留言情況是一樣的

<script type="text/javascript" src="js/selectall.js"></script><%@taglib uri="/struts-tags" prefix="s" %> <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><script type="text/javascript">function validate(){var page = document.getElementsByName("curPage")[0].value;var rui = "usergoodslist"; if(page > <s:property value="pageBean.totalPage"/>){alert("你輸入的頁數大于最大頁數,頁面將跳轉到首頁!");rui += "?curPage=1";window.document.location.href = rui ;}rui += "?curPage=" + page;window.document.location.href = rui ;return true;}function pagesize(){var pagesize = document.getElementsByName("pagesize")[0].value;var rui = "usergoodslist?curPage=1&pagesize=" + pagesize; window.document.location.href = rui ;}//把選中的加入購物車function selectAddCar(){var allCheckBoxs = document.getElementsByName("checkall"); var selectOrUnselect = false; var mycars = new Array();console.log(mycars.length); var j = 0;for(var i = 0; i < allCheckBoxs.length; i ++ ) { if(allCheckBoxs[i].checked){ console.log(allCheckBoxs[i].value);mycars[j++] = allCheckBoxs[i].value; selectOrUnselect=true; } }//判斷一下,有選擇才提交 if(selectOrUnselect){if(confirm("確實添加購物車嗎?")){var url = "addcartlist?goodsidlist=" + mycars;location.href = url;}}else{alert("請先選擇商品");}}</script> /分頁顯示的內容///<center> 共<font color="red"><s:property value="pageBean.totalPage"/></font>頁 ??共<font color="red"><s:property value="pageBean.allRows"/></font>條記錄 ??<s:if test="pageBean.currentPage == 1">首頁?上一頁</s:if><s:else><a href="usergoodslist?curPage=1">首頁</a><a href="usergoodslist?curPage=<s:property value="pageBean.currentPage - 1"/>">上一頁</a></s:else><s:if test="pageBean.currentPage != pageBean.totalPage"><a href="usergoodslist?curPage=<s:property value="pageBean.currentPage + 1"/>">下一頁</a><a href="usergoodslist?curPage=<s:property value="pageBean.totalPage"/>">尾頁</a></s:if><s:else>下一頁??尾頁</s:else> 每頁顯示<input type="text" size="2" name="pagesize" οnblur="pagesize();" value="<s:property value="pagesize"/>">條??跳轉至<input type="text" size="2" name="curPage" οnblur="validate();" value="<s:property value="curPage"/>">頁</center>可以上一頁,下一頁,跳轉到哪一頁,每頁顯示幾條記錄

然后就到訂單這邊了,先是購物車,這些信息我都是放在sesion 里的,購物車里的操作都是對session的操作,

添加到購物車,顯示購物車,使用全選按鈕批量添加到購物車,修改購物車里商品的數量信息,刪除里面某個商品,

package com.cl.shopping.action;import java.util.ArrayList; import java.util.List; import java.util.Map;import com.cl.shopping.bean.Cart; import com.cl.shopping.bean.Goods; import com.cl.shopping.service.GoodsService; import com.opensymphony.xwork2.ActionContext;public class CarAction {private GoodsService goodService;/*購物車是對session操作*/private Map session;//商品數量,需要從頁面取值private int count;//在carlist里的序號 需要從頁面取值private int number = -1;//總價private Float sum = 0f;//商品的idprivate int goodsid;List<Cart> cartList ;//批量添加購物車 需要從頁面取值List goodsidlist;public String execute(){return "success";}public String addcart(){//查出貨品的信息Goods good = goodService.findGoodsById(goodsid);if(session == null){session = ActionContext.getContext().getSession();}//未登錄時,不可以操作購物車if(session.get("loginuser")==null) {return "userlogin";}else {cartList = (List<Cart>)session.get("cartList");Cart cart = new Cart();cart.setGoodsid(goodsid);cart.setGoodsName(good.getGoodsname());cart.setBaseprice(good.getPrice());//數量、總價if(cartList==null) {//購物車為空cart.setCount(1);cart.setAmount(cart.getBaseprice() * cart.getCount());cartList = new ArrayList<Cart>();cartList.add(cart);}else {//flag標記是否在購物車里出現boolean flag = true;for(int i=0;i<cartList.size();i++) {Cart c = cartList.get(i);//判斷商品是否在購物車里if(c.getGoodsid() == goodsid) {flag = false;//購物車里商品數量 +1c.setCount(c.getCount() + 1);c.setAmount(c.getBaseprice() * c.getCount());}}if(flag) {cart.setCount(1);cart.setAmount(cart.getBaseprice() * cart.getCount());cartList.add(cart);}}for(int i=0;i<cartList.size();i++) {Cart c = cartList.get(i);sum = sum + c.getAmount();}session.put("sum", sum);session.put("cartList", cartList);return "success";}}//批量添加購物車public String addcartlist(){if(session == null){session = ActionContext.getContext().getSession();}//未登錄時,不可以操作購物車if(session.get("loginuser")==null) {return "userlogin";}else {cartList = (List<Cart>)session.get("cartList");//goodsidlist 頁面傳過來的數組,只能使用list接收,直接使用數組接收不到String[] goodsids = goodsidlist.get(0).toString().split(",");for(int i = 0; i <goodsids.length ; i++){//查出貨品的信息Goods good = goodService.findGoodsById(Integer.parseInt(goodsids[i]));Cart cart = new Cart();cart.setGoodsid(good.getId());cart.setGoodsName(good.getGoodsname());cart.setBaseprice(good.getPrice());//數量、總價if(cartList==null) {//購物車為空cart.setCount(1);cart.setAmount(cart.getBaseprice() * cart.getCount());cartList = new ArrayList<Cart>();cartList.add(cart);}else {//flag標記是否在購物車里出現boolean flag = true;for(int j=0;j<cartList.size();j++) {Cart c = cartList.get(j);//判斷商品是否在購物車里if(c.getGoodsid() == Integer.parseInt(goodsids[i])) {flag = false;//購物車里商品數量 +1c.setCount(c.getCount() + 1);c.setAmount(c.getBaseprice() * c.getCount());}}if(flag) {cart.setCount(1);cart.setAmount(cart.getBaseprice() * cart.getCount());cartList.add(cart);}}}for(int j=0;j<cartList.size();j++) {Cart c = cartList.get(j);sum = sum + c.getAmount();}session.put("sum", sum);session.put("cartList", cartList);return "success";}}@SuppressWarnings("unchecked")public String updatecart(){List<Cart> cartList = (List<Cart>)session.get("cartList");Cart cart = cartList.get(number - 1);cart.setCount(count);cart.setAmount(cart.getBaseprice() * cart.getCount());double sum = 0;for(int i=0;i<cartList.size();i++) {Cart c = cartList.get(i);sum = sum + c.getAmount();}session.put("sum", sum);session.put("cartList", cartList);return "success";}public String removeorclearcart(){if(number != -1) {//count 為 該商品在list里的 id(序號)List<Cart> cartList = (List<Cart>) session.get("cartList");//從購物車中刪除 , 下標是從0 開始,但是 頁面計數是從1 開始cartList.remove(number - 1);double sum = 0;for(int i=0;i<cartList.size();i++) {Cart c = cartList.get(i);sum = sum + c.getAmount();}session.put("sum", sum);session.put("cartList", cartList);}else {//清空session.remove("cartList");session.remove("sum");}return "success";}public Map getSession() {return session;}public void setSession(Map session) {this.session = session;}public int getCount() {return count;}public void setCount(int count) {this.count = count;}public int getNumber() {return number;}public void setNumber(int number) {this.number = number;}public int getGoodsid() {return goodsid;}public void setGoodsid(int goodsid) {this.goodsid = goodsid;}public void setGoodService(GoodsService goodService) {this.goodService = goodService;}public List getGoodsidlist() {return goodsidlist;}public void setGoodsidlist(List goodsidlist) {this.goodsidlist = goodsidlist;}} 需要發送到頁面,從頁面獲取的變量需要get/set方法,由spring注入的service,只要用set方法就好,看代碼啦

全選的實現

jsp頁面

<td align="center"><input type="checkbox" name="checkall" value="<s:property value="id"/>"> </td> <!-- 全選按鈕 --><tr><td colspan="8"><input type="button" id="allChecked" value="全選/取消全選" onClick="selectAllDels()">??????<input type="button" id="checkedAddCar" value="選中的加入購物車" onClick="selectAddCar()"></td></tr>
js: //全選function selectAllDels() { var allCheckBoxs = document.getElementsByName("checkall"); var desc = document.getElementById("allChecked"); var selectOrUnselect = false; for(var i = 0; i < allCheckBoxs.length; i ++ ) { if(allCheckBoxs[i].checked){ selectOrUnselect=true; break; } } if (selectOrUnselect) { //只要有一個被選中,本次點擊按鈕就是取消全選_allUnchecked(allCheckBoxs); }else { // 當前一個都沒有被選中,則全部選中_allchecked(allCheckBoxs); } } function _allchecked(allCheckBoxs){ for(var i = 0; i < allCheckBoxs.length; i ++ ) { allCheckBoxs[i].checked = true; } } function _allUnchecked(allCheckBoxs){ for(var i = 0; i < allCheckBoxs.length; i ++ ) { allCheckBoxs[i].checked = false; } } 訂單啦:管理員查詢所有的訂單,管理員發貨(就是新增一個發貨時間,把狀態改為已發貨)

用戶可以查看自己的訂單信息,點擊某個訂單時查看兩個信息,一個訂單的信息,一個商品訂單的明細,在訂單明細里可以點擊名字鏈接到商品單個查詢頁面,用戶可以在單個商品查詢頁面里(有詳情有留言那個)購買單個商品,也可以在購物車里選中部分提交訂單

用戶可以選中刪除單個訂單,也可以批量刪除自己的訂單,還有就是用戶的付款與取消訂單


界面很丑,自己畫的,沒有使用界面,后臺使用了


附件:源碼:http://download.csdn.net/detail/i_do_can/9405881



























總結

以上是生活随笔為你收集整理的ssh2项目之自己想的购物网站的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

色综合久久中文娱乐网 | 久久人人爽人人爽人人片ⅴ | 青青青手机频在线观看 | 欧美日韩一区二区三区自拍 | 国产真实夫妇视频 | 国产成人人人97超碰超爽8 | 一本大道久久东京热无码av | 国产成人综合在线女婷五月99播放 | 免费看男女做好爽好硬视频 | 亚洲一区二区三区播放 | 亚洲精品国偷拍自产在线麻豆 | 欧美日韩人成综合在线播放 | 成人无码视频免费播放 | 欧美zoozzooz性欧美 | 精品厕所偷拍各类美女tp嘘嘘 | 欧美人妻一区二区三区 | 牲欲强的熟妇农村老妇女 | 波多野42部无码喷潮在线 | 久久这里只有精品视频9 | 日本va欧美va欧美va精品 | 亚洲の无码国产の无码影院 | 亚洲 a v无 码免 费 成 人 a v | 老太婆性杂交欧美肥老太 | 日本精品人妻无码77777 天堂一区人妻无码 | 欧美成人午夜精品久久久 | 国产卡一卡二卡三 | 国色天香社区在线视频 | 国产无av码在线观看 | 桃花色综合影院 | 精品乱子伦一区二区三区 | 国产高清不卡无码视频 | 超碰97人人射妻 | 超碰97人人做人人爱少妇 | 亚洲无人区午夜福利码高清完整版 | 亚洲精品午夜国产va久久成人 | 欧美黑人性暴力猛交喷水 | 国产亚洲精品久久久久久久 | 天天拍夜夜添久久精品大 | 黑人玩弄人妻中文在线 | 99riav国产精品视频 | 国产在线一区二区三区四区五区 | 无码人妻丰满熟妇区毛片18 | 国产极品美女高潮无套在线观看 | 无码精品国产va在线观看dvd | 九九久久精品国产免费看小说 | 黄网在线观看免费网站 | 亚欧洲精品在线视频免费观看 | 中文无码精品a∨在线观看不卡 | 亚洲一区二区三区偷拍女厕 | 国产熟女一区二区三区四区五区 | 丰满妇女强制高潮18xxxx | 亚洲午夜久久久影院 | 日日天干夜夜狠狠爱 | 一本大道伊人av久久综合 | 国精品人妻无码一区二区三区蜜柚 | 日产国产精品亚洲系列 | 自拍偷自拍亚洲精品被多人伦好爽 | 亚欧洲精品在线视频免费观看 | 国内揄拍国内精品少妇国语 | 精品夜夜澡人妻无码av蜜桃 | 亚洲色在线无码国产精品不卡 | 99在线 | 亚洲 | 国产成人一区二区三区别 | 九月婷婷人人澡人人添人人爽 | 亚洲精品鲁一鲁一区二区三区 | 动漫av一区二区在线观看 | 午夜精品一区二区三区在线观看 | 亚洲精品鲁一鲁一区二区三区 | 午夜精品一区二区三区在线观看 | 亚洲日本一区二区三区在线 | 日日天日日夜日日摸 | 99久久精品午夜一区二区 | 久久99国产综合精品 | 国产精品99爱免费视频 | 天堂亚洲2017在线观看 | 特大黑人娇小亚洲女 | 装睡被陌生人摸出水好爽 | 无码人妻av免费一区二区三区 | 中国大陆精品视频xxxx | 伊人久久大香线蕉亚洲 | 精品人妻中文字幕有码在线 | 小鲜肉自慰网站xnxx | 久久精品视频在线看15 | 奇米影视7777久久精品 | 中文字幕人妻丝袜二区 | 亚洲精品一区三区三区在线观看 | 国产 精品 自在自线 | 国精产品一品二品国精品69xx | 国产乱人伦偷精品视频 | 久久午夜无码鲁丝片秋霞 | 三上悠亚人妻中文字幕在线 | 两性色午夜免费视频 | 男人扒开女人内裤强吻桶进去 | 国产在线精品一区二区三区直播 | 97久久国产亚洲精品超碰热 | 亚洲中文字幕va福利 | 亚洲日本一区二区三区在线 | 国产成人精品无码播放 | 亚洲国产精品毛片av不卡在线 | 夜夜影院未满十八勿进 | 熟女俱乐部五十路六十路av | 国产黄在线观看免费观看不卡 | 成人无码视频在线观看网站 | 377p欧洲日本亚洲大胆 | 少妇无码av无码专区在线观看 | 国产日产欧产精品精品app | 在线成人www免费观看视频 | 伊人久久婷婷五月综合97色 | 性色欲情网站iwww九文堂 | 国产一区二区三区精品视频 | 久久人人爽人人爽人人片ⅴ | 色五月丁香五月综合五月 | 精品无码av一区二区三区 | 欧美性色19p | 天天av天天av天天透 | 国产成人无码a区在线观看视频app | 97夜夜澡人人双人人人喊 | 亚洲狠狠色丁香婷婷综合 | 曰韩无码二三区中文字幕 | 中文字幕乱码中文乱码51精品 | 精品久久久久久亚洲精品 | 一本无码人妻在中文字幕免费 | 人人妻人人澡人人爽人人精品 | 亚洲精品中文字幕乱码 | 久久久久久久久888 | 高潮喷水的毛片 | 精品久久久无码中文字幕 | 在线成人www免费观看视频 | 亚洲 激情 小说 另类 欧美 | 日本va欧美va欧美va精品 | 亚洲日韩乱码中文无码蜜桃臀网站 | 日本饥渴人妻欲求不满 | 中文字幕人成乱码熟女app | 高清不卡一区二区三区 | 又紧又大又爽精品一区二区 | 97夜夜澡人人爽人人喊中国片 | 亚拍精品一区二区三区探花 | 正在播放老肥熟妇露脸 | 狠狠cao日日穞夜夜穞av | 激情亚洲一区国产精品 | 性生交片免费无码看人 | 亚洲精品无码人妻无码 | 波多野结衣av一区二区全免费观看 | 亚洲午夜无码久久 | 波多野结衣 黑人 | 免费人成网站视频在线观看 | 亚洲一区二区三区四区 | 亚洲啪av永久无码精品放毛片 | 少妇性俱乐部纵欲狂欢电影 | 国产麻豆精品精东影业av网站 | 亚洲精品一区二区三区在线观看 | 久久久无码中文字幕久... | 久久熟妇人妻午夜寂寞影院 | 免费无码一区二区三区蜜桃大 | 狠狠色噜噜狠狠狠7777奇米 | 国产亚洲精品久久久闺蜜 | 中文字幕人妻无码一区二区三区 | 任你躁国产自任一区二区三区 | 成人动漫在线观看 | 西西人体www44rt大胆高清 | 无码福利日韩神码福利片 | 牲欲强的熟妇农村老妇女视频 | 日日鲁鲁鲁夜夜爽爽狠狠 | 一二三四社区在线中文视频 | 人妻aⅴ无码一区二区三区 | 1000部夫妻午夜免费 | 欧美大屁股xxxxhd黑色 | 久久久国产一区二区三区 | 婷婷五月综合缴情在线视频 | 丰满诱人的人妻3 | 免费播放一区二区三区 | 99riav国产精品视频 | 大地资源中文第3页 | 久久亚洲精品成人无码 | 人妻有码中文字幕在线 | 国产真人无遮挡作爱免费视频 | 六月丁香婷婷色狠狠久久 | 最新国产乱人伦偷精品免费网站 | 国产精品丝袜黑色高跟鞋 | 成人av无码一区二区三区 | 一本色道婷婷久久欧美 | 伊人色综合久久天天小片 | 久久久久久久人妻无码中文字幕爆 | av无码电影一区二区三区 | 久久国内精品自在自线 | 精品乱子伦一区二区三区 | 亚洲人成影院在线无码按摩店 | 国产激情无码一区二区app | 人妻无码αv中文字幕久久琪琪布 | 欧美精品国产综合久久 | 国产av一区二区精品久久凹凸 | 亚洲欧洲中文日韩av乱码 | 成人试看120秒体验区 | 国产精品久久久一区二区三区 | 欧美freesex黑人又粗又大 | 一区二区传媒有限公司 | 久久国产精品萌白酱免费 | 欧美 丝袜 自拍 制服 另类 | 精品国产精品久久一区免费式 | 免费观看又污又黄的网站 | 色综合久久久无码中文字幕 | 久久久中文久久久无码 | 国产做国产爱免费视频 | www国产精品内射老师 | 亚洲成a人一区二区三区 | 高清无码午夜福利视频 | 国产人妻精品一区二区三区 | 男人的天堂2018无码 | 精品久久久久久人妻无码中文字幕 | 亚洲日韩乱码中文无码蜜桃臀网站 | 丝袜足控一区二区三区 | 国产两女互慰高潮视频在线观看 | 精品久久久中文字幕人妻 | 天堂一区人妻无码 | 真人与拘做受免费视频 | 人妻中文无码久热丝袜 | 99riav国产精品视频 | 久久久久亚洲精品中文字幕 | 麻豆精产国品 | 女人被男人爽到呻吟的视频 | 国产成人精品优优av | 沈阳熟女露脸对白视频 | 免费观看激色视频网站 | 国产无av码在线观看 | 久久精品成人欧美大片 | 免费中文字幕日韩欧美 | 亚洲欧美国产精品久久 | 精品国精品国产自在久国产87 | 67194成是人免费无码 | 亲嘴扒胸摸屁股激烈网站 | 日韩精品a片一区二区三区妖精 | 老头边吃奶边弄进去呻吟 | 日本又色又爽又黄的a片18禁 | 久久精品国产大片免费观看 | 久久这里只有精品视频9 | 欧美熟妇另类久久久久久多毛 | 十八禁视频网站在线观看 | 激情亚洲一区国产精品 | 粉嫩少妇内射浓精videos | 国产麻豆精品精东影业av网站 | 乌克兰少妇性做爰 | 成人av无码一区二区三区 | 国产综合色产在线精品 | 欧美性生交活xxxxxdddd | 人人澡人人妻人人爽人人蜜桃 | 国产偷自视频区视频 | av无码电影一区二区三区 | 又大又黄又粗又爽的免费视频 | 久久午夜夜伦鲁鲁片无码免费 | 国产人成高清在线视频99最全资源 | 成人欧美一区二区三区黑人免费 | 5858s亚洲色大成网站www | 日本熟妇人妻xxxxx人hd | 强辱丰满人妻hd中文字幕 | 久久精品国产99久久6动漫 | 无码av岛国片在线播放 | 亚洲熟妇色xxxxx欧美老妇 | 久久国产劲爆∧v内射 | 精品国产一区二区三区四区在线看 | 天堂一区人妻无码 | 风流少妇按摩来高潮 | 成在人线av无码免费 | 高清国产亚洲精品自在久久 | 人人妻人人藻人人爽欧美一区 | 国产内射老熟女aaaa | 黑人粗大猛烈进出高潮视频 | 无码人妻精品一区二区三区下载 | 欧美日韩色另类综合 | 国产超级va在线观看视频 | 日本乱偷人妻中文字幕 | 欧美 日韩 亚洲 在线 | 精品乱子伦一区二区三区 | 国产一区二区三区精品视频 | 午夜无码人妻av大片色欲 | 伊人久久大香线蕉亚洲 | 国产艳妇av在线观看果冻传媒 | 欧美日韩一区二区三区自拍 | 高潮毛片无遮挡高清免费视频 | 男人的天堂av网站 | 国语精品一区二区三区 | 人妻体内射精一区二区三四 | 国产成人精品一区二区在线小狼 | 99久久人妻精品免费二区 | 亚洲欧美国产精品专区久久 | 国产精品igao视频网 | 久久久久免费看成人影片 | 99国产精品白浆在线观看免费 | 在线精品亚洲一区二区 | 丁香花在线影院观看在线播放 | 国内少妇偷人精品视频免费 | 狠狠cao日日穞夜夜穞av | 丰满妇女强制高潮18xxxx | 日本熟妇大屁股人妻 | 久久97精品久久久久久久不卡 | 国产在热线精品视频 | 午夜不卡av免费 一本久久a久久精品vr综合 | 国产综合久久久久鬼色 | 精品国产乱码久久久久乱码 | 中文字幕无码免费久久99 | 国产又粗又硬又大爽黄老大爷视 | 色欲久久久天天天综合网精品 | 300部国产真实乱 | √8天堂资源地址中文在线 | 久久久无码中文字幕久... | 亚洲va中文字幕无码久久不卡 | 国内精品人妻无码久久久影院 | 国产精品无码一区二区桃花视频 | 国产精品久久久久久亚洲影视内衣 | 麻豆国产人妻欲求不满谁演的 | 蜜臀av在线播放 久久综合激激的五月天 | 无码国产乱人伦偷精品视频 | 久久久久se色偷偷亚洲精品av | 国产精品自产拍在线观看 | 国产明星裸体无码xxxx视频 | 亚洲第一网站男人都懂 | 蜜桃无码一区二区三区 | 亚洲中文字幕在线观看 | 男女猛烈xx00免费视频试看 | 在线成人www免费观看视频 | 国产欧美亚洲精品a | 精品成在人线av无码免费看 | 亚洲欧洲日本无在线码 | 午夜理论片yy44880影院 | 无遮无挡爽爽免费视频 | 精品国产一区二区三区四区在线看 | 亚洲欧美日韩综合久久久 | 色窝窝无码一区二区三区色欲 | 曰韩无码二三区中文字幕 | 国产97人人超碰caoprom | 波多野结衣一区二区三区av免费 | 精品国产一区二区三区av 性色 | 国产真实乱对白精彩久久 | 免费无码一区二区三区蜜桃大 | 成年美女黄网站色大免费视频 | 亚洲综合久久一区二区 | 亚洲欧洲日本综合aⅴ在线 | 鲁鲁鲁爽爽爽在线视频观看 | 亚洲国产欧美国产综合一区 | 欧美国产亚洲日韩在线二区 | 日本精品人妻无码77777 天堂一区人妻无码 | 激情五月综合色婷婷一区二区 | 精品国产青草久久久久福利 | 精品亚洲成av人在线观看 | 国产黄在线观看免费观看不卡 | 中文字幕人妻无码一区二区三区 | 人妻aⅴ无码一区二区三区 | 亚洲国产精品无码一区二区三区 | 国产综合色产在线精品 | 暴力强奷在线播放无码 | 午夜精品一区二区三区在线观看 | 男人和女人高潮免费网站 | 日本一卡二卡不卡视频查询 | 婷婷丁香五月天综合东京热 | 性欧美videos高清精品 | 中文字幕无码日韩欧毛 | 国产免费观看黄av片 | 亚洲国精产品一二二线 | 国产乱人无码伦av在线a | 欧美日韩一区二区三区自拍 | 激情内射亚州一区二区三区爱妻 | 国内精品人妻无码久久久影院 | 国内揄拍国内精品人妻 | 免费国产成人高清在线观看网站 | 激情内射日本一区二区三区 | 又色又爽又黄的美女裸体网站 | 色综合久久久无码中文字幕 | 亚洲精品国偷拍自产在线麻豆 | 亚洲色偷偷偷综合网 | 牲交欧美兽交欧美 | 人妻少妇精品无码专区动漫 | 亚洲欧美日韩综合久久久 | 精品午夜福利在线观看 | 日本肉体xxxx裸交 | 国产精品99爱免费视频 | 又大又硬又爽免费视频 | 香蕉久久久久久av成人 | 欧美一区二区三区视频在线观看 | 日韩 欧美 动漫 国产 制服 | 国产精品毛多多水多 | 无码精品国产va在线观看dvd | 青青草原综合久久大伊人精品 | 鲁大师影院在线观看 | 亚洲色www成人永久网址 | 特级做a爰片毛片免费69 | 亚洲 a v无 码免 费 成 人 a v | 性做久久久久久久免费看 | 捆绑白丝粉色jk震动捧喷白浆 | 亚洲精品一区三区三区在线观看 | 蜜桃视频韩日免费播放 | 亚洲精品中文字幕 | 国产精品福利视频导航 | 亚洲中文字幕无码一久久区 | 精品久久久无码人妻字幂 | 无码av最新清无码专区吞精 | 日日噜噜噜噜夜夜爽亚洲精品 | 久久综合久久自在自线精品自 | 麻花豆传媒剧国产免费mv在线 | 少妇无码av无码专区在线观看 | 国产香蕉尹人综合在线观看 | 国产精品国产自线拍免费软件 | 亚洲精品国偷拍自产在线观看蜜桃 | 水蜜桃色314在线观看 | 领导边摸边吃奶边做爽在线观看 | 国产亚洲tv在线观看 | 精品久久综合1区2区3区激情 | 强辱丰满人妻hd中文字幕 | 中文亚洲成a人片在线观看 | 青春草在线视频免费观看 | 青草青草久热国产精品 | 樱花草在线播放免费中文 | 亚洲一区二区三区播放 | 最新国产乱人伦偷精品免费网站 | 亚洲精品鲁一鲁一区二区三区 | 亚洲欧美日韩成人高清在线一区 | 男人的天堂2018无码 | 久热国产vs视频在线观看 | 秋霞成人午夜鲁丝一区二区三区 | 亚洲精品久久久久中文第一幕 | 亚洲成a人片在线观看无码 | 麻豆成人精品国产免费 | 欧美放荡的少妇 | 最近免费中文字幕中文高清百度 | 久久久久亚洲精品男人的天堂 | 欧美性色19p | 久久久av男人的天堂 | 亚洲а∨天堂久久精品2021 | 欧洲熟妇色 欧美 | 日韩av激情在线观看 | 亚洲精品国产第一综合99久久 | 亚洲七七久久桃花影院 | 亚洲综合色区中文字幕 | 一区二区三区高清视频一 | 天天拍夜夜添久久精品大 | 日韩欧美中文字幕公布 | 一本大道伊人av久久综合 | 在线精品国产一区二区三区 | 国产亚洲精品久久久ai换 | 亚欧洲精品在线视频免费观看 | 疯狂三人交性欧美 | 亚洲色大成网站www国产 | 少妇性荡欲午夜性开放视频剧场 | 色五月丁香五月综合五月 | 国产xxx69麻豆国语对白 | 国产成人精品三级麻豆 | 久久99精品久久久久久动态图 | 国产免费久久久久久无码 | 人人澡人人透人人爽 | 亚洲精品综合一区二区三区在线 | 欧美第一黄网免费网站 | 国产黑色丝袜在线播放 | 麻豆成人精品国产免费 | 精品水蜜桃久久久久久久 | 国产99久久精品一区二区 | 嫩b人妻精品一区二区三区 | 免费无码av一区二区 | 国产精品无码一区二区三区不卡 | 免费播放一区二区三区 | 丰满人妻精品国产99aⅴ | 国产在线精品一区二区高清不卡 | 大屁股大乳丰满人妻 | 亚洲成a人片在线观看无码3d | 激情爆乳一区二区三区 | 亚洲熟妇色xxxxx欧美老妇y | 青青青手机频在线观看 | 日韩在线不卡免费视频一区 | 少妇人妻偷人精品无码视频 | 欧美人与禽zoz0性伦交 | 国产内射老熟女aaaa | 精品无人区无码乱码毛片国产 | 亚洲一区二区观看播放 | 欧美乱妇无乱码大黄a片 | 欧洲vodafone精品性 | 国产又爽又黄又刺激的视频 | 国产精品国产三级国产专播 | 丝袜美腿亚洲一区二区 | 日本精品人妻无码免费大全 | 性生交片免费无码看人 | 国产在线一区二区三区四区五区 | aⅴ亚洲 日韩 色 图网站 播放 | 国产精品美女久久久久av爽李琼 | 中文字幕日韩精品一区二区三区 | 国産精品久久久久久久 | aⅴ在线视频男人的天堂 | 精品国产一区二区三区四区 | 精品人人妻人人澡人人爽人人 | 九月婷婷人人澡人人添人人爽 | 亚洲精品国偷拍自产在线观看蜜桃 | 人妻与老人中文字幕 | 性生交大片免费看女人按摩摩 | 一区二区三区乱码在线 | 欧洲 | 国产精品香蕉在线观看 | 欧美丰满少妇xxxx性 | 国产又爽又黄又刺激的视频 | 国产激情无码一区二区app | 2020久久超碰国产精品最新 | 国产精品视频免费播放 | 在线播放无码字幕亚洲 | 妺妺窝人体色www在线小说 | 亚洲精品欧美二区三区中文字幕 | 亚洲精品成a人在线观看 | 正在播放东北夫妻内射 | 国产麻豆精品一区二区三区v视界 | 夫妻免费无码v看片 | 天干天干啦夜天干天2017 | 亚洲欧美日韩国产精品一区二区 | 日韩在线不卡免费视频一区 | 国产精品久久久久9999小说 | 99er热精品视频 | 免费人成在线视频无码 | 日本大香伊一区二区三区 | 精品亚洲韩国一区二区三区 | 久久精品视频在线看15 | 在线视频网站www色 | 女人被男人躁得好爽免费视频 | 久久精品国产大片免费观看 | 午夜福利试看120秒体验区 | 国产激情一区二区三区 | 人人爽人人澡人人高潮 | 风流少妇按摩来高潮 | 内射老妇bbwx0c0ck | 国产极品美女高潮无套在线观看 | 女人被男人躁得好爽免费视频 | 国产va免费精品观看 | 亚洲日韩中文字幕在线播放 | 女人被爽到呻吟gif动态图视看 | 色综合久久88色综合天天 | 人人爽人人澡人人人妻 | 国内精品九九久久久精品 | 樱花草在线播放免费中文 | 午夜精品一区二区三区的区别 | 国产 精品 自在自线 | 亚洲色成人中文字幕网站 | 国内综合精品午夜久久资源 | 激情五月综合色婷婷一区二区 | 国产真人无遮挡作爱免费视频 | 一本大道伊人av久久综合 | 国产亚洲精品久久久久久久 | av无码久久久久不卡免费网站 | 99麻豆久久久国产精品免费 | 亚洲精品成人av在线 | 亚洲熟妇色xxxxx欧美老妇 | 自拍偷自拍亚洲精品被多人伦好爽 | 国内少妇偷人精品视频 | 国产色xx群视频射精 | 国产成人一区二区三区在线观看 | 最新版天堂资源中文官网 | 俄罗斯老熟妇色xxxx | 又粗又大又硬又长又爽 | 国产精品毛片一区二区 | 国产精品久久久久7777 | 国产精品久久久久久亚洲毛片 | 国产乱人无码伦av在线a | 一二三四社区在线中文视频 | 国内综合精品午夜久久资源 | 国精产品一区二区三区 | av无码电影一区二区三区 | 一个人看的视频www在线 | 亚洲人成人无码网www国产 | 亚洲国产一区二区三区在线观看 | 色狠狠av一区二区三区 | 国产成人亚洲综合无码 | 亚洲精品国产第一综合99久久 | 欧美国产日韩亚洲中文 | 久久久精品成人免费观看 | 天天摸天天碰天天添 | 男女爱爱好爽视频免费看 | 色一情一乱一伦一区二区三欧美 | 成人动漫在线观看 | 中文字幕 人妻熟女 | 国产成人无码a区在线观看视频app | 亚洲狠狠婷婷综合久久 | 欧美成人免费全部网站 | 亚洲阿v天堂在线 | 在线观看免费人成视频 | 一个人免费观看的www视频 | 国产性生大片免费观看性 | 荫蒂被男人添的好舒服爽免费视频 | 无码一区二区三区在线观看 | 中文字幕无码免费久久99 | 性生交大片免费看女人按摩摩 | 亚洲gv猛男gv无码男同 | 成人精品天堂一区二区三区 | 国产成人无码av一区二区 | 无码国产乱人伦偷精品视频 | 国产麻豆精品精东影业av网站 | 久久久精品人妻久久影视 | 久久久精品人妻久久影视 | 搡女人真爽免费视频大全 | 亚洲区小说区激情区图片区 | 中文字幕乱码中文乱码51精品 | 中文字幕无线码免费人妻 | 亚洲成a人片在线观看无码 | 在线观看免费人成视频 | 少妇性l交大片欧洲热妇乱xxx | 人妻熟女一区 | 久久久久久国产精品无码下载 | 亚洲一区二区观看播放 | 日本饥渴人妻欲求不满 | 久久久久久久人妻无码中文字幕爆 | 波多野结衣av在线观看 | 中文字幕av日韩精品一区二区 | 亚洲 日韩 欧美 成人 在线观看 | 丰满人妻翻云覆雨呻吟视频 | 玩弄少妇高潮ⅹxxxyw | 狂野欧美性猛交免费视频 | 国产亚洲精品久久久久久久 | 无码人中文字幕 | 亚洲成av人片天堂网无码】 | 国产97人人超碰caoprom | 人妻少妇精品无码专区动漫 | 97久久精品无码一区二区 | 久久99精品久久久久婷婷 | 精品成人av一区二区三区 | 国产猛烈高潮尖叫视频免费 | 97久久国产亚洲精品超碰热 | 欧美高清在线精品一区 | 日本护士毛茸茸高潮 | 日本大乳高潮视频在线观看 | 成人动漫在线观看 | 无码人妻出轨黑人中文字幕 | 亚洲午夜无码久久 | av无码久久久久不卡免费网站 | 少妇一晚三次一区二区三区 | 亚洲自偷精品视频自拍 | 午夜精品久久久久久久久 | 六月丁香婷婷色狠狠久久 | 正在播放老肥熟妇露脸 | 国产乱人偷精品人妻a片 | 亚洲理论电影在线观看 | 中文字幕 亚洲精品 第1页 | 波多野结衣乳巨码无在线观看 | 午夜精品久久久久久久久 | 国产国产精品人在线视 | 午夜精品久久久久久久 | 免费无码午夜福利片69 | 亚洲国产精品无码一区二区三区 | 内射后入在线观看一区 | 欧美人与禽猛交狂配 | 日日干夜夜干 | 亚洲а∨天堂久久精品2021 | 亚洲国产精品一区二区第一页 | 永久免费观看美女裸体的网站 | 国产高潮视频在线观看 | 国产黑色丝袜在线播放 | 欧美 日韩 亚洲 在线 | 免费中文字幕日韩欧美 | 欧美性生交活xxxxxdddd | 成人试看120秒体验区 | 樱花草在线播放免费中文 | 伊人久久大香线焦av综合影院 | 精品国产麻豆免费人成网站 | 久久天天躁狠狠躁夜夜免费观看 | 国产真实乱对白精彩久久 | 午夜不卡av免费 一本久久a久久精品vr综合 | 中国女人内谢69xxxxxa片 | 欧美xxxx黑人又粗又长 | 久久午夜夜伦鲁鲁片无码免费 | 欧美高清在线精品一区 | 国产人妻久久精品二区三区老狼 | 婷婷色婷婷开心五月四房播播 | 久久亚洲国产成人精品性色 | 国产亚洲欧美日韩亚洲中文色 | 亚洲大尺度无码无码专区 | 欧美日本免费一区二区三区 | 国产片av国语在线观看 | 久久国产精品_国产精品 | 成人亚洲精品久久久久软件 | 欧美放荡的少妇 | 欧美日韩在线亚洲综合国产人 | 成熟人妻av无码专区 | 国产在线精品一区二区高清不卡 | 99久久精品日本一区二区免费 | 国产乱人无码伦av在线a | 亚洲一区二区三区含羞草 | 国产人妻人伦精品 | 久久精品无码一区二区三区 | 国产成人久久精品流白浆 | 欧美zoozzooz性欧美 | 嫩b人妻精品一区二区三区 | 女人被爽到呻吟gif动态图视看 | 无码av最新清无码专区吞精 | 国产精品视频免费播放 | 国产猛烈高潮尖叫视频免费 | 无套内谢的新婚少妇国语播放 | 亚洲一区二区三区在线观看网站 | 国产内射爽爽大片视频社区在线 | 国产在线无码精品电影网 | 国产成人综合在线女婷五月99播放 | 国产麻豆精品精东影业av网站 | 久久人妻内射无码一区三区 | 成人欧美一区二区三区黑人免费 | 亚洲成a人片在线观看日本 | 久久无码人妻影院 | 国产一区二区三区四区五区加勒比 | 中文字幕亚洲情99在线 | 久久久久人妻一区精品色欧美 | 国产成人精品久久亚洲高清不卡 | 国产成人一区二区三区在线观看 | 亚拍精品一区二区三区探花 | 日产精品高潮呻吟av久久 | 久久久中文字幕日本无吗 | 国内精品一区二区三区不卡 | 久久综合久久自在自线精品自 | 88国产精品欧美一区二区三区 | 国产激情综合五月久久 | 久久国产劲爆∧v内射 | 亚洲人亚洲人成电影网站色 | 免费网站看v片在线18禁无码 | 国产精品嫩草久久久久 | 无套内谢老熟女 | 国产高清不卡无码视频 | 377p欧洲日本亚洲大胆 | 领导边摸边吃奶边做爽在线观看 | 国产精品久久国产三级国 | 特黄特色大片免费播放器图片 | 久久综合给久久狠狠97色 | 久久精品99久久香蕉国产色戒 | 18禁止看的免费污网站 | 亚洲综合伊人久久大杳蕉 | 九九久久精品国产免费看小说 | 性欧美大战久久久久久久 | 亚洲爆乳精品无码一区二区三区 | 蜜桃臀无码内射一区二区三区 | 午夜福利试看120秒体验区 | 日本www一道久久久免费榴莲 | 成熟人妻av无码专区 | 精品国产青草久久久久福利 | 日韩 欧美 动漫 国产 制服 | 精品一区二区不卡无码av | 又粗又大又硬又长又爽 | 亚洲精品中文字幕 | 青青青爽视频在线观看 | 国模大胆一区二区三区 | 亚洲国产av精品一区二区蜜芽 | 人人澡人摸人人添 | 在教室伦流澡到高潮hnp视频 | 亚洲中文字幕久久无码 | 日本精品人妻无码免费大全 | 强辱丰满人妻hd中文字幕 | 久久伊人色av天堂九九小黄鸭 | 亚洲阿v天堂在线 | 国产日产欧产精品精品app | 女人被男人躁得好爽免费视频 | 免费乱码人妻系列无码专区 | 丁香花在线影院观看在线播放 | 亚洲综合色区中文字幕 | 午夜精品一区二区三区在线观看 | 99精品国产综合久久久久五月天 | 1000部啪啪未满十八勿入下载 | 亚洲人成影院在线无码按摩店 | 婷婷五月综合缴情在线视频 | 亚洲毛片av日韩av无码 | 亚洲欧美日韩综合久久久 | 国产精品久久久久久亚洲影视内衣 | 欧美激情一区二区三区成人 | 亚洲gv猛男gv无码男同 | 亚洲日本一区二区三区在线 | 野外少妇愉情中文字幕 | 国产精品无码成人午夜电影 | 日韩av无码一区二区三区 | 高清不卡一区二区三区 | 性欧美熟妇videofreesex | 2020久久超碰国产精品最新 | 欧美丰满熟妇xxxx性ppx人交 | aⅴ在线视频男人的天堂 | 国产精品无码久久av | 激情五月综合色婷婷一区二区 | 欧美人与牲动交xxxx | 欧美熟妇另类久久久久久多毛 | 永久免费观看美女裸体的网站 | 影音先锋中文字幕无码 | 成人影院yy111111在线观看 | 男人的天堂av网站 | 欧美兽交xxxx×视频 | www国产亚洲精品久久网站 | 免费人成在线视频无码 | 初尝人妻少妇中文字幕 | 久久人人爽人人爽人人片av高清 | 激情内射日本一区二区三区 | 欧洲美熟女乱又伦 | 久久这里只有精品视频9 | 高潮喷水的毛片 | 欧美一区二区三区视频在线观看 | 国产精品久久久久久亚洲影视内衣 | 无码免费一区二区三区 | 老太婆性杂交欧美肥老太 | 中文字幕精品av一区二区五区 | 国产精品亚洲一区二区三区喷水 | 久久久久亚洲精品男人的天堂 | 国产精品久久国产三级国 | 人人爽人人澡人人人妻 | 内射爽无广熟女亚洲 | 国产偷抇久久精品a片69 | 国产美女精品一区二区三区 | 女人被爽到呻吟gif动态图视看 | 亚洲七七久久桃花影院 | 久久久久成人精品免费播放动漫 | 老子影院午夜伦不卡 | 国产精品久久久久影院嫩草 | 日本丰满护士爆乳xxxx | 天堂在线观看www | 色诱久久久久综合网ywww | 99久久99久久免费精品蜜桃 | 5858s亚洲色大成网站www | 成熟人妻av无码专区 | 乱码av麻豆丝袜熟女系列 | 亚洲人成人无码网www国产 | 国产无套内射久久久国产 | 无码人妻av免费一区二区三区 | 日本高清一区免费中文视频 | 日韩人妻无码中文字幕视频 | 国产欧美精品一区二区三区 | 国产无套粉嫩白浆在线 | 亚洲国产精品久久久久久 | 亚洲精品无码国产 | 婷婷综合久久中文字幕蜜桃三电影 | 亚洲欧美精品伊人久久 | 久久综合久久自在自线精品自 | 欧美日韩色另类综合 | 久久午夜无码鲁丝片午夜精品 | 无码中文字幕色专区 | 国产香蕉尹人综合在线观看 | 国产一区二区三区四区五区加勒比 | 中文字幕无码免费久久9一区9 | 国产亚洲精品久久久久久久 | 久久久成人毛片无码 | 成人影院yy111111在线观看 | 无码人妻黑人中文字幕 | 国精产品一品二品国精品69xx | 任你躁在线精品免费 | 97久久国产亚洲精品超碰热 | 国产欧美精品一区二区三区 | 亚洲国产高清在线观看视频 | 亚洲精品国偷拍自产在线观看蜜桃 | 无码人妻久久一区二区三区不卡 | 久久精品99久久香蕉国产色戒 | 无码免费一区二区三区 | 色综合久久久无码中文字幕 | 国产特级毛片aaaaaa高潮流水 | 亚洲日本一区二区三区在线 | 日产精品99久久久久久 | 中文字幕乱码中文乱码51精品 | 麻豆国产97在线 | 欧洲 | 久久亚洲日韩精品一区二区三区 | 精品国产精品久久一区免费式 | 亚洲精品久久久久久一区二区 | 九九综合va免费看 | √天堂资源地址中文在线 | 俺去俺来也在线www色官网 | 熟妇人妻激情偷爽文 | 麻豆成人精品国产免费 | 精品久久久无码人妻字幂 | 无码福利日韩神码福利片 | 中文字幕中文有码在线 | 精品国产一区二区三区四区在线看 | 亚洲熟女一区二区三区 | 久久午夜夜伦鲁鲁片无码免费 | 国产两女互慰高潮视频在线观看 | 人人爽人人爽人人片av亚洲 | 亚洲中文字幕成人无码 | 久久99精品国产麻豆蜜芽 | 天天躁日日躁狠狠躁免费麻豆 | 成 人 网 站国产免费观看 | 国精品人妻无码一区二区三区蜜柚 | 国产精品对白交换视频 | 老熟妇乱子伦牲交视频 | 国产xxx69麻豆国语对白 | 国产精品美女久久久 | 亚洲无人区一区二区三区 | 在线播放无码字幕亚洲 | 网友自拍区视频精品 | 无码av最新清无码专区吞精 | 中文字幕乱码中文乱码51精品 | 无码人妻精品一区二区三区下载 | 精品无人区无码乱码毛片国产 | 亲嘴扒胸摸屁股激烈网站 | 伊人久久大香线蕉午夜 | 久久久久99精品国产片 | 亚洲天堂2017无码中文 | 天天拍夜夜添久久精品 | 丰满人妻翻云覆雨呻吟视频 | 国产亚洲精品久久久ai换 | 日日摸天天摸爽爽狠狠97 | www国产精品内射老师 | 一二三四社区在线中文视频 | 福利一区二区三区视频在线观看 | 永久黄网站色视频免费直播 | 鲁大师影院在线观看 | yw尤物av无码国产在线观看 | 国产精品无码一区二区桃花视频 | 5858s亚洲色大成网站www | 免费人成在线观看网站 | 日日摸夜夜摸狠狠摸婷婷 | 麻豆果冻传媒2021精品传媒一区下载 | 97久久精品无码一区二区 | 性生交大片免费看l | 国产成人精品视频ⅴa片软件竹菊 | 国产激情艳情在线看视频 | 亚洲一区二区三区播放 | 亚洲色欲久久久综合网东京热 | 在教室伦流澡到高潮hnp视频 | 久久久久se色偷偷亚洲精品av | 蜜桃视频插满18在线观看 | 久久亚洲精品成人无码 | 国产福利视频一区二区 | 日韩成人一区二区三区在线观看 | 亚洲国产高清在线观看视频 | 欧美猛少妇色xxxxx | 天下第一社区视频www日本 | 国内少妇偷人精品视频免费 | 十八禁真人啪啪免费网站 | 曰韩无码二三区中文字幕 | 一区二区三区高清视频一 | 久久综合激激的五月天 | 国产免费久久精品国产传媒 | 东京热一精品无码av | 日韩精品久久久肉伦网站 | 国产成人亚洲综合无码 | 亚洲熟妇色xxxxx欧美老妇y | 成熟女人特级毛片www免费 | 人人澡人人透人人爽 | 精品久久8x国产免费观看 | √天堂中文官网8在线 | v一区无码内射国产 | 性欧美牲交在线视频 | 久久精品国产一区二区三区肥胖 | 国产电影无码午夜在线播放 | 国内揄拍国内精品少妇国语 | 377p欧洲日本亚洲大胆 | 曰韩少妇内射免费播放 | 初尝人妻少妇中文字幕 | 天下第一社区视频www日本 | 精品欧美一区二区三区久久久 | 亚洲日本一区二区三区在线 | 久久国产36精品色熟妇 | 国产午夜精品一区二区三区嫩草 | 色婷婷综合中文久久一本 | 国产综合在线观看 | 国产精品久久久久久亚洲影视内衣 | 久久亚洲精品成人无码 | 色综合天天综合狠狠爱 | 国产精品自产拍在线观看 | 日韩av无码一区二区三区不卡 | 在线天堂新版最新版在线8 | 国产手机在线αⅴ片无码观看 | 国产69精品久久久久app下载 | 欧洲极品少妇 | 国产精品第一区揄拍无码 | 色窝窝无码一区二区三区色欲 | 在线亚洲高清揄拍自拍一品区 | 国产色视频一区二区三区 | 无码人中文字幕 | 狠狠色噜噜狠狠狠7777奇米 | 精品国产精品久久一区免费式 | 精品乱码久久久久久久 | 欧美自拍另类欧美综合图片区 | 丝袜 中出 制服 人妻 美腿 | 一本加勒比波多野结衣 | 国产九九九九九九九a片 | 少妇无码av无码专区在线观看 | 成 人 网 站国产免费观看 | 无码人妻丰满熟妇区毛片18 | yw尤物av无码国产在线观看 | 麻豆国产人妻欲求不满 | 成年美女黄网站色大免费全看 | 国产精品久久久久影院嫩草 | 亚洲精品国产品国语在线观看 | 国产办公室秘书无码精品99 | yw尤物av无码国产在线观看 | 67194成是人免费无码 | 亚洲欧洲日本无在线码 | 国产手机在线αⅴ片无码观看 | 国产精品久久久久9999小说 | 天堂亚洲免费视频 | 午夜精品一区二区三区在线观看 | 国产午夜亚洲精品不卡 | 国产精品久久久久久久9999 | 国产av一区二区三区最新精品 | 精品厕所偷拍各类美女tp嘘嘘 | 精品无人国产偷自产在线 | 久久午夜无码鲁丝片秋霞 | 99久久久国产精品无码免费 | 欧美freesex黑人又粗又大 | 久久精品国产一区二区三区肥胖 | 亚洲一区二区三区香蕉 | 亚洲欧洲中文日韩av乱码 | 精品国偷自产在线 | 欧美成人高清在线播放 | 成人一在线视频日韩国产 | 女人被男人躁得好爽免费视频 | 天下第一社区视频www日本 | 国产麻豆精品一区二区三区v视界 | 亚洲精品中文字幕 | 亚洲精品综合一区二区三区在线 | 亲嘴扒胸摸屁股激烈网站 | 熟女少妇在线视频播放 | 午夜福利电影 | 国产成人精品视频ⅴa片软件竹菊 | 少妇太爽了在线观看 | 国产免费久久精品国产传媒 | 久久综合给合久久狠狠狠97色 | 亚无码乱人伦一区二区 | 亚洲精品中文字幕久久久久 | 色婷婷av一区二区三区之红樱桃 | 日韩成人一区二区三区在线观看 | 亚洲精品一区二区三区四区五区 | 成人女人看片免费视频放人 | 欧美精品免费观看二区 | 免费观看又污又黄的网站 | 日韩av激情在线观看 | 亚洲日本一区二区三区在线 | 成人性做爰aaa片免费看不忠 | 大屁股大乳丰满人妻 | 欧美自拍另类欧美综合图片区 | 欧美老妇交乱视频在线观看 | 欧美野外疯狂做受xxxx高潮 | 欧美熟妇另类久久久久久不卡 | 草草网站影院白丝内射 | 久久亚洲日韩精品一区二区三区 | 国产精品久久久久无码av色戒 | 伊人色综合久久天天小片 | 国内精品九九久久久精品 | 妺妺窝人体色www在线小说 | 色欲av亚洲一区无码少妇 | 99精品无人区乱码1区2区3区 | 天堂亚洲2017在线观看 | 在线视频网站www色 | 午夜精品久久久久久久 | 在线欧美精品一区二区三区 | 国产成人无码av在线影院 | 亚洲中文字幕乱码av波多ji | 人妻天天爽夜夜爽一区二区 | av无码电影一区二区三区 | 精品厕所偷拍各类美女tp嘘嘘 | 亚洲国产欧美国产综合一区 | 粉嫩少妇内射浓精videos | 亚洲一区av无码专区在线观看 | 国产精品久久久 | 日韩人妻少妇一区二区三区 | 国产精品-区区久久久狼 | 久久久亚洲欧洲日产国码αv | 激情爆乳一区二区三区 | 亚洲爆乳无码专区 | 亚洲无人区一区二区三区 | 无码一区二区三区在线 | 成人精品视频一区二区三区尤物 | 全球成人中文在线 | 乱人伦人妻中文字幕无码 | 国产成人综合美国十次 | 女人被爽到呻吟gif动态图视看 | 荫蒂添的好舒服视频囗交 | 国产超碰人人爽人人做人人添 | 国产亚洲精品久久久ai换 | 国产高清av在线播放 | 欧洲欧美人成视频在线 | 曰韩无码二三区中文字幕 | 鲁鲁鲁爽爽爽在线视频观看 | 亚洲日韩乱码中文无码蜜桃臀网站 | 亚洲成av人影院在线观看 | 亚洲乱码国产乱码精品精 | 大屁股大乳丰满人妻 | 无码一区二区三区在线 | 免费无码肉片在线观看 | 国产成人无码av一区二区 | 国产色在线 | 国产 | 人妻体内射精一区二区三四 | 日本www一道久久久免费榴莲 | 香蕉久久久久久av成人 | 欧美日韩久久久精品a片 | 美女张开腿让人桶 | 青青青手机频在线观看 | 人妻尝试又大又粗久久 | 中文字幕无码人妻少妇免费 | 国产超碰人人爽人人做人人添 | 99久久精品午夜一区二区 | 久9re热视频这里只有精品 | 青草青草久热国产精品 | 无码人妻丰满熟妇区五十路百度 | 天天av天天av天天透 | 乱中年女人伦av三区 | 精品人妻人人做人人爽 | 久久精品丝袜高跟鞋 | 玩弄人妻少妇500系列视频 | 色综合久久中文娱乐网 | 激情内射日本一区二区三区 | 亚洲精品久久久久avwww潮水 | 亚洲精品久久久久avwww潮水 | a片在线免费观看 | 国内精品久久久久久中文字幕 | 亚洲aⅴ无码成人网站国产app | 丰满少妇高潮惨叫视频 | 99视频精品全部免费免费观看 | 色婷婷欧美在线播放内射 | 国内精品人妻无码久久久影院蜜桃 | 又色又爽又黄的美女裸体网站 | 99久久久国产精品无码免费 | 精品欧美一区二区三区久久久 | 亚洲gv猛男gv无码男同 | 性史性农村dvd毛片 | 在线а√天堂中文官网 | 亚洲精品www久久久 | 女人被男人躁得好爽免费视频 | 免费观看又污又黄的网站 | 国产肉丝袜在线观看 | 精品人妻人人做人人爽 | 老熟妇仑乱视频一区二区 | 麻豆蜜桃av蜜臀av色欲av | 日日夜夜撸啊撸 | 日日天日日夜日日摸 | 大色综合色综合网站 | 久久精品国产99精品亚洲 | 国产成人久久精品流白浆 | 久热国产vs视频在线观看 | 久久国产自偷自偷免费一区调 | 成人免费视频一区二区 | 亚洲国产精品久久人人爱 | 老熟妇仑乱视频一区二区 | 高清无码午夜福利视频 | 人妻体内射精一区二区三四 | 天堂亚洲免费视频 | 熟妇女人妻丰满少妇中文字幕 | 久在线观看福利视频 | 中文字幕 人妻熟女 | 中文字幕无码日韩欧毛 | 国内精品九九久久久精品 | 久久精品中文闷骚内射 | 亚洲综合色区中文字幕 | 国产成人综合在线女婷五月99播放 | 狠狠噜狠狠狠狠丁香五月 | 精品aⅴ一区二区三区 | 亚洲乱码日产精品bd | 青草视频在线播放 | 国产成人综合在线女婷五月99播放 | 亚洲综合在线一区二区三区 | 在线欧美精品一区二区三区 | 日本精品久久久久中文字幕 | 免费国产成人高清在线观看网站 | 久久99精品久久久久久 | 精品国产福利一区二区 | 乌克兰少妇xxxx做受 | 99久久久国产精品无码免费 | 国产精品久久国产三级国 | 精品欧洲av无码一区二区三区 | 激情亚洲一区国产精品 | 久久久中文字幕日本无吗 | 精品国产一区二区三区四区 | 国产真实夫妇视频 | 国产成人av免费观看 | 亚洲精品久久久久久一区二区 | 久久国内精品自在自线 | 波多野结衣乳巨码无在线观看 | av无码久久久久不卡免费网站 | 精品一区二区不卡无码av | 亚洲综合在线一区二区三区 | 国产色精品久久人妻 | 黑人巨大精品欧美一区二区 | 水蜜桃色314在线观看 | 亚洲小说图区综合在线 | 熟女少妇在线视频播放 | 99久久久无码国产aaa精品 | 亚洲国产成人a精品不卡在线 | 精品国产av色一区二区深夜久久 | 久久精品无码一区二区三区 | √8天堂资源地址中文在线 | 日韩在线不卡免费视频一区 | 亚洲熟妇色xxxxx欧美老妇y | 无码人妻少妇伦在线电影 | 曰韩无码二三区中文字幕 | 一本大道久久东京热无码av | 7777奇米四色成人眼影 | 无码av免费一区二区三区试看 | 蜜臀av在线观看 在线欧美精品一区二区三区 | 东北女人啪啪对白 | 无码免费一区二区三区 | 男女超爽视频免费播放 | 国产福利视频一区二区 | 中文字幕av无码一区二区三区电影 | 性色欲情网站iwww九文堂 | 精品人妻人人做人人爽夜夜爽 | 国产真人无遮挡作爱免费视频 | 国产精品亚洲lv粉色 | 免费人成在线视频无码 | 国产午夜亚洲精品不卡 | www一区二区www免费 | 亚洲va中文字幕无码久久不卡 | 捆绑白丝粉色jk震动捧喷白浆 | 国产疯狂伦交大片 | 精品无码成人片一区二区98 | 俺去俺来也www色官网 | 亚洲国产精品无码久久久久高潮 | 精品一区二区三区无码免费视频 | 激情综合激情五月俺也去 | 国产精品99爱免费视频 | 18禁黄网站男男禁片免费观看 | 99精品视频在线观看免费 | 国产av一区二区三区最新精品 | 一区二区三区高清视频一 | 18无码粉嫩小泬无套在线观看 | 欧美激情一区二区三区成人 | 亚洲日韩一区二区三区 | 男女爱爱好爽视频免费看 | 亚洲综合久久一区二区 | 2020久久超碰国产精品最新 | 国产精品高潮呻吟av久久 | 免费人成网站视频在线观看 | 国产另类ts人妖一区二区 | 亚洲精品国产精品乱码视色 | 免费看男女做好爽好硬视频 | 亚洲精品成人av在线 | 国产偷自视频区视频 | 久久精品国产大片免费观看 | 久久精品国产亚洲精品 | 激情五月综合色婷婷一区二区 | 波多野结衣 黑人 | 欧美国产亚洲日韩在线二区 | 67194成是人免费无码 | 国产人妻大战黑人第1集 | 国产亚洲精品久久久久久久 | 国产人妻久久精品二区三区老狼 | 国色天香社区在线视频 | 香港三级日本三级妇三级 | 国产精品久久国产精品99 | 成熟妇人a片免费看网站 | 亚洲色偷偷偷综合网 | 九月婷婷人人澡人人添人人爽 | 久久 国产 尿 小便 嘘嘘 | 在线视频网站www色 | 日韩精品无码一区二区中文字幕 | 精品人妻中文字幕有码在线 | 暴力强奷在线播放无码 | 无码国产激情在线观看 | 色婷婷综合激情综在线播放 | 国产精品久久久一区二区三区 | 国产电影无码午夜在线播放 | 亚洲国产欧美国产综合一区 | 中文字幕人妻无码一夲道 | 国精品人妻无码一区二区三区蜜柚 | 中文字幕av无码一区二区三区电影 | 97夜夜澡人人双人人人喊 | 亚洲天堂2017无码 | 免费无码午夜福利片69 | 久久精品成人欧美大片 | 伊人色综合久久天天小片 | 四虎4hu永久免费 | 大色综合色综合网站 | 夜夜影院未满十八勿进 | 亚洲日韩一区二区 | 亚洲日本在线电影 | 给我免费的视频在线观看 | 国产一精品一av一免费 | 国产精品亚洲一区二区三区喷水 | 日韩精品乱码av一区二区 | 亚洲色偷偷偷综合网 | 久久人人爽人人爽人人片av高清 | 亚洲 激情 小说 另类 欧美 | 国内精品九九久久久精品 | 成人试看120秒体验区 | 成人亚洲精品久久久久软件 | 麻豆国产人妻欲求不满谁演的 | 国产午夜无码精品免费看 | 奇米影视888欧美在线观看 | 精品国产一区二区三区四区 | 内射老妇bbwx0c0ck | 精品偷拍一区二区三区在线看 | 欧美日韩色另类综合 | 岛国片人妻三上悠亚 | 国产亚洲美女精品久久久2020 | 欧美丰满老熟妇xxxxx性 | 天干天干啦夜天干天2017 | 自拍偷自拍亚洲精品10p | 永久免费观看美女裸体的网站 | 任你躁国产自任一区二区三区 | 日本熟妇乱子伦xxxx | 东京无码熟妇人妻av在线网址 | 国产极品视觉盛宴 | 亚洲精品中文字幕 | 无码人妻精品一区二区三区不卡 | 日韩少妇白浆无码系列 | 亚洲七七久久桃花影院 | 疯狂三人交性欧美 | 日日摸天天摸爽爽狠狠97 | 久久久中文久久久无码 | 国语自产偷拍精品视频偷 | 久久久久久久女国产乱让韩 | 久久精品一区二区三区四区 | 一本色道婷婷久久欧美 | 好男人www社区 | 欧美精品无码一区二区三区 | 野狼第一精品社区 | 无码av岛国片在线播放 | 日本一卡2卡3卡四卡精品网站 | 色综合久久久久综合一本到桃花网 | 亚洲娇小与黑人巨大交 | 人人妻人人澡人人爽人人精品浪潮 | 少妇性l交大片欧洲热妇乱xxx | 精品久久久无码人妻字幂 | 两性色午夜免费视频 | 亚洲第一无码av无码专区 | 国产精品毛片一区二区 | 亚洲色无码一区二区三区 | 日韩精品a片一区二区三区妖精 | 成人性做爰aaa片免费看不忠 | 国产成人综合在线女婷五月99播放 | 精品国产国产综合精品 | 国产成人无码av片在线观看不卡 | 色婷婷综合激情综在线播放 | 无码国内精品人妻少妇 | 亚洲综合精品香蕉久久网 | 免费人成在线观看网站 | 亚洲理论电影在线观看 | 扒开双腿吃奶呻吟做受视频 | 国产午夜手机精彩视频 | 丰满少妇人妻久久久久久 | 少妇邻居内射在线 | 久久久精品国产sm最大网站 | 又色又爽又黄的美女裸体网站 | 风流少妇按摩来高潮 | 99精品视频在线观看免费 | 亚洲午夜无码久久 | 少妇无套内谢久久久久 | 天下第一社区视频www日本 | √8天堂资源地址中文在线 | 最新国产乱人伦偷精品免费网站 | 国产成人无码av一区二区 | 波多野结衣乳巨码无在线观看 | 国产国语老龄妇女a片 | 亚洲精品一区三区三区在线观看 | 老司机亚洲精品影院无码 | 搡女人真爽免费视频大全 | 九九久久精品国产免费看小说 | 性生交大片免费看l | 人妻少妇精品无码专区动漫 | 亚洲综合精品香蕉久久网 | 久久久久成人精品免费播放动漫 | 中文字幕乱妇无码av在线 | 欧美放荡的少妇 | 又大又硬又爽免费视频 | 成人免费视频在线观看 | 国产欧美精品一区二区三区 | 少妇性l交大片欧洲热妇乱xxx | 人人妻人人澡人人爽欧美精品 | 97夜夜澡人人爽人人喊中国片 | 精品一区二区不卡无码av | 亚洲男人av香蕉爽爽爽爽 | 97久久超碰中文字幕 | 亚洲国产午夜精品理论片 | 中文精品无码中文字幕无码专区 | 亚洲一区二区三区播放 | 久久99精品久久久久婷婷 | 久久无码中文字幕免费影院蜜桃 | 狠狠色欧美亚洲狠狠色www | 日日噜噜噜噜夜夜爽亚洲精品 | 天堂久久天堂av色综合 | 狠狠色噜噜狠狠狠7777奇米 | 日韩人妻系列无码专区 | 性生交大片免费看女人按摩摩 | 久久精品成人欧美大片 | 亚洲欧洲中文日韩av乱码 | 日韩精品无码一区二区中文字幕 | 久久99精品久久久久久 | 岛国片人妻三上悠亚 | 国产福利视频一区二区 | 欧美激情综合亚洲一二区 | 六十路熟妇乱子伦 | 青草青草久热国产精品 | 亚洲自偷自偷在线制服 | 亚洲热妇无码av在线播放 | 国产一区二区不卡老阿姨 | 国产乱人伦av在线无码 | 久久久久久av无码免费看大片 | 午夜福利一区二区三区在线观看 | 国产sm调教视频在线观看 | 国产在线无码精品电影网 | 久久精品人人做人人综合试看 | 久久久无码中文字幕久... | 少妇性俱乐部纵欲狂欢电影 | 国产极品美女高潮无套在线观看 | 大肉大捧一进一出视频出来呀 | aⅴ在线视频男人的天堂 | 国产精品久久久久久久9999 | 国产免费无码一区二区视频 | 东京热男人av天堂 | 国语精品一区二区三区 | 日日噜噜噜噜夜夜爽亚洲精品 | 国产精品无码永久免费888 | 在线观看国产一区二区三区 | 亚洲a无码综合a国产av中文 | 国产精品对白交换视频 | 日本熟妇人妻xxxxx人hd | 中文字幕av伊人av无码av | 国产国产精品人在线视 | 最近中文2019字幕第二页 | 日本一卡二卡不卡视频查询 | 精品久久久久久亚洲精品 | 亚洲国产av精品一区二区蜜芽 | 成年美女黄网站色大免费视频 | 久9re热视频这里只有精品 | 动漫av一区二区在线观看 | 亚洲综合色区中文字幕 | 免费无码一区二区三区蜜桃大 | 玩弄少妇高潮ⅹxxxyw | 国产精品久久久久久亚洲毛片 | 亚洲成av人影院在线观看 | 51国偷自产一区二区三区 | 18黄暴禁片在线观看 | a在线亚洲男人的天堂 | 日本熟妇人妻xxxxx人hd | 亚洲の无码国产の无码影院 | 伊人久久大香线蕉av一区二区 | 又粗又大又硬毛片免费看 | 麻豆md0077饥渴少妇 | 一区二区三区高清视频一 | 少妇人妻av毛片在线看 | 亚洲中文字幕在线观看 | 久久久精品国产sm最大网站 | 三上悠亚人妻中文字幕在线 | a片在线免费观看 | 中文字幕日产无线码一区 | 国产精品毛多多水多 | 久久精品视频在线看15 | 国产激情无码一区二区app | 中文字幕无码av激情不卡 | 999久久久国产精品消防器材 | 色综合久久88色综合天天 | 国产一精品一av一免费 | 高中生自慰www网站 | 永久免费观看美女裸体的网站 | 无码精品国产va在线观看dvd | 日本免费一区二区三区最新 | 特黄特色大片免费播放器图片 | 人人妻人人澡人人爽人人精品浪潮 | 亚洲日韩av一区二区三区中文 | 97色伦图片97综合影院 | 国产成人精品久久亚洲高清不卡 | 国产av人人夜夜澡人人爽麻豆 | 丰腴饱满的极品熟妇 | av无码不卡在线观看免费 | 中文无码伦av中文字幕 | 国产艳妇av在线观看果冻传媒 | 国产激情无码一区二区 | 欧美激情综合亚洲一二区 | 97久久精品无码一区二区 | 午夜福利一区二区三区在线观看 | 欧美老人巨大xxxx做受 | 欧美国产日产一区二区 | 国产欧美熟妇另类久久久 | 午夜时刻免费入口 | 国产又爽又黄又刺激的视频 | 天堂а√在线地址中文在线 | 女人被爽到呻吟gif动态图视看 | 中文字幕无码视频专区 | 中文字幕无码日韩专区 | 亚洲欧美中文字幕5发布 | 国产午夜精品一区二区三区嫩草 | 日韩欧美成人免费观看 | 国产av人人夜夜澡人人爽麻豆 | 国产精品久久久 | 中文字幕日产无线码一区 | 熟妇激情内射com | 欧美丰满老熟妇xxxxx性 | 亚洲狠狠婷婷综合久久 | 国产av剧情md精品麻豆 | 久久zyz资源站无码中文动漫 | 国产人妻人伦精品1国产丝袜 | 国产精品久久久久久亚洲影视内衣 | 国内揄拍国内精品少妇国语 | 荫蒂被男人添的好舒服爽免费视频 | 18黄暴禁片在线观看 | 特大黑人娇小亚洲女 | www国产亚洲精品久久网站 | www一区二区www免费 | 精品熟女少妇av免费观看 | 国产亚洲人成a在线v网站 | 性欧美牲交在线视频 | 一本久久a久久精品vr综合 | 一区二区三区乱码在线 | 欧洲 | 午夜精品久久久内射近拍高清 | 日本乱偷人妻中文字幕 | 亚洲中文字幕va福利 | 亚洲精品久久久久avwww潮水 | 亚洲精品成人福利网站 | av人摸人人人澡人人超碰下载 | 国产精品久久国产三级国 | 丰腴饱满的极品熟妇 | 又色又爽又黄的美女裸体网站 | 奇米综合四色77777久久 东京无码熟妇人妻av在线网址 | 久久这里只有精品视频9 | 欧美性生交活xxxxxdddd | 日日噜噜噜噜夜夜爽亚洲精品 | 久久无码人妻影院 | 亚洲成av人在线观看网址 | 国产精品久久久一区二区三区 | 日日噜噜噜噜夜夜爽亚洲精品 | 久久婷婷五月综合色国产香蕉 | 欧美精品国产综合久久 | 亚洲乱亚洲乱妇50p | 久久午夜无码鲁丝片 | 久久无码中文字幕免费影院蜜桃 | 久久久久久亚洲精品a片成人 | 亚洲色欲色欲天天天www | 99久久久无码国产aaa精品 | 扒开双腿吃奶呻吟做受视频 | 无码av最新清无码专区吞精 | 日本大乳高潮视频在线观看 | 无码国模国产在线观看 | 亚洲中文字幕乱码av波多ji | 中文精品久久久久人妻不卡 | 亚洲国产av精品一区二区蜜芽 | 亚洲人成网站在线播放942 | 55夜色66夜色国产精品视频 | 玩弄中年熟妇正在播放 | 水蜜桃色314在线观看 | 中文无码成人免费视频在线观看 | 日日麻批免费40分钟无码 | 精品无码成人片一区二区98 | 麻豆md0077饥渴少妇 | 国产香蕉尹人综合在线观看 | 性史性农村dvd毛片 | 久久午夜无码鲁丝片 | 久久国产精品精品国产色婷婷 | 午夜精品一区二区三区在线观看 | 青青青手机频在线观看 | 亚洲一区av无码专区在线观看 | 国产成人精品久久亚洲高清不卡 | 无码成人精品区在线观看 | 性史性农村dvd毛片 | 日韩人妻无码中文字幕视频 | 又湿又紧又大又爽a视频国产 | 蜜臀av在线观看 在线欧美精品一区二区三区 | 亚洲春色在线视频 | 亚洲欧洲中文日韩av乱码 | 国产两女互慰高潮视频在线观看 | 午夜精品久久久内射近拍高清 | 四虎4hu永久免费 | 欧美激情一区二区三区成人 | 国产性生大片免费观看性 | 久久亚洲中文字幕精品一区 | 国产口爆吞精在线视频 | 亚洲va欧美va天堂v国产综合 | 男人扒开女人内裤强吻桶进去 | 国产sm调教视频在线观看 | 亚洲va欧美va天堂v国产综合 | 2019nv天堂香蕉在线观看 | 人人妻人人澡人人爽人人精品 | 一本色道婷婷久久欧美 | 成熟女人特级毛片www免费 | 午夜精品久久久内射近拍高清 | 午夜福利一区二区三区在线观看 | 亚洲精品成人福利网站 | 国产精品久久福利网站 | 女人和拘做爰正片视频 | 性欧美牲交在线视频 | 国产人妻人伦精品1国产丝袜 | 内射欧美老妇wbb | 亚洲成在人网站无码天堂 | 亚洲国产欧美日韩精品一区二区三区 | 免费无码av一区二区 | 中文字幕乱码人妻二区三区 | 窝窝午夜理论片影院 | 3d动漫精品啪啪一区二区中 | 天堂а√在线中文在线 | 永久黄网站色视频免费直播 | 久久99国产综合精品 | 国产成人人人97超碰超爽8 | 丰满少妇熟乱xxxxx视频 | 亚洲第一网站男人都懂 | 日日干夜夜干 | 精品乱码久久久久久久 | 国产suv精品一区二区五 | 久久久久se色偷偷亚洲精品av | 一本久久a久久精品vr综合 | 中文字幕无码免费久久99 | 免费播放一区二区三区 | 国产成人精品久久亚洲高清不卡 | 乱中年女人伦av三区 | 四虎永久在线精品免费网址 | 中文字幕av无码一区二区三区电影 | 中文精品久久久久人妻不卡 | 亚洲自偷自偷在线制服 | 国产黑色丝袜在线播放 | 亚洲欧洲无卡二区视頻 | 国产真人无遮挡作爱免费视频 | 人人妻人人澡人人爽欧美精品 | 成人免费视频视频在线观看 免费 | 国产99久久精品一区二区 | 亚洲中文字幕va福利 | 国产乱人伦偷精品视频 | 亚洲中文字幕无码中文字在线 | 日韩精品无码一区二区中文字幕 | 久久久久亚洲精品中文字幕 | 天堂久久天堂av色综合 | 亚洲成色www久久网站 | 亚洲精品成a人在线观看 | 九月婷婷人人澡人人添人人爽 | 99久久精品午夜一区二区 | 国内综合精品午夜久久资源 | 成人女人看片免费视频放人 | 日韩av无码中文无码电影 | 亚洲成色www久久网站 | 久久午夜无码鲁丝片午夜精品 | 亚洲精品鲁一鲁一区二区三区 | 国产真人无遮挡作爱免费视频 | 亚洲国产av精品一区二区蜜芽 | 夜夜夜高潮夜夜爽夜夜爰爰 | 精品无码一区二区三区爱欲 | 正在播放老肥熟妇露脸 | 又色又爽又黄的美女裸体网站 | 波多野结衣乳巨码无在线观看 | 亚洲成a人片在线观看无码3d | 成人免费无码大片a毛片 | 国产成人无码专区 | 亚洲а∨天堂久久精品2021 | 国产激情精品一区二区三区 | 国产无套内射久久久国产 | 国内老熟妇对白xxxxhd | 国产精品高潮呻吟av久久 | 丰满人妻一区二区三区免费视频 | 无码av岛国片在线播放 | 国产亚洲视频中文字幕97精品 | 日本一区二区三区免费高清 | 无码人妻丰满熟妇区毛片18 | 无码成人精品区在线观看 | 一二三四在线观看免费视频 | 久久99精品久久久久婷婷 | 成熟女人特级毛片www免费 | 亚洲日韩av一区二区三区四区 | 国内丰满熟女出轨videos | 福利一区二区三区视频在线观看 | 亚洲精品一区二区三区在线观看 | 午夜性刺激在线视频免费 | 任你躁在线精品免费 | 久久无码专区国产精品s | 久久精品国产99久久6动漫 | 福利一区二区三区视频在线观看 | 亚洲日韩av片在线观看 | 天堂久久天堂av色综合 | 亚洲aⅴ无码成人网站国产app | 久久无码中文字幕免费影院蜜桃 | 国产成人人人97超碰超爽8 | 久久人人爽人人爽人人片av高清 | 一本久道久久综合狠狠爱 | 国产麻豆精品精东影业av网站 | 亚洲の无码国产の无码影院 | 少妇的肉体aa片免费 | 色婷婷av一区二区三区之红樱桃 | 内射欧美老妇wbb | 国产成人综合在线女婷五月99播放 | 国产精品永久免费视频 | 少妇性l交大片 | 97色伦图片97综合影院 | 国产成人精品一区二区在线小狼 | 少妇人妻大乳在线视频 | 欧美国产日产一区二区 | 色婷婷欧美在线播放内射 | 黑人大群体交免费视频 | 77777熟女视频在线观看 а天堂中文在线官网 | 国产精品亚洲专区无码不卡 | 天堂а√在线中文在线 | 四虎国产精品一区二区 | 无码一区二区三区在线 | 日日碰狠狠丁香久燥 | 国产精品久久久久久无码 | 台湾无码一区二区 | 美女扒开屁股让男人桶 | 国产成人精品久久亚洲高清不卡 | 欧美成人午夜精品久久久 | 国产精品久久久久9999小说 | 日本护士毛茸茸高潮 | 无码国产色欲xxxxx视频 | 国产成人精品优优av | 高潮毛片无遮挡高清免费视频 | 东京无码熟妇人妻av在线网址 | a国产一区二区免费入口 | 乱中年女人伦av三区 | 狠狠cao日日穞夜夜穞av | 国产人妻久久精品二区三区老狼 |