发表日期:2021-02-14 07:42文章编辑:jianzhan浏览次数: 标签:
前边大家进行了与产品类型有关的业务流程逻辑性,接下去大家刚开始做实际产品一部分。
1. 数据信息库建表并投射Model
最先大家在数据信息库文件在建一张表,随后应用反向工程项目将表投射成Model类,表以下:
SQL编码 /*=============================*/ /* Table: 产品表构造 */ /*=============================*/ create table product ( /* 产品序号,全自动提高 */ id int primary key not null auto_increment, /* 产品名字 */ name varchar(20), /* 产品价钱 */ price decimal(8,2), /* 产品照片 */ pic varchar(200), /* 产品简易详细介绍 */ remark longtext, /* 产品详尽详细介绍 */ xremark longtext, /* 产品生产制造时间 */ date timestamp default CURRENT_TIMESTAMP, /* 是不是为强烈推荐产品,强烈推荐产品才有将会显示信息在商城系统 */ &mend bool, /* 是不是为合理产品,合理产品才有将会显示信息在商城系统 */ open bool, /* 产品所属的类型序号*/ cid int, constraint cid_FK foreign key(cid) references category(id) );应用反向工程项目投射为Model类也不过多阐释了,前边有提及怎样应用反向工程项目转化成Model。
2. 进行产品类的Service层和Action的构架
2.1 产品类的Service层构架
与前边category一样,product也得有一个service来实际操作与产品有关的业务流程逻辑性,因此大家得写一个ProductService和ProductServiceImpl的构架出去,实际以下:
Java编码 //ProductService插口承继BaseService Product public interface ProductService extends BaseService Product { } //ProductServiceImpl完成类承继BaseServiceImpl Product ,并完成上边的ProductService插口 @Service( productService ) public class ProductServiceImpl extends BaseServiceImpl Product implements ProductService { }2.2 产品类的Action构架
最先得健全一下BaseAction中有关Service层的注释
Java编码 @Controller( baseAction ) @Scope( prototype ) public class BaseAction T extends ActionSupport implements RequestAware,SessionAware,ApplicationAware,ModelDriven T { @Resource protected ProductService productService; //别的编码省去,還是原先的编码 }随后大家写一个ProductAction承继该方式:
Java编码 public class ProductAction extends BaseAction Product { }到此,有关产品的后台管理构架就基本构建好啦,接下去便是健全里边的实际作用和业务流程逻辑性了。
3. 进行前台接待的基本构造
前台接待的基本构造和产品类的一样,大家看一下早已进行的产品类的前台接待都是有什么文档:
大家先依据其产品类的前台接待文档,复制一份到product文档夹中,随后大家再做相对的改动。先来剖析一龌龊程:最先index.jsp到aindex.jsp显示信息左边莱单栏,当点一下类型管理方法时,网页页面右边显示信息全部产品类型信息内容,检索和删掉作用均在此网页页面,不用弹出来新的对话框,加上弹出来save.jsp对话框,升级弹出来update.jsp对话框。当点一下产品管理方法的情况下,网页页面右边显示信息全部产品信息内容,检索和删掉作用均在此网页页面进行,加上和升级各自弹出来save.jsp和update.jsp。接下去大家把每个网页页面的架构构建好,随后往相对的一部分填物品就可以。
最先在aindex.jsp中加上以下编码:
接下去,大家进行query.jsp的架构:
XML/HTML编码 %@ page language= java import= java.util.* pageEncoding= UTF-8 % !DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01 Transitional//EN html head %@ include file= /f % style type= text/css body { margin: 1px; } .searchbox { margin: -3; } /style script type= text/javascript $(function(){ $('#dg').datagrid({ //url详细地址改成恳求productAction中的queryJoinCategory方式 url:'product_queryJoinCategory.action', loadMsg:'Loading......', queryParams:{name:''},//这儿主要参数改为name,主要参数数值空,表明大家要显示信息全部产品,后台管理是依据产品name特性查寻的 //width:300, fitColumns:true, striped:true, nowrap:true, singleSelect:false, pagination:true, pageSize:5, pageList:[5,10,15,20], idField:'id',//特定id为标志字段名,在删掉,升级的情况下有效,假如配备此字段名,在换页时,换页不容易危害选定的项 //toolbar界定加上、删掉、升级按键及其检索框 toolbar: [{ iconCls: 'icon-add', text:'加上产品', handler: function(){ //加上开启编码 } },'-',{ iconCls: 'icon-edit', text:'升级产品', handler: function(){ //加上开启编码 } },'-',{ iconCls: 'icon-remove', text:'删掉产品', handler: function(){ //加上开启编码 } },'-',{ //查寻按键并不是LinkButton,它有英语的语法,可是也适用分析HTML标识 text: input id='ss' name='serach' / }], rowStyler: function(index,row){ &( index + index + , + row) if(index % 2 == 0) { return 'background-color:#fff;'; } else { return 'background-color:#c4e1e1;'; } }, frozenColumns:[[ {field:'checkbox',checkbox:true}, {field:'id',title:'产品序号',width:100} ]], columns:[[ {field:'name',title:'产品名字',width:100}, {field:'price',title:'产品价钱',width:100}, {field:'remark',title:'简易叙述',width:100}, {field:'xremark',title:'详尽叙述',width:100}, {field:'date',title:'发布時间',width:100}, {field:'commend',title:'强烈推荐产品',width:100, formatter: function(value,row,index){ if(value) { return input type='checkbox' checked='checked' disabled='true' } else { return input type='checkbox' disabled='true' } } }, {field:'open',title:'合理产品',width:100, formatter: function(value,row,index){ if(value) { return input type='checkbox' checked='checked' disabled='true' } else { return input type='checkbox' disabled='true' } } }, {field:'category.type',title:'隶属产品类型',width:200, //category.type是产品类型 formatter: function(value,row,index){ if(row.category != null row.category.type != null) { return row.category.type; //假如产品类型不以空,回到产品类型 } else { return 此产品临时未归类 } } } ]] }); //把一般的文字框转换为查寻检索文字框 $('#ss').searchbox({ //开启查寻恶性事件 searcher:function(value,name){ //value表明键入的值 //加上开启编码 }, prompt:'请键入检索重要字' }); }); /script /head body table id= dg /table /body /html接下去大家进行productAction中的queryJoinCategory方式,在这里以前,需先进行service一部分,大家全是先从最底层渐渐地往上开发设计的:
Java编码 //ProductService插口 public interface ProductService extends BaseService Product { //查寻产品信息内容,联级类型 public List Product queryJoinCategory(String type, int page, int size); //应用产品的名字查寻 //依据重要字查寻总纪录数 public Long getCount(String type); } @SuppressWarnings( unchecked ) @Service( productService ) public class ProductServiceImpl extends BaseServiceImpl Product implements ProductService { @Override public List Product queryJoinCategory(String name, int page, int size) { String hql = from Product p left join fetch p.category where p.name like :name ; return getSession().createQuery(hql) .setString( name , % + name + % ) .setFirstResult((page-1) * size) //从第好多个刚开始显示信息 .setMaxResults(size) //显示信息好多个 .list(); } @Override public Long getCount(String name) { String hql = select count(p) from Product p where p.name like :name ; return (Long) getSession().createQuery(hql) .setString( name , % + name + % ) .uniqueResult(); //回到一条纪录:总纪录数 } }下边能够进行productAction中的queryJoinCategory方式了:
Java编码 @Controller( productAction ) @Scope( prototype ) public class ProductAction extends BaseAction Product { public String queryJoinCategory() { System.out.println( name: + model.getName()); System.out.println( page: + page); System.out.println( rows: + rows); //用于储存分页查询的数据信息 pageMap = new HashMap String, Object //依据重要字和分页查询的主要参数查寻相对的数据信息 List Product productList = productService.queryJoinCategory(model.getName(), page, rows); pageMap.put( rows , productList); //储存为JSON文件格式 //依据重要字查寻总纪录数 Long total = productService.getCount(model.getName()); // System.out.println(total); pageMap.put( total , total); //储存为JSON文件格式 return jsonMap ; } }接下去在struts.xml中开展配备,跟以前的产品类一样的步骤,到这儿能看出,开发设计好啦一个,下边一个就快了:
XML/HTML编码 action name= product_* >那样后台管理程序写好啦,随后打开tomcat,检测一下,当我们们点一下左边莱单栏的产品管理方法时,会弹出来右侧以下对话框:
那样大家就进行了产品管理方法对话框的架构了。
SSH电子商务新项目实战演练之九:加上和升级产品类型作用的完成 (:5)
SSH电子商务新项目实战演练之八:查寻和删掉产品类型作用的完成 (:20)
SSH电子商务新项目实战演练之七:Struts2和Json的融合 (:47)
SSH电子商务新项目实战演练之六:根据DataGrid的数据信息显示信息 (:19)
SSH电子商务新项目实战演练之五:进行数据信息库的联级查寻和分页查询 (:38)
SSH电子商务新项目实战演练之四:EasyUI莱单的完成 (:59)
SSH电子商务新项目实战演练之三:应用EasyUI构建后台管理网页页面架构 (:9)
SSH电子商务新项目实战演练之二:基本删改查改、Service和Action的提取及其应用注释更换xml (:14)
SSH电子商务新项目实战演练之一:融合Struts2、Hibernate和Spring (:3)
Hibernate下openSession和getCurrentSession获得的联接与事务管理的关联 (:56)
网页链接(选填)
认证(*)
文章正文(*)(留言板留言最多篇幅:1000)
记牢我,下一次回应时无需再次键入本人信息内容