首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >商城项目整理(四)JDBC+富文本编辑器实现商品增加,样式设置,和修改

商城项目整理(四)JDBC+富文本编辑器实现商品增加,样式设置,和修改

作者头像
二十三年蝉
发布2018-02-28 11:31:17
2.3K0
发布2018-02-28 11:31:17
举报
文章被收录于专栏:闻道于事闻道于事

UEditor富文本编辑器:http://ueditor.baidu.com/website/

相应页面展示:

商品添加:

商品修改:

前台商品展示:

商品表建表语句:

 1 create table TEST.GOODS_TABLE
 2 (
 3   gid      NUMBER not null,
 4   gname    VARCHAR2(90),
 5   gdetails CLOB,
 6   gpicture VARCHAR2(100),
 7   gprice   NUMBER,
 8   gleixing NUMBER,
 9   gpinpai  VARCHAR2(20)
10 )
11 tablespace USERS
12   pctfree 10
13   initrans 1
14   maxtrans 255
15   storage
16   (
17     initial 64K
18     next 1M
19     minextents 1
20     maxextents unlimited
21   );
22 comment on column TEST.GOODS_TABLE.gid
23   is '商品ID';
24 comment on column TEST.GOODS_TABLE.gname
25   is '商品名称';
26 comment on column TEST.GOODS_TABLE.gdetails
27   is '商品详情';
28 comment on column TEST.GOODS_TABLE.gpicture
29   is '商品图片';
30 comment on column TEST.GOODS_TABLE.gprice
31   is '商品价格';
32 comment on column TEST.GOODS_TABLE.gleixing
33   is '商品类型';
34 comment on column TEST.GOODS_TABLE.gpinpai
35   is '商品品牌';
36 alter table TEST.GOODS_TABLE
37   add constraint PK_GOODSID primary key (GID)
38   using index 
39   tablespace USERS
40   pctfree 10
41   initrans 2
42   maxtrans 255
43   storage
44   (
45     initial 64K
46     next 1M
47     minextents 1
48     maxextents unlimited
49   );

商品类:

 1 package com.hanqi.model;
 2 
 3 import java.sql.Clob;
 4 
 5 //商品类
 6 public class Goods {
 7     
 8     private Integer gid;//商品ID
 9 
10     private String gname;//商品名称
11     private String gdetails;//商品详情
12     private String gpicture;//商品图片
13     private int gprice;//商品价格
14     private int gleixing;//商品类型
15     private String gpinpai;//商品品牌
16     
17     public Goods() {
18         super();
19         // TODO Auto-generated constructor stub
20     }
21     public Goods(Integer gid, String gname, String gdetails, String gpicture, int gprice, int gleixing, String gpinpai) {
22         super();
23         this.gid = gid;
24         this.gname = gname;
25         this.gdetails = gdetails;
26         this.gpicture = gpicture;
27         this.gprice = gprice;
28         this.gleixing = gleixing;
29         this.gpinpai = gpinpai;
30     }
31     
32     public Integer getGid() {
33         return gid;
34     }
35     public void setGid(Integer gid) {
36         this.gid = gid;
37     }
38     public String getGname() {
39         return gname;
40     }
41     public void setGname(String gname) {
42         this.gname = gname;
43     }
44     public String getGdetails() {
45         return gdetails;
46     }
47     public void setGdetails(String gdetails) {
48         this.gdetails = gdetails;
49     }
50     public String getGpicture() {
51         return gpicture;
52     }
53     public void setGpicture(String gpicture) {
54         this.gpicture = gpicture;
55     }
56     public int getGprice() {
57         return gprice;
58     }
59     public void setGprice(int gprice) {
60         this.gprice = gprice;
61     }
62     public int getGleixing() {
63         return gleixing;
64     }
65     public void setGleixing(int gleixing) {
66         this.gleixing = gleixing;
67     }
68     public String getGpinpai() {
69         return gpinpai;
70     }
71     public void setGpinpai(String gpinpai) {
72         this.gpinpai = gpinpai;
73     }
74     @Override
75     public String toString() {
76         return "Goods [gid=" + gid + ", gname=" + gname + ", gdetails=" + gdetails + ", gpicture=" + gpicture
77                 + ", gprice=" + gprice + ", gleixing=" + gleixing + ", gpinpai=" + gpinpai + "]";
78     }
79 }

JSP主页,包含引入的富文本编辑器和商品增加模块,easyui搭建:

  1 <%@ page language="java" contentType="text/html; charset=UTF-8"
  2     pageEncoding="UTF-8"
  3     import="com.hanqi.model.Log,java.net.UnknownHostException,java.net.InetAddress,java.util.*,com.hanqi.dal.MethodDal"%>
  4 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  5 <html>
  6 <head>
  7 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  8 <script type="text/javascript" src="js/jquery-3.2.1.min.js"></script>
  9 <script type="text/javascript"
 10     src="jquery-easyui-1.5.1/jquery.easyui.min.js"></script>
 11     <link rel="shortcut icon" href="img/logo1.jpg"/>
 12 <link type="text/css" rel="stylesheet"
 13     href="jquery-easyui-1.5.1/themes/icon.css"></link>
 14 <link type="text/css" rel="stylesheet"
 15     href="jquery-easyui-1.5.1/themes/default/easyui.css"></link>
 16 <script type="text/javascript"
 17     src="jquery-easyui-1.5.1/locale/easyui-lang-zh_CN.js"></script>
 18 <title>商城后台管理</title>
 19 
 20 <!-- <script type="text/javascript" src="js/index.js"></script> -->
 21 <style type="text/css">
 22 .datagrid-btable tr {
 23     height: 30px;
 24 }
 25 </style>
 26 </head>
 27     <%
 28     //验证session,防止直接进入该页面
 29     request.setCharacterEncoding("utf-8");
 30     response.setCharacterEncoding("utf-8");
 31     response.setContentType("text/html; charset=utf-8");
 32     
 33     Object obj = request.getSession().getAttribute("admin");//获取session对象
 34     
 35     if(obj == null) {
 36         response.sendRedirect("h_login_j.jsp");
 37     }  
 38     
 39     %>
 40 <%    //访问后台主页写入日志
 41     Object o=session.getAttribute("log");
 42     if(o==null){
 43         Log log = new Log();
 44         log.setPname("admin");
 45         log.setPugroup("超级管理员");
 46         InetAddress address = null;
 47         Date date = new Date();
 48         log.setPuptime(date.toLocaleString());
 49         try {
 50             address = InetAddress.getLocalHost();
 51         } catch (UnknownHostException e) {
 52             // TODO Auto-generated catch block
 53             e.printStackTrace();
 54         }
 55         log.setPip(address.getHostAddress());
 56         log.setPlog("后台主页");
 57         MethodDal m = new MethodDal();
 58         m.insertLog(log);
 59         session.setAttribute("log", log);
 60     }
 61     
 62 %>
 63 <body class="easyui-layout">
 64     <!-- 添加商品 -->
 65     <div data-options="region:'north',split:true"
 66         style="height: 50px; background-color: cornflowerblue">
 67         <span style="height: 40px; line-height: 40px; vertical-align: center;">登录用户:<%
 68      Log l = (Log) session.getAttribute("log");
 69      out.print(l.getPname());
 70  %>&nbsp;|&nbsp;用户组:<%=l.getPugroup()%>&nbsp;|&nbsp;登录时间:<%=l.getPuptime()%>
 71             &nbsp;|&nbsp; 当前IP:<%=l.getPip()%>
 72         </span><br>
 73     </div>
 74     <!-- 对话框开始 -->
 75     <div data-options="region:'center',split:true"
 76         style="padding: 5px; background: #eee">
 77         <div id="tabs" class="easyui-tabs" style="width: 100%; height: 100%;">
 78             <div title="主页" style="">
 79                 <table id="dg"></table>
 80                 <!-- 商品的表单 -->
 81                 <div id="zhong" style="display: none">
 82                     <form id="addGood" method="post"
 83                         style="width: 600px; padding: 20px">
 84                         商品名称:<input  name="gname" class="tb easyui-validatebox" type="text"
 85                             style="width: 200px"> <span style="margin-left: 50px">商品价格:</span><input  id="jiage"
 86                             name="gprice" class="tb easyui-numberbox" type="text" style="width: 150px;"><br>
 87                         商品品牌:<input name="gpinpai" class="tb easyui-validatebox" type="text"
 88                             style="width: 200px; margin-top: 10px"> <span
 89                             style="margin-left: 50px">商品类型:</span>
 90                             <input id="gleixing" style="width: 150px;"  class="easyui-combobox" name="gleixing"   
 91     data-options="valueField:'id',textField:'text',url:'opdata.json'" /> 
 92         <!-- <input name="gleixing" class="tb easyui-validatebox" type="text" style="width: 150px; margin-top: 10px"> -->
 93     <br>
 94                         商品图片:<input name="gpricture" class="tb" type="file"
 95                             style="width: 200px; margin-top: 10px"><br>
 96                         <!-- 加载编辑器的容器 -->
 97                         <script id="container" name="content" type="text/plain"
 98                             imagePathFormat="/upload/">
 99                              请输入商品描述
100                         </script>
101                         <input type="submit" name="" id="" value="提交" />
102                         <input type="reset" value="重置">
103                     </form>
104                 </div>
105                 <!-- 商品的表单 -->
106                 <div id="gai" style="display: none">
107                     <!-- <div id="gai" class="easyui-dialog" data-options="closed:true"> -->
108                     <form id="fromgai" action="GaiGoodsGoodst" method="post"
109                         style="width: 600px; padding: 20px">
110                         商品名称:<input name="gname" class="tb" type="text"
111                             style="width: 200px"> <span style="margin-left: 50px">商品价格:</span><input
112                             name="gprice" class="tb" type="text" style="width: 150px;"><br>
113                         商品品牌:<input name="gpinpai" class="tb" type="text"
114                             style="width: 200px; margin-top: 10px"> <span
115                             style="margin-left: 50px">商品类型:</span><input name="gleixing"
116                             class="tb" type="text" style="width: 150px"><br>
117                         商品图片:<input name="gpicture" class="tb" type="text"
118                             style="width: 200px; margin-top: 10px"><br> <input
119                             name="xpricture" class="tb" type="file"
120                             style="width: 200px; margin-top: 10px"><br>
121                         <!-- 加载编辑器的容器 -->
122                         <template> <input type="text" name="gdetails" id="" />
123                         </template>
124                         <script id="container1" name="gdetails" type="text/plain"
125                             imagePathFormat="/upload/">
126                               
127                         </script>
128                         <input type="submit" name="" id="" value="提交" />
129                     </form>
130                 </div>
131             </div>
132         </div>
133     </div>
134     <!-- 对话框结束 -->
135     <!-- 目录开始 -->
136     <div data-options="region:'west',split:true" width=210>
137         <div id="aa" class="easyui-accordion"
138             style="width: 200px; height: 543px">
139             <div title="商品管理" style="overflow: auto; padding: 10px">
140                 <ul>
141                     <li class="lis"><a href="#" class="easyui-linkbutton ab abc"
142                         plain="true">添加商品</a></li>
143                     <li class="lis"><a href="#" class="easyui-linkbutton ab"
144                         plain="true">待引进商品</a></li>
145                     <li class="lis"><a href="#" class="easyui-linkbutton ab"
146                         plain="true">待审核商品</a></li>
147                 </ul>
148             </div>
149             <div title="订单管理" style="overflow: auto; padding: 10px">
150                 <ul>
151                     <li class="lis"><a href="#" class="easyui-linkbutton ab"
152                         plain="true" id="neworder">新增订单</a></li>
153                     <li class="lis"><a href="#" class="easyui-linkbutton ab"
154                         plain="true" id="oldorder">已确认订单</a></li>
155                 </ul>
156             </div>
157             <div title="用户管理" style="overflow: auto; padding: 10px">
158                 <ul>
159                     <li class="lis"><a href="#" class="easyui-linkbutton ab"
160                         plain="true">添加用户</a></li>
161                     <li class="lis"><a href="#" class="easyui-linkbutton ab"
162                         plain="true">删除用户</a></li>
163                     <li class="lis"><a href="#" class="easyui-linkbutton ab"
164                         plain="true" id="userlook">查看用户</a></li>
165                     <li class="lis"><a href="#" class="easyui-linkbutton ab"
166                         plain="true" id="userlog">日志记录</a></li>
167                 </ul>
168             </div>
169             <div title="促销管理" style="overflow: auto; padding: 10px"></div>
170             <div title="基础信息维护" style="overflow: auto; padding: 10px"></div>
171         </div>
172     </div>
173     <!-- 底部声明 -->
174     <div data-options="region:'south',split:true"
175         style="height: 40px; line-height: 40px; vertical-align: center; text-align: center;">
176         玛雅网络版权声明</div>
177     <!-- 目录结束 -->
178 </body>
179 <!-- 配置文件 -->
180 <script type="text/javascript" src="ueditor.config.js"></script>
181 <!-- 编辑器源码文件 -->
182 <script type="text/javascript" src="ueditor.all.js"></script>
183 <!-- 实例化编辑器 -->
184 <script type="text/javascript">
185         var editor = UE.getEditor('container');
186         var editor1 = UE.getEditor('container1');
187 </script>
188 </html>
189 <script>
190 $(function() {  
191     $('#addGood').form({    
192         url:'InserGoodst',
193         onSubmit: function(){
194             return $('#addGood').form('validate');//如果有为空则返回false阻止提交
195         },
196         success:function(data){    
197             if(data=="true"){
198                 alert("添加成功");
199             }else if(data=="false"){
200                 alert("请检查信息正确!");
201             }
202         }    
203     });
204 
205     $('#userlog').click(function(){
206         var content = '<iframe scrolling="auto" frameborder="0" src="UserLog.jsp" style="width:100%;height:100%;"></iframe>';
207          $('#tabs').tabs('add',{    
208             title:'用户日志',    
209             content:content,    
210             closable:true,    
211             tools:[{    
212                 iconCls:'icon-mini-refresh',    
213                 handler:function(){    
214                 }    
215             }]    
216         });
217     });
218     $('#userlook').click(function(){
219         var content = '<iframe scrolling="auto" frameborder="0" src="UserLook.jsp" style="width:100%;height:100%;"></iframe>';
220          $('#tabs').tabs('add',{    
221             title:'用户日志',    
222             content:content,    
223             closable:true,    
224             tools:[{    
225                 iconCls:'icon-mini-refresh',    
226                 handler:function(){    
227                 }    
228             }]    
229         });
230     });
231     
232     $('#neworder').click(function(){
233         var content = '<iframe scrolling="auto" frameborder="0" src="ShowOrder.jsp" style="width:100%;height:100%;"></iframe>';
234          $('#tabs').tabs('add',{    
235             title:'订单管理',    
236             content:content,    
237             closable:true,    
238             tools:[{    
239                 iconCls:'icon-mini-refresh',    
240                 handler:function(){    
241                 }    
242             }]    
243         });
244     });
245     
246     $('#oldorder').click(function(){
247         var content = '<iframe scrolling="auto" frameborder="0" src="ShowOrder1.jsp" style="width:100%;height:100%;"></iframe>';
248          $('#tabs').tabs('add',{    
249             title:'订单管理',    
250             content:content,    
251             closable:true,    
252             tools:[{    
253                 iconCls:'icon-mini-refresh',    
254                 handler:function(){    
255                 }    
256             }]    
257         });
258     });
259     
260     $('#dg').datagrid({    
261         url : 'ShowwAllServlet',
262         striped:true,//显示斑马线
263         autoRowHeight:false,//定义设置行的高度,根据该行的内容。设置为false可以提高负载性能。这里不设置,css中设置的行高无效
264         singleSelect:true,//只允许选择一行
265         pagination : true,
266         pageNumber : 1,
267         pageSize : 1,
268         pageList : [ 1, 3, 5 ],
269         
270         toolbar : [ {
271             iconCls : 'icon-edit',
272             text : "编辑",
273             handler : function() {
274                 //var gid=$('.datagrid-row-selected').find('.datagrid-cell-c1-gid').html();//获取当前被选中的行的gid
275                 var gid = $('#dg').datagrid("getSelected").gid;//获取当前被选中的行的gid
276                 //console.log("--------------"+gid1);
277                 var content = '<iframe scrolling="auto" frameborder="0" src="EditGoods.jsp?gid='+gid+'" style="width:100%;height:100%;"></iframe>';
278                 if(gid>-1){
279                     $('#tabs').tabs('add',{    
280                         title:'修改商品',    
281                         content:content,    
282                         closable:true,    
283                         tools:[{    
284                             iconCls:'icon-mini-refresh',    
285                             handler:function(){    
286                             }    
287                         }]    
288                     });  
289                 }else{
290                     alert("请选择您要修改的商品");
291                 }
292             }
293         }, '-',{
294             iconCls : 'icon-edit',
295             text : "编辑2",
296             handler : function() {    
297                 var a = $(this).text();
298                 
299                 $('#gai').dialog({
300                     width : 800,
301                     height : 500,
302                     title : a,
303                     //closed : false,
304                     cache : false,
305                     modal : true
306                 });
307                 $('#gai').dialog("open");
308                 var r = $("#dg").datagrid("getSelected");//获取被选中的行,返回对象
309                 $("#fromgai").form("load", r);//将被选中的信息放到弹出的的表单中,富文本编辑器的内容无法显示
310             }
311         },  '-',
312         {
313             iconCls : 'icon-cancel',
314             text : "删除",
315             handler : function() {
316                 //var gid = $('#dg').datagrid("getSelections");//获取当前被选中的行
317                 var gid=$('.datagrid-row-selected').find('.datagrid-cell-c1-gid').html();//获取当前被选中的行的gid
318                 if(gid>-1){
319                     var r1 = confirm("确定删除ID为  "+gid+" 的商品吗?");
320                     if(r1) {
321                         window.location.href="DelGoodServlet?gid="+gid;
322                         alert("删除成功");
323                     }
324                 }else{
325                     alert("请选中需要删除的商品");
326                 }
327                 
328             }
329         } ,'-', {
330             iconCls : 'icon-help',
331             text : "帮助",
332             handler : function() {
333                 alert('帮助按钮')
334             }
335         } ],
336 
337          frozenColumns : [ [ {
338             field : '',
339             title : '',
340             width : 100,
341             checkbox : true
342         }, {
343             field : 'gid',
344             title : '商品代码',
345             width : 60
346         } ] ], 
347         columns : [ [ {
348             field : "gname",
349             title : "商品名称",
350             width:200
351         }, {
352             field : "gdetails",
353             title : "商品详情",
354             width:100
355         }, {
356             field : "gpicture",
357             title : "图片",
358             width:100
359         }, {
360             field : "gprice",
361             title : "价格",
362             width:50
363         }, {
364             field : "gleixing",
365             title : "类型",
366             width:50
367         }, {
368             field : "gpinpai",
369             title : "品牌",
370             width:100
371         }  ] ],
372         
373     }); 
374     $('.abc').click(function() {
375         var a = $(this).text();
376         // alert(a);
377         $('#zhong').dialog({
378             width : 800,
379             height : 500,
380             title : a,
381             closed : false,
382             cache : false,
383             modal : true
384         })
385     });
386 });
387 </script>

修改商品引入的页面:

 1 <%@ page language="java" contentType="text/html; charset=utf-8"
 2     pageEncoding="utf-8" import="com.hanqi.model.Goods,com.hanqi.dal.MethodDal"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 7 
 8 <script type="text/javascript" src="js/jquery-3.2.1.min.js"></script>
 9 <script type="text/javascript"
10     src="jquery-easyui-1.5.1/jquery.easyui.min.js"></script>
11 <link type="text/css" rel="stylesheet"
12     href="jquery-easyui-1.5.1/themes/icon.css"></link>
13 <link type="text/css" rel="stylesheet"
14     href="jquery-easyui-1.5.1/themes/default/easyui.css"></link>
15 <script type="text/javascript"
16     src="jquery-easyui-1.5.1/locale/easyui-lang-zh_CN.js"></script>
17 
18 <title>修改商品</title>
19 <link rel="shortcut icon" href="img/logo1.jpg"/>
20 </head>
21 <body>
22 
23 <%
24 /* Object good= session.getAttribute("good");
25 Goods g= (Goods)good; */
26 %>
27 <%
28 //惯例设置中文
29 request.setCharacterEncoding("utf-8");
30 response.setCharacterEncoding("utf-8");
31 response.setContentType("utf-8");
32 //获取传来的ID
33 String gid = request.getParameter("gid");
34 MethodDal m=new MethodDal();
35 
36 Goods g = m.getGoods(gid);
37 
38 %>
39     <div>
40         <div id="gai" style="">
41             <form action="GaiGoodsServlet" method="post"
42                 style="width: 600px; padding: 20px">
43                 <input name="gid" type="hidden" value="<%=g.getGid() %>">
44                 商品名称:<input name="gname" class="tb easyui-validatebox" type="text" style="width: 200px" value="<%=g.getGname() %>">
45                 <span style="margin-left:50px">商品价格:</span><input name="gprice" class="tb easyui-numberbox" type="text" style="width: 150px;" value="<%=g.getGprice() %>"><br>
46                 商品品牌:<input name="gpinpai" class="tb easyui-validatebox" type="text" style="width: 200px;margin-top:10px" value="<%=g.getGpinpai() %>">
47                 <span style="margin-left:50px">商品类型:</span>
48                 <input id="gleixing" value="<%=g.getGleixing() %>" class="easyui-combobox" name="gleixing"   
49     data-options="valueField:'id',textField:'text',url:'dddddd.json'" />  
50                 商品图片:<br><img src="img/<%=g.getGpicture() %>"  style="width:80px;height:80px">    <br>
51                 新图片:<input type="file" name="gpicture" OnPropertyChange="tt1.style.display='none';">
52                 
53                 <!-- 
54                 商品名称:<input name="gname" class="tb" type="text" style="width: 300px"><br>
55                 商品价格:<input name="gprice" class="tb" type="text"style="width: 300px" ><br> 
56                 商品类型:<input name="gleixing" class="tb" type="text" style="width: 300px"><br> 
57                 商品品牌:<input name="gpinpai" class="tb" type="text" style="width: 300px"><br>
58                 商品图片:<br><img alt=""  style="width:80px;height:80px">    <br>            
59                 新图片:<input type="file" name="gpicture" OnPropertyChange="tt1.style.display='none';"> -->
60                 
61                 <!-- 加载编辑器的容器 -->
62                 <script id="container" name="content" type="text/plain"
63                     imagePathFormat="/upload/">
64 <%=g.getGdetails() %>
65                 </script>
66                 <input type="submit" name="" id="" value="提交" />
67             </form>
68         </div>
69     </div>
70     
71     <div id = "content1"  hidden="hidden">
72 ${content}
73 </div>
74 <div id = "content2">
75 </div>
76 <script type="text/javascript">
77 $(function() {
78     $("#content2").html($("#content1").text()); 
79  
80 });
81 </script>
82     
83 </body>
84     <!-- 配置文件 -->
85     <script type="text/javascript" src="ueditor.config.js"></script>
86     <!-- 编辑器源码文件 -->
87     <script type="text/javascript" src="ueditor.all.js"></script>
88     <!-- 实例化编辑器 -->
89     <script type="text/javascript">
90         var editor = UE.getEditor('container');
91     </script>
92 </html>

代表商品类别的Json文件:

[{    
    "id":1,    
    "text":1   
},{    
    "id":2,    
    "text":2
},{    
    "id":3,    
    "text":3 
},{    
    "id":4,    
    "text":4  
},{    
    "id":5,    
    "text":5 
}]  

数据库链接驱动类:

 1 package com.hanqi.util;
 2 
 3 import java.sql.Connection;
 4 import java.sql.DriverManager;
 5 import java.sql.ResultSet;
 6 import java.sql.SQLException;
 7 import java.sql.Statement;
 8 
 9 /**
10  * 数据库驱动连接类
11  * @author ZBK
12  */
13 public class DBHelper {
14     /**
15      * 数据库用户名
16      */
17     public static final String USERNAME = "test";
18     /**
19      * 数据库密码
20      */
21     public static final String PASSWORD = "test";
22     /**
23      * 数据库驱动类
24      */
25     public static final String DRIVER = "oracle.jdbc.OracleDriver";
26     /**
27      * 数据库地址URL
28      */
29     public static final String URL = "jdbc:oracle:thin:@localhost:1521:xe";
30 
31     /**
32      * 获取数据库连接
33      * @return
34      */
35     public static Connection getConnection() {
36         Connection conn = null;
37         try {
38             Class.forName(DRIVER);
39             conn = DriverManager.getConnection(URL, USERNAME, PASSWORD);
40         } catch (ClassNotFoundException e) {
41             e.printStackTrace();
42         } catch (SQLException e) {
43             e.printStackTrace();
44         }
45         return conn;
46     }
47     
48 
49     /**
50      * 释放资源
51      * @param conn 数据库连接对象
52      * @param sm Statement对象
53      * @param rs ResultSet结果集对象
54      */
55     public static void destroy(Connection conn, Statement sm, ResultSet rs) {
56         if (conn != null) {
57             try {
58                 conn.close();
59             } catch (SQLException e) {
60                 e.printStackTrace();
61             }
62             conn = null;
63         }
64         if (sm != null) {
65             try {
66                 sm.close();
67             } catch (SQLException e) {
68                 e.printStackTrace();
69             }
70             sm = null;
71         }
72         if (rs != null) {
73             try {
74                 rs.close();
75             } catch (SQLException e) {
76                 e.printStackTrace();
77             }
78             rs = null;
79         }
80     }
81 
82     /**
83      * 验证前台传入的参数是否为空
84      * @param args
85      * @return
86      */
87     public static boolean checkParam(String... args) {
88         for (String s : args) {
89             if (s == null || s.trim().length() < 1) {
90                 return false;
91             }
92         }
93         return true;
94     }
95 }

数据库操作方法:

  1 package com.hanqi.dal;
  2 
  3 import java.sql.Connection;
  4 import java.sql.PreparedStatement;
  5 import java.sql.ResultSet;
  6 import java.sql.SQLException;
  7 import java.util.ArrayList;
  8 import java.util.Date;
  9 import java.util.List;
 10 
 11 import com.hanqi.model.Goods;
 12 import com.hanqi.model.Log;
 13 import com.hanqi.model.Order;
 14 import com.hanqi.model.TradingStatusFile;
 15 import com.hanqi.model.User;
 16 import com.hanqi.util.DBHelper;
 17 
 18 public class MethodDal {
 19     private Connection conn;
 20     private PreparedStatement ps;
 21     private ResultSet rs;
 22     
 23     private static int scnum=1000;
 24     //初始化链接
 25     public void init(String sql) {
 26         conn = DBHelper.getConnection();
 27         try {
 28             ps = conn.prepareStatement(sql);
 29         } catch (SQLException e) {
 30             e.printStackTrace();
 31         }
 32     }
 33     //释放资源
 34     public void close(){
 35         DBHelper.destroy(conn, ps, rs);
 36     }
 37     //判断传入的参数有没有空的方法,只要有空的就返回false
 38     public boolean checkParam(String... args){//这样传参数代表参数个数不确定,传几个都可以
 39         for(String s : args){
 40             if("".equals(s)||s==null){
 41                 return false;
 42             }
 43         }
 44         return true;
 45     }
 46     /**
 47      * 返回所有商品
 48      * @return
 49      */
 50     public List<Goods> getAllGoods(){
 51         String sql = "select * from GOODS_TABLE g";
 52         init(sql);
 53         List<Goods> list = new ArrayList<Goods>();
 54         
 55         try {
 56             rs = ps.executeQuery();
 57             while (rs.next()) {
 58                 Goods good=new Goods(rs.getInt(1),rs.getString(2),rs.getString(3),rs.getString(4),rs.getInt(5),rs.getInt(6),rs.getString(7));
 59                 list.add(good);
 60             }
 61         } catch (SQLException e) {
 62             e.printStackTrace();
 63         }
 64         return list;
 65     }
 66     /**
 67      * 增加一条商品信息
 68      * @param g
 69      * @return
 70      */
 71     public int insertGoods(Goods g) {
 72         String sql = "insert into GOODS_TABLE values(tablexulie.nextval,?,?,?,?,?,?)";
 73 
 74         init(sql);
 75         int a = -1;
 76         try {
 77             ps.setString(1, g.getGname());
 78             ps.setString(2, g.getGdetails());
 79             ps.setString(3, g.getGpicture());
 80             ps.setInt(4, g.getGprice());
 81             ps.setInt(5, g.getGleixing());
 82             ps.setString(6, g.getGpinpai());
 83             a = ps.executeUpdate();
 84         } catch (SQLException e) {
 85             e.printStackTrace();
 86         }
 87         return a;
 88     }
 89     /**
 90      * 删除商品信息
 91      */
 92     public int deleteGoods(int gid) {
 93         String sql = "delete from GOODS_TABLE g where g.gid=? ";
 94 
 95         init(sql);
 96         int a = -1;
 97         try {
 98             ps.setInt(1, gid);
 99             a = ps.executeUpdate();
100         } catch (SQLException e) {
101             e.printStackTrace();
102         }
103         return a;
104     }
105     //修改商品信息
106     public int UpdateGood(Goods g) {
107         String sql = "update GOODS_TABLE g set g.gname=?,g.gdetails=?,g.gpicture=?,g.gprice=?,g.gleixing=?,g.gpinpai=? where g.gid=?";
108         init(sql);
109         int a = -1;
110         try {
111             ps.setString(1, g.getGname());
112             ps.setString(2, g.getGdetails());
113             ps.setString(3, g.getGpicture());
114             ps.setInt(4, g.getGprice());
115             ps.setInt(5, g.getGleixing());
116             ps.setString(6, g.getGpinpai());
117             ps.setInt(7, g.getGid());
118             a = ps.executeUpdate();
119         } catch (SQLException e) {
120             e.printStackTrace();
121         }
122         return a;
123     }
124     public int UpdateGoodNP(Goods g) {
125         String sql = "update GOODS_TABLE g set g.gname=?,g.gdetails=?,g.gprice=?,g.gleixing=?,g.gpinpai=? where g.gid=?";
126         init(sql);
127         int a = -1;
128         try {
129             ps.setString(1, g.getGname());
130             ps.setString(2, g.getGdetails());
131             ps.setInt(3, g.getGprice());
132             ps.setInt(4, g.getGleixing());
133             ps.setString(5, g.getGpinpai());
134             ps.setInt(6, g.getGid());
135             
136             a = ps.executeUpdate();
137         } catch (SQLException e) {
138             e.printStackTrace();
139         }
140         return a;
141     }
142     
143     //获取数量
144     public int getGoodsSum(String scuser) {
145         String sql = "select s.scnum from SHOPPINGCAR s  where s.scuser=?";
146         int sum=0;
147         init(sql);
148         
149         try {
150             ps.setString(1, scuser);
151             rs = ps.executeQuery();
152             
153             while (rs.next()) {
154                 sum+=rs.getInt("scnum");
155             }
156         } catch (SQLException e) {
157             e.printStackTrace();
158         }
159         return sum;
160     }
161             
162     public Goods getGoods(String gid) {
163         String sql = "select * from GOODS_TABLE g where g.gid="+gid;
164         init(sql);
165         Goods good=new Goods();
166         try {
167             rs = ps.executeQuery();
168             while (rs.next()) {
169                 good=new Goods(rs.getInt(1),rs.getString(2),rs.getString(3),rs.getString(4),rs.getInt(5),rs.getInt(6),rs.getString(7));
170             }
171         } catch (SQLException e) {
172             e.printStackTrace();
173         }
174         return good;
175     }
176     /**
177      * 增加日志记录
178      * @param g
179      * @return
180      */
181     public int insertLog(Log l) {
182         String sql = "insert into ShopLog values(?,?,?,?,?)";
183 
184         init(sql);
185         int a = -1;
186         try {
187             ps.setString(1, l.getPname());
188             ps.setString(2, l.getPugroup());
189             ps.setString(3, l.getPuptime());
190             ps.setString(4, l.getPip());
191             ps.setString(5, l.getPlog());
192             a = ps.executeUpdate();
193         } catch (SQLException e) {
194             e.printStackTrace();
195         }
196         return a;
197     }
198     /**
199      * 返回所有日志
200      * @return
201      */
202     public List<Log> getAllLogs(){
203         String sql = "select * from ShopLog s order by s.puptime desc";
204         init(sql);
205         List<Log> list = new ArrayList<Log>();
206         
207         try {
208             rs = ps.executeQuery();
209             while (rs.next()) {
210                 Log l=new Log();
211                 l.setPname(rs.getString(1));
212                 l.setPugroup(rs.getString(2));
213                 l.setPuptime(rs.getString(3));
214                 l.setPip(rs.getString(4));
215                 l.setPlog(rs.getString(5));
216                 
217                 list.add(l);
218             }
219         } catch (SQLException e) {
220             e.printStackTrace();
221         }
222         return list;
223     }
224     /**
225      * 返回购物车数据
226      * @return
227      */
228     public List<Order> getAllOrder(String username){
229         String sql = "select t.*  from SHOPPINGCAR t where t.scuser=?";
230         init(sql);
231         List<Order> list = new ArrayList<Order>();
232         
233         try {
234             ps.setString(1, username);
235             rs = ps.executeQuery();
236             while (rs.next()) {
237                 Order l=new Order();
238 
239                 l.setScid(rs.getString(1));
240                 l.setScuser(rs.getString(4));
241                 l.setScgid(rs.getString(5));
242                 l.setScnum(rs.getInt(3));
243                 l.setSctime((new Date()).toLocaleString());
244                 
245                 list.add(l);
246             }
247         } catch (SQLException e) {
248             e.printStackTrace();
249         }
250         return list;
251     }
252     /**
253      * 删除购物车已经提交的信息
254      */
255     public int deleteSCar(String username) {
256         String sql = "delete from SHOPPINGCAR g where g.scuser=? ";
257 
258         init(sql);
259         int a = -1;
260         try {
261             ps.setString(1, username);
262             a = ps.executeUpdate();
263         } catch (SQLException e) {
264             e.printStackTrace();
265         }
266         return a;
267     }
268     /**
269      * 增加订单记录
270      * @param g
271      * @return
272      */
273     public int insertOrder(Order l) {
274         String sql = "insert into SHOPORDER values(?,?,?,?,?,?,?)";
275 
276         init(sql);
277         int a = -1;
278         try {
279             ps.setString(1, l.getScid());
280             ps.setString(2, l.getScuser());
281             ps.setString(3, l.getScgid());
282             ps.setInt(4, l.getScnum());
283             ps.setInt(5, l.getScmoney());
284             ps.setString(6, l.getSctime());
285             ps.setString(7, l.getSczt());
286             a = ps.executeUpdate();
287         } catch (SQLException e) {
288             e.printStackTrace();
289         }
290         return a;
291     }
292     /**
293      * 返回未确认订单
294      * @return
295      */
296     public List<Order> getAllOrder(){
297         String sql = "select t.* from SHOPORDER t  where t.sczt='待确认' order by t.sctime desc";
298         init(sql);
299         List<Order> list = new ArrayList<Order>();
300         
301         try {
302             rs = ps.executeQuery();
303             while (rs.next()) {
304                 Order l=new Order();
305                 l.setScid(rs.getString(1));
306                 l.setScuser(rs.getString(2));
307                 l.setScgid(rs.getString(3));
308                 l.setScnum(rs.getInt(4));
309                 l.setScmoney(rs.getInt(5));
310                 l.setSctime(rs.getString(6));
311                 l.setSczt(rs.getString(7));
312                 list.add(l);
313             }
314         } catch (SQLException e) {
315             e.printStackTrace();
316         }
317         return list;
318     }
319     /**
320      * 返回确认订单
321      * @return
322      */
323     public List<Order> getAllOrder1(){
324         String sql = "select t.* from SHOPORDER t  where t.sczt='已确认' order by t.sctime desc";
325         init(sql);
326         List<Order> list = new ArrayList<Order>();
327         
328         try {
329             rs = ps.executeQuery();
330             while (rs.next()) {
331                 Order l=new Order();
332                 l.setScid(rs.getString(1));
333                 l.setScuser(rs.getString(2));
334                 l.setScgid(rs.getString(3));
335                 l.setScnum(rs.getInt(4));
336                 l.setScmoney(rs.getInt(5));
337                 l.setSctime(rs.getString(6));
338                 l.setSczt(rs.getString(7));
339                 list.add(l);
340             }
341         } catch (SQLException e) {
342             e.printStackTrace();
343         }
344         return list;
345     }
346     /**
347      * 修改订单状态
348      * @return
349      */
350     public void UpdateOrder(String sctime){
351         String sql = "update SHOPORDER s set s.sczt='已确认' where s.sctime=?";
352         init(sql);
353         try {
354             ps.setString(1, sctime);
355             ps.executeQuery();
356             
357         } catch (SQLException e) {
358             e.printStackTrace();
359         }
360     }
361     /**
362      * 返回用户信息
363      * @return
364      */
365     public List<User> getAllUsers(){
366         String sql = "select t.*, t.rowid from USER_TABLE t order by t.utime desc";
367         init(sql);
368         List<User> list = new ArrayList<User>();
369         
370         try {
371             rs = ps.executeQuery();
372             while (rs.next()) {
373                 User l=new User();
374 
375                 l.setUserid(rs.getInt(1));
376                 l.setUname(rs.getString(2));
377                 l.setUpassword(rs.getString(3));
378                 l.setUnickname(rs.getString(4));
379                 l.setUemail(rs.getString(5));
380                 l.setUtime(rs.getString(6));
381                 list.add(l);
382             }
383         } catch (SQLException e) {
384             e.printStackTrace();
385         }
386         return list;
387     }
388     
389 }

商品详情页:

  1 <%@ page language="java" contentType="text/html; charset=UTF-8"
  2     pageEncoding="UTF-8" import="com.hanqi.dal.MethodDal" %>
  3 <!DOCTYPE html>
  4 <html>
  5 
  6     <head>
  7         <meta charset="utf-8" />
  8         <title>详情页</title>
  9         <link rel="shortcut icon" href="img/logo1.jpg"/>
 10         <link rel="stylesheet" type="text/css" href="css/currency.css" />
 11         <link rel="stylesheet" href="css/style.css" />
 12         <link rel="stylesheet" href="css/bootstrap.css" />
 13         <script src="js/jquery-1.10.1.min.js"></script>
 14         <script src="js/bootstrap.js"></script>
 15         <script src="js/axios.min.js" charset="utf-8"></script>
 16         <script src="js/vue.js"></script>
 17         <script src="js/swal.js"> </script> 
 18     </head>
 19     <style type="text/css">
 20         /*main*/
 21         .main{width: 1275px;margin: auto;overflow: hidden;margin-bottom: 30px;min-height: 500px;padding-top: 60px;}
 22         .main .left{border: 1px solid #eee;padding: 0;}
 23         .main .left img{width: 100%;}
 24         .main .right h3{padding: 0 6% 10px 0; font-size: 24px;}
 25         .main .right p{ color: #00559a;font-size: 24px;margin-left: 8px;line-height: 50px; margin-bottom: 20px;}
 26         .main .right p small{font-size: 67%; color: #808285;margin-left: 10px;text-decoration: line-through;}
 27         .check{margin-left: 15px;padding: 15px 0;border-top: 1px solid #e0e3e9;border-bottom: 1px solid #e0e3e9;}
 28         .check li{font-size: 16px;padding: 15px 0;overflow: hidden;}
 29         .check li .num{width: 40px;height: 33px;padding-left: 5px;}
 30         .check li .btn{font-weight: bold;}
 31         .main .bottom{min-height: 200px;}
 32         .main .bottom h3{color: #005faf; font-size: 20px;}
 33         
 34     </style>
 35 
 36     <body>
 37         <%
 38             //获取存入的用户名,调用方法查询商品数量
 39             String scuser=(String)session.getAttribute("username");
 40             MethodDal m= new MethodDal();
 41             int sum=m.getGoodsSum(scuser);
 42         %>
 43         <!--header-->
 44         <header>
 45             <div class="right col-md-3">
 46                 <p class="col-md-6">你好:<span class="user"><%String username=(String)session.getAttribute("username");if(username==null){out.print("<a href='denglu.jsp'>请登录</a>");}else{out.print(username);} %></span></p>
 47                 <a href="shoppingcar.jsp">
 48                     <span class="glyphicon glyphicon-shopping-cart"></span>
 49                     <span><%=sum %></span>
 50                 </a>
 51                 <a href="##" style="margin-left:20px">退出</a>
 52             </div>
 53             <div class="left">
 54                 <img src="img/logo.png" />
 55             </div>
 56         </header>
 57         <!--nav-->
 58         <nav class="navbar navbar-default" style="margin-bottom: 0;">
 59             <div class="container-fluid">
 60                 <div class="navbar-header">
 61                     <a class="navbar-brand" href="index.jsp"> HanQiStore</a>
 62                 </div>
 63 
 64                 <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
 65                     <ul class="nav navbar-nav">
 66                         <li>
 67                             <a href="index.jsp">首页 </a>
 68                         </li>
 69                         <li>
 70                             <a href="showlist.jsp?id=1">上装</a>
 71                         </li>
 72                         <li>
 73                             <a href="showlist.jsp?id=2">下装</a>
 74                         </li>
 75                         <li>
 76                             <a href="showlist.jsp?id=3">鞋类</a>
 77                         </li>
 78                     </ul>
 79 
 80                 </div>
 81             </div>
 82         </nav>
 83         <!--thin-->
 84         <img style="width: 100%;" src="img/thin.jpg"/>
 85         <!--main-->
 86         <div class="main">
 87             <div class="left col-md-5">
 88                 <img v-bind:src="['img/'+pic]" alt="" />
 89             </div>
 90             <div class="right col-md-7">
 91                 <h3>{{title}}</h3>
 92                 <p>¥ {{price}}<small>¥269.00</small>    </p>
 93                 <ul class="check">
 94                     <li class="chicun">尺寸:
 95                         <button class="btn btn-default">S</button> 
 96                         <button class="btn btn-default">M</button> 
 97                         <button class="btn btn-default">L</button> 
 98                         <button class="btn btn-default">XL</button> 
 99                         <button class="btn btn-default">XXL</button>
100                     </li>
101                     <li>数量:
102                         <button class="btn btn-primary jian"><span class="glyphicon glyphicon-minus" aria-hidden="true"></span></button>
103                         <input class="num" type="text" value="0" />
104                         <button class="btn btn-primary jia"><span class="glyphicon glyphicon-plus" aria-hidden="true"></span></button></button> 
105                     </li>
106                     <li>
107                         <button class="col-md-3 btn btn-danger">立即购买</button>
108                         <button class="col-md-3 col-md-offset-1 btn btn-primary jiaru">加入购物车</button>
109                     </li>
110                 </ul>
111             </div>
112             <div class="bottom col-md-12">
113                 <p class="p_details" style="margin-left:30px"></p>
114             </div>
115         </div>
116         
117         <!--footer-->
118         <footer class="text-center">    版权:汉企玛雅科技    </footer>
119     </body>
120     <script type="text/javascript">
121         
122         //接受参数,取出数据
123         var gid = window.location.href.split("=")[1];//gid
124         var user = $("header .user").html();//用户名
125         var main = new Vue({
126             el:".main",
127             data:{
128                 title:"",
129                 details:"",
130                 pic:"",
131                 price:""
132             },
133             created: function() { //此函数先执行
134                 var that = this;
135                  var param = new URLSearchParams();
136                  param.append("gid",gid);
137                  axios.post("Servlet_details",param)
138                  .then(function(res){
139                      that.title = res.data.result[0].gname;
140                      that.details = res.data.result[0].gdetails;
141                      $(".p_details").html(that.details)
142                      that.pic = res.data.result[0].gpicture;
143                      that.price = res.data.result[0].gprice;
144                  })
145             }
146         })
147         $(function(){
148             //选择尺寸
149             var size = "";//尺寸
150             var num = 0;//数量
151             $(".chicun .btn").on("click",function(){
152                 $(this).css("background","#eee");
153                 $(this).siblings(".btn").css("background","#fff")
154                 $(".num").val(0);
155                 size = $(this).html();
156                 return size;
157             })
158             //改变数量
159             var i = $(".num").val();
160             $(".jia").on("click",function(){
161                 i++;
162                 $(".num").val(i);
163                 num = i; 
164                 return num;
165             })
166             $(".jian").on("click",function(){
167                 if(i>1){
168                     i--;
169                     $(".num").val(i);
170                     num = i;
171                 }
172                 return num;
173             })
174             
175             $(".jiaru").on("click",function(){
176                 if(size != "" || num != 0){
177                      var param = new URLSearchParams();
178                      param.append("scgid",gid);
179                      param.append("scuser",user);
180                      param.append("scsize",size);
181                      param.append("scnum",num);
182                      axios.post("Servlet_ShoppingCar",param)
183                      .then(function(res){
184                          if(res.data){
185                              swal("Good!", "添加成功", "success"); 
186                          }else{
187                              swal("OMG!", "添加失败", "error"); 
188                          }
189                      })
190                 }else{
191                     swal("OMG!", "请选择参数", "error"); 
192                 }
193             })
194                 
195             
196         })
197     </script>
198 </html>

商品详情页处理Servlet:

 1 package hanqi.maya.sevlet;
 2 
 3 import java.io.IOException;
 4 import java.util.List;
 5 
 6 import javax.servlet.ServletException;
 7 import javax.servlet.annotation.WebServlet;
 8 import javax.servlet.http.HttpServlet;
 9 import javax.servlet.http.HttpServletRequest;
10 import javax.servlet.http.HttpServletResponse;
11 
12 import com.alibaba.fastjson.JSONObject;
13 import com.hanqi.maya.util.ShowList;
14 
15 import hanqi.maya.method.Method_list;
16 
17 /**
18  * Servlet implementation class Servlet_details
19  */
20 @WebServlet("/Servlet_details")
21 public class Servlet_details extends HttpServlet {
22     private static final long serialVersionUID = 1L;
23        
24     /**
25      * @see HttpServlet#HttpServlet()
26      */
27     public Servlet_details() {
28         super();
29     }
30 
31     /**
32      * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
33      */
34     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
35         request.setCharacterEncoding("utf-8");//字符集
36         response.setCharacterEncoding("utf-8");
37         // 接收传过来的值        
38         String gid = request.getParameter("gid");
39         Method_list ml = new Method_list();
40         int i = Integer.parseInt(gid);    //强转为int类型
41         List<ShowList> list = ml.SelectDetails(i);
42         JSONObject jo = new JSONObject();
43         if (list!=null) {
44             jo.put("result", list);
45         }else{
46             jo.put("success", false);
47         }
48         response.getWriter().append(jo.toJSONString());
49     }
50 
51     /**
52      * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
53      */
54     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
55         doGet(request, response);
56     }
57 
58 }
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-09-18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • UEditor富文本编辑器:http://ueditor.baidu.com/website/
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档