目录

一、我们应该做哪些准备工作呢?

二、MVC模式代码

三、JSP部分(组件导入的部分)      

   前言:本文内容有关于的是有网页基础(HTML+Css+Js)jQuery、Oracle、javaweb(servlet)、Map集合、List集合以及网页无刷新技术Ajax、EasyUI等基础知识。

        综合性知识较强,属于开发思维。

一、我们应该做哪些准备工作呢?

        实现效果:

jQuery EasyUI效果展示

        需要安装的:

                 安装JDK和Eclipse         安装Oracle        安装和配置Tomcat       

        1.首先编写sql语句(本文我们用的Oracle数据库)

/*权限表(菜单表)*/

--作用:显示菜单(本文中包含:一级菜单、二级菜单)

--创建表

create table tb_promission

(

--唯一的编号

id number primary key,--权限id

text varchar2(100) not null,--权限名称

--一级菜单

pid number not null,--权限父级id

--图标文件的路径

icon varchar2(100),--菜单显示的icon

--jsp界面

url varchar2(100),--权限资源路径

state number,--状态;该记录是否有效1:有效、0:无效

--用于排序

sort number--排序码

)

--提交 作用:由于我们项目在通过Oracle数据库显示数据时,

--由于Oracle数据是在创好项目后面的增加数据或者修改删除数据的时候,可能会导致没有更新数据的情况,这种情况下需要运行commit

commit;

--为表格中插入数据

insert into tb_promission(id,text,pid,icon,url,state,sort) values

(1,'店铺管理',-1,'','',1,1);

insert into tb_promission(id,text,pid,icon,url,state,sort) values

(2,'图书分类管理',-1,'','',1,2);

insert into tb_promission(id,text,pid,icon,url,state,sort) values

(3,'图书管理',-1,'','',1,3);

insert into tb_promission(id,text,pid,icon,url,state,sort) values

(4,'订单管理',-1,'','',1,4);

insert into tb_promission(id,text,pid,icon,url,state,sort) values

(5,'系统设置',-1,'','',1,5);

insert into tb_promission(id,text,pid,icon,url,state,sort) values

(6,'店铺添加',1,'','/addshop.jsp',1,6);

insert into tb_promission(id,text,pid,icon,url,state,sort) values

(7,'店铺列表',1,'','/shopList.jsp',1,7);

insert into tb_promission(id,text,pid,icon,url,state,sort) values

(8,'图书分类添加',2,'','/addBookType.jsp',1,8);

insert into tb_promission(id,text,pid,icon,url,state,sort) values

(9,'图书分类列表',2,'','/addBookTypeList.jsp',1,9);

insert into tb_promission(id,text,pid,icon,url,state,sort) values

(10,'图书添加',3,'','/addBook.jsp',1,10);

insert into tb_promission(id,text,pid,icon,url,state,sort) values

(11,'图书列表',3,'','',1,11);

insert into tb_promission(id,text,pid,icon,url,state,sort) values

(12,'所有图书',11,'','/BookList.jsp',1,12);

insert into tb_promission(id,text,pid,icon,url,state,sort) values

(13,'未上架',11,'','/notAvailableBook.jsp',1,13);

insert into tb_promission(id,text,pid,icon,url,state,sort) values

(14,'已上架',11,'','/listedBook.jsp',1,14);

insert into tb_promission(id,text,pid,icon,url,state,sort) values

(15,'已下架',11,'','/removedBook.jsp',1,15);

insert into tb_promission(id,text,pid,icon,url,state,sort) values

(16,'所有订单',4,'','/orderList.jsp',1,16);

insert into tb_promission(id,text,pid,icon,url,state,sort) values

(17,'未付款订单',4,'','/UnpaidOrder.jsp',1,17);

insert into tb_promission(id,text,pid,icon,url,state,sort) values

(18,'已付款订单',4,'','/PaidOrder.jsp',1,18);

insert into tb_promission(id,text,pid,icon,url,state,sort) values

(19,'未收货订单',4,'','/UnconscionedOrder.jsp',1,19);

insert into tb_promission(id,text,pid,icon,url,state,sort) values

(20,'已完成订单',4,'','/DoneOrder.jsp',1,20);

insert into tb_promission(id,text,pid,icon,url,state,sort) values

(21,'系统设置',5,'','/SystemSettings.jsp',1,21);

insert into tb_promission(id,text,pid,icon,url,state,sort) values

(22,'菜单管理',5,'','/MenuManagement.jsp',1,22);

insert into tb_promission(id,text,pid,icon,url,state,sort) values

(23,'权限管理',5,'','/PermissionManagement.jsp',1,23);

insert into tb_promission(id,text,pid,icon,url,state,sort) values

(24,'用户管理',5,'','/UserManagement.jsp',1,24);

commit;

commit

--查询权限表所有的内容

select * from tb_promission;

-----------------------------------------------接下来创建书籍表(插入数据)

--创建书籍表

create table tb_book

(

bid number primary key,--书籍id

bname varchar2(100),--书籍名称

bprice number(5,2),--书籍价格

btype varchar2(100)--书籍类型

)

commit;

--插入数据

insert into tb_book(bid,bname,bprice,btype) values (1,'我爱Java',99,'都市');

insert into tb_book(bid,bname,bprice,btype) values (2,'圣墟',55,'玄幻');

insert into tb_book(bid,bname,bprice,btype) values (3,'斗罗大陆',29,'玄幻');

insert into tb_book(bid,bname,bprice,btype) values (4,'韩湘子传奇',54,'悬疑');

insert into tb_book(bid,bname,bprice,btype) values (5,'带着老婆去打妖',65,'悬疑');

insert into tb_book(bid,bname,bprice,btype) values (6,'豪门联姻之夫来收妖',123,'言情');

insert into tb_book(bid,bname,bprice,btype) values (7,'深宫有朵黑莲花',54,'言情');

insert into tb_book(bid,bname,bprice,btype) values (8,'武动乾坤',229,'玄幻');

insert into tb_book(bid,bname,bprice,btype) values (9,'金瓶梅',33,'历史');

insert into tb_book(bid,bname,bprice,btype) values (10,'我在亮剑当战狼',33,'军事');

insert into tb_book(bid,bname,bprice,btype) values (11,'菁华记之千山暮雪',33,'武侠');

insert into tb_book(bid,bname,bprice,btype) values (12,'江湖传奇传',44,'武侠');

insert into tb_book(bid,bname,bprice,btype) values (13,'大秦:不装了,你爹我是秦始皇',33,'历史');

insert into tb_book(bid,bname,bprice,btype) values (14,'西游记',33,'历史');

insert into tb_book(bid,bname,bprice,btype) values (15,'神墓',259,'玄幻');

insert into tb_book(bid,bname,bprice,btype) values (16,'我的26岁女房客',99,'都市');

insert into tb_book(bid,bname,bprice,btype) values (17,'我的校花贴身高手',12,'都市');

insert into tb_book(bid,bname,bprice,btype) values (18,'坏蛋是怎样炼成的',29,'都市');

insert into tb_book(bid,bname,bprice,btype) values (19,'很纯很暧昧',2,'都市');

insert into tb_book(bid,bname,bprice,btype) values (20,'领家有女初长成',23,'都市');

insert into tb_book(bid,bname,bprice,btype) values (21,'最强弃少',88,'都市');

insert into tb_book(bid,bname,bprice,btype) values (22,'邪气凌然',219,'都市');

insert into tb_book(bid,bname,bprice,btype) values (23,'黄金瞳',265,'都市');

insert into tb_book(bid,bname,bprice,btype) values (24,'天才相师',65,'都市');

insert into tb_book(bid,bname,bprice,btype) values (25,'陈二狗的妖孽人生',63,'都市');

insert into tb_book(bid,bname,bprice,btype) values (26,'都市奇妖谈',93,'都市');

insert into tb_book(bid,bname,bprice,btype) values (27,'白狐天下',54,'都市');

insert into tb_book(bid,bname,bprice,btype) values (28,'都市圣医',18,'都市');

insert into tb_book(bid,bname,bprice,btype) values (29,'家里养个狐狸精',438,'都市');

insert into tb_book(bid,bname,bprice,btype) values (30,'神龙至尊',22,'都市');

insert into tb_book(bid,bname,bprice,btype) values (31,'我的28岁女房东',432,'都市');

insert into tb_book(bid,bname,bprice,btype) values (32,'最强狂兵',11,'都市');

insert into tb_book(bid,bname,bprice,btype) values (33,'道诡异仙',22.99,'玄幻');

insert into tb_book(bid,bname,bprice,btype) values (34,'万古神帝',19,'玄幻');

insert into tb_book(bid,bname,bprice,btype) values (35,'万相之王',16,'玄幻');

insert into tb_book(bid,bname,bprice,btype) values (36,'最初进化',22,'玄幻');

insert into tb_book(bid,bname,bprice,btype) values (37,'核动力剑仙',33,'玄幻');

insert into tb_book(bid,bname,bprice,btype) values (38,'斗破苍穹',55,'玄幻');

insert into tb_book(bid,bname,bprice,btype) values (39,'烛龙以左',90,'玄幻');

insert into tb_book(bid,bname,bprice,btype) values (40,'遮天',1,'玄幻');

insert into tb_book(bid,bname,bprice,btype) values (41,'人族镇守使',33,'玄幻');

insert into tb_book(bid,bname,bprice,btype) values (42,'一世之尊',55,'玄幻');

insert into tb_book(bid,bname,bprice,btype) values (43,'长夜余火',229,'玄幻');

insert into tb_book(bid,bname,bprice,btype) values (44,'完美世界',5,'玄幻');

insert into tb_book(bid,bname,bprice,btype) values (45,'十方武圣',7,'玄幻');

insert into tb_book(bid,bname,bprice,btype) values (46,'神印王座',89,'玄幻');

insert into tb_book(bid,bname,bprice,btype) values (47,'牧神记',88,'玄幻');

insert into tb_book(bid,bname,bprice,btype) values (48,'奥术神座',123,'玄幻');

insert into tb_book(bid,bname,bprice,btype) values (49,'儒道至圣',45,'玄幻');

insert into tb_book(bid,bname,bprice,btype) values (50,'极品老公太难缠',54,'言情');

insert into tb_book(bid,bname,bprice,btype) values (51,'这个道士不好惹',54,'悬疑');

insert into tb_book(bid,bname,bprice,btype) values (52,'食梦貘手记',22,'悬疑');

insert into tb_book(bid,bname,bprice,btype) values (53,'修仙玩家',65,'武侠');

insert into tb_book(bid,bname,bprice,btype) values (54,'春秋煮酒',22,'武侠');

insert into tb_book(bid,bname,bprice,btype) values (55,'绝世仙缘',55,'武侠');

insert into tb_book(bid,bname,bprice,btype) values (56,'我的谍战岁月',55,'军事');

insert into tb_book(bid,bname,bprice,btype) values (57,'三国演义',33,'历史');

insert into tb_book(bid,bname,bprice,btype) values (58,'水浒传',33,'历史');

insert into tb_book(bid,bname,bprice,btype) values (59,'红楼梦',33,'历史');

insert into tb_book(bid,bname,bprice,btype) values (60,'凡人修仙传',33,'玄幻');

insert into tb_book(bid,bname,bprice,btype) values (61,'女总裁的贴身兵王',33,'都市');

insert into tb_book(bid,bname,bprice,btype) values (62,'逍遥兵王',33,'都市');

insert into tb_book(bid,bname,bprice,btype) values (63,'近身兵王',33,'都市');

insert into tb_book(bid,bname,bprice,btype) values (64,'最强兵王',33,'都市');

insert into tb_book(bid,bname,bprice,btype) values (65,'至尊兵王',33,'都市');

insert into tb_book(bid,bname,bprice,btype) values (66,'美女总裁的特种兵王',33,'都市');

insert into tb_book(bid,bname,bprice,btype) values (67,'御用兵王',33,'都市');

insert into tb_book(bid,bname,bprice,btype) values (68,'超强兵王在都市',33,'都市');

insert into tb_book(bid,bname,bprice,btype) values (69,'医武兵王',33,'都市');

insert into tb_book(bid,bname,bprice,btype) values (70,'绝世兵王',33,'都市');

insert into tb_book(bid,bname,bprice,btype) values (71,'特种兵王在都市',33,'都市');

insert into tb_book(bid,bname,bprice,btype) values (72,'超级兵王在都市',33,'都市');

insert into tb_book(bid,bname,bprice,btype) values (73,'超级兵王的美女军团',33,'都市');

insert into tb_book(bid,bname,bprice,btype) values (74,'抗战之最强兵王',33,'都市');

insert into tb_book(bid,bname,bprice,btype) values (75,'桃运兵王',33,'都市');

insert into tb_book(bid,bname,bprice,btype) values (76,'山村透视兵王',33,'都市');

insert into tb_book(bid,bname,bprice,btype) values (77,'特种兵王',33,'都市');

insert into tb_book(bid,bname,bprice,btype) values (78,'龙牙兵王',33,'都市');

insert into tb_book(bid,bname,bprice,btype) values (79,'特种兵王在山村',33,'都市');

insert into tb_book(bid,bname,bprice,btype) values (80,'功夫兵王',33,'都市');

insert into tb_book(bid,bname,bprice,btype) values (81,'超级兵王俏总裁',33,'都市');

insert into tb_book(bid,bname,bprice,btype) values (82,'校花的贴身兵王',33,'都市');

insert into tb_book(bid,bname,bprice,btype) values (83,'女神的布衣兵王',33,'都市');

insert into tb_book(bid,bname,bprice,btype) values (84,'校花的透视兵王',33,'都市');

insert into tb_book(bid,bname,bprice,btype) values (85,'贴身兵王',33,'都市');

insert into tb_book(bid,bname,bprice,btype) values (86,'兵王之王',33,'都市');

insert into tb_book(bid,bname,bprice,btype) values (87,'妖孽兵王',33,'都市');

insert into tb_book(bid,bname,bprice,btype) values (88,'超级兵王在校园',33,'都市');

insert into tb_book(bid,bname,bprice,btype) values (89,'邪气兵王',33,'都市');

insert into tb_book(bid,bname,bprice,btype) values (90,'火爆兵王',33,'都市');

insert into tb_book(bid,bname,bprice,btype) values (91,'超品兵王',33,'都市');

insert into tb_book(bid,bname,bprice,btype) values (92,'都市之无敌兵王',33,'都市');

insert into tb_book(bid,bname,bprice,btype) values (93,'抗日之兵王传说',33,'都市');

insert into tb_book(bid,bname,bprice,btype) values (94,'水浒之特种兵王',33,'都市');

insert into tb_book(bid,bname,bprice,btype) values (95,'护花兵王',33,'都市');

insert into tb_book(bid,bname,bprice,btype) values (96,'至强兵王',33,'都市');

insert into tb_book(bid,bname,bprice,btype) values (97,'万族之劫',33,'都市');

insert into tb_book(bid,bname,bprice,btype) values (98,'明天下',33,'都市');

insert into tb_book(bid,bname,bprice,btype) values (99,'逆天邪神',33,'都市');

            由于一整个项目完成代码较多,所以给大家展示书籍模块所使用的技术与操作,当然,当我们学会了这个模块,其它的也可以按照一样的模式来做。

    当我们创建表插入数据,并且提交之后。

        2.打开Eclipse,进行我们创建一个JavaWeb项目(EasyUi)在src中创建以下包 utils、entity、dao、dao.impl、biz、biz.impl、servlet(MVC模式) 

                 我们先编写MVC架构模式:

         在编写 MVC 模式我们需要导入一下 jar 包

                我们需要导入

                        ① JSON工具包(fastJSON)目的:用于转换格式(使用Ajax)

                        ② Oracle工具包 目的:用于JavaWeb项目中与数据库的交互

                                需要到 Oracle 官方网站去下载。

                                像以上的 jar 包,大家都可以在浏览器搜索找到官方网站下载

         当我们已经导入以上 jar 包之后,我们就可以编写MVC模式了。

二、MVC模式代码

    2.1 util包 (数据库帮助包)           

                ① DBHelper(数据库帮助类,用于连接数据库)        java类(DBHelper.java)

//包的路径 关键词 package:包

package com.java.easyui.utils;

//导包部分 关键词 import:导入

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

/**

* 数据库帮助实现类

*

* @author Administrator

*

*/

public class DBHelper {

// 加载驱动

static {

try {

Class.forName("oracle.jdbc.driver.OracleDriver");

} catch (Exception e) {

e.printStackTrace();

}

}

/**

* 获取连接对象

*

* @return con 连接对象

*/

public static Connection getCon() {

Connection con = null;

try {

con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "scott", "123");

} catch (Exception e) {

e.printStackTrace();

}

return con;

}

/**

* 关闭服务

*

* @param con

* 连接对象

* @param ps

* 执行对象

* @param rs

* 结果集对象

*/

public static void myClose(Connection con, PreparedStatement ps, ResultSet rs) {

try {

if (null != rs) {

rs.close();

}

if (null != ps) {

ps.close();

}

if (null != con && !con.isClosed()) {

con.close();

}

} catch (Exception e) {

e.printStackTrace();

}

}

}

                ②BaseDao(通用增删改查方法类)        java类(BaseDao.java)

package com.java.easyui.utils;

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.util.Date;

import java.util.List;

import com.java.easyui.entity.Promission;

public class BaseDao {

//数据库对象

protected Connection con = null;

protected PreparedStatement ps = null;

protected ResultSet rs = null;

//影响行数

protected int n;

//实体对象

protected Promission promission = null;

//实体对象集合

protected List list = null;

//表格总记录数

protected int count;

/**

* 通用增删改方法

* @param sql sql语句

* @param obj 传入的可变参数(可有可无)

* @return n 影响的行数

*/

public int executeUpdate(String sql, Object...obj) {

con = DBHelper.getCon();

try {

ps = con.prepareStatement(sql);

if(null != obj) {

for (int i = 0; i < obj.length; i++) {

ps.setObject(i+1, obj[i]);

}

}

n = ps.executeUpdate();

} catch (Exception e) {

e.printStackTrace();

}finally {

DBHelper.myClose(con, ps, null);

}

return n;

}

/**

* 通用查询

* @param sql sql语句

* @param obj 可变参数

* @return rs 结果集对象

*/

public ResultSet executeQuery(String sql, Object...obj) {

con = DBHelper.getCon();

try {

ps = con.prepareStatement(sql);

if(null != obj) {

for (int i = 0; i < obj.length; i++) {

ps.setObject(i+1, obj[i]);

}

}

rs = ps.executeQuery();

} catch (Exception e) {

e.printStackTrace();

}

return rs;

}

/**

* 获取表格的记录数

* @param tableName 表格名

* @param colName 表字段

* @param strName 关键词

* @return count 影响的行数

*/

public int getTableCount(String tableName, String colName, String strName) {

String sql = "select count(*) from "+tableName+" where "+colName+" like '%"+strName+"%'";

//通过此种方式可以直接跳过ps执行对象,前提是要保证sql语句语句中没有占位符

rs = this.executeQuery(sql);

try {

if(rs.next()) {

count = rs.getInt(1);

}

} catch (Exception e) {

e.printStackTrace();

}finally {

DBHelper.myClose(con, ps, rs);

}

return count;

}

public static void main(String[] args) {

//测试代码是否能够成功执行

int a = new BaseDao().getTableCount("tb_goods", "gname", "mp3");

System.out.println(a);

}

}

   2.2 entity(实体包)        作用:实体MVC模式与数据库交流的桥梁

                注意:实体类的所有属性最好与数据库定义的字段一致,并且数据类型要对应。

              ①Promission(菜单类)        java类(class)(Promission.java)

package com.java.easyui.entity;

import java.io.Serializable;

import java.util.ArrayList;

import java.util.List;

/**

* 权限类(类/对象)

* @author Administrator

*实现Serializable接口(目的:唯一,标识)(标准格式)

*/

public class Promission implements Serializable{

/**

*

*/

private static final long serialVersionUID = 1L;

private Integer id;//权限id

private String text;//权限名称

private Integer pid;//权限父级id

private String icon;//菜单显示的icon

private String url;//权限资源路径

private Integer state;//状态;该记录是否有效1:有效、0:无效

private Integer sort;//排序码

//用来保存子节点(建立两张表的联系)

private List children = new ArrayList();

/**

* 无参数构造方法

*/

public Promission() {

}

/**

* 少集合全参数构造方法

* @param id

* @param text

* @param pid

* @param icon

* @param url

* @param state

* @param sort

*/

public Promission(Integer id, String text, Integer pid, String icon, String url, Integer state, Integer sort) {

super();

this.id = id;

this.text = text;

this.pid = pid;

this.icon = icon;

this.url = url;

this.state = state;

this.sort = sort;

}

/**

* 少编号全参数构造方法

* @param text

* @param pid

* @param icon

* @param url

* @param state

* @param sort

* @param children

*/

public Promission(String text, Integer pid, String icon, String url, Integer state, Integer sort,

List children) {

super();

this.text = text;

this.pid = pid;

this.icon = icon;

this.url = url;

this.state = state;

this.sort = sort;

this.children = children;

}

/**

* 少编号和集合全参数构造方法

* @param text

* @param pid

* @param icon

* @param url

* @param state

* @param sort

*/

public Promission(String text, Integer pid, String icon, String url, Integer state, Integer sort) {

super();

this.text = text;

this.pid = pid;

this.icon = icon;

this.url = url;

this.state = state;

this.sort = sort;

}

/**

* 全参数构造方法

* @param id

* @param text

* @param pid

* @param icon

* @param url

* @param state

* @param sort

* @param children

*/

public Promission(Integer id, String text, Integer pid, String icon, String url, Integer state, Integer sort,

List children) {

super();

this.id = id;

this.text = text;

this.pid = pid;

this.icon = icon;

this.url = url;

this.state = state;

this.sort = sort;

this.children = children;

}

//get方法(得到私有化属性值)

public Integer getId() {

return id;

}

public String getText() {

return text;

}

public Integer getPid() {

return pid;

}

public String getIcon() {

return icon;

}

public String getUrl() {

return url;

}

public Integer getState() {

return state;

}

public Integer getSort() {

return sort;

}

public List getchildren() {

return children;

}

//set方法(设置私有化属性值)

public void setId(Integer id) {

this.id = id;

}

public void setText(String text) {

this.text = text;

}

public void setPid(Integer pid) {

this.pid = pid;

}

public void setIcon(String icon) {

this.icon = icon;

}

public void setUrl(String url) {

this.url = url;

}

public void setState(Integer state) {

this.state = state;

}

public void setSort(Integer sort) {

this.sort = sort;

}

public void setchildren(List children) {

this.children = children;

}

//toString方法(打印实体对象的所有属性)

@Override

public String toString() {

return "Promission [id=" + id + ", text=" + text + ", pid=" + pid + ", icon=" + icon + ", url=" + url

+ ", state=" + state + ", sort=" + sort + ", children=" + children + "]";

}

}

                ②Book(书籍部分实体类/二级菜单内容)        java类(Book.java)

package com.java.easyui.entity;

import java.io.Serializable;

/**

* 书籍实体类

*

* @author Administrator

*

*/

public class Book implements Serializable {

/**

*

*/

private static final long serialVersionUID = 1L;

private Integer bid;// 书籍编号

private String bname;// 书籍名称

private double bprice;// 书籍价格

private String btype;// 书籍类型

public Book() {

// TODO Auto-generated constructor stub

}

public Book(Integer bid, String bname, double bprice, String btype) {

super();

this.bid = bid;

this.bname = bname;

this.bprice = bprice;

this.btype = btype;

}

public Book(String bname, double bprice, String btype) {

super();

this.bname = bname;

this.bprice = bprice;

this.btype = btype;

}

public Integer getBid() {

return bid;

}

public String getBname() {

return bname;

}

public double getBprice() {

return bprice;

}

public String getbtype() {

return btype;

}

public void setBid(Integer bid) {

this.bid = bid;

}

public void setBname(String bname) {

this.bname = bname;

}

public void setBprice(double bprice) {

this.bprice = bprice;

}

public void setbtype(String btype) {

this.btype = btype;

}

@Override

public String toString() {

return "Book [bid=" + bid + ", bname=" + bname + ", bprice=" + bprice + ", btype=" + btype + "]";

}

}

     2.3 dao包(方法定义 接口+实现 包)

             接口与类的区别:接口(定义方法)(interface)  |   类(实现方法、定义对像(class)

                接口:命名一般以I开头,接口的方法需要类来定义 实现:implements       

                ①IPromissionDao(权限方法定义接口)       java接口(IPromissionDao.java)

package com.java.easyui.dao;

import java.util.List;

import com.java.easyui.entity.Promission;

/**

* 权限方法定义类

*

* @author Administrator

*

*/

public interface IPromissionDao {

/**

* 根据父节点编号进行查询

*

* @param pid

* 父节点编号

* @return list 集合

*/

public List queryPromissionByPid(Integer pid);

}

                ②IBookDao(书籍类方法实现接口)        java接口(IBookDao.java)

package com.java.easyui.dao;

import java.util.List;

import com.java.easyui.entity.Book;

/**

* 书籍方法实现接口

*

* @author Administrator

*

*/

public interface IBookDao {

/**

* 增加书籍的方法

*

* @param book

* 书籍实体

*/

void addBook(Book book);

/**

* 删除书籍的方法

*

* @param bid

* 书籍编号

*/

void delBook(int bid);

/**

* 修改书籍的方法

*

* @param bid

* 书籍编号

* @param book

* 书籍实体

*/

void updataBook(int bid, Book book);

/**

* 根据关键词模糊查询获取所有的书籍

*

* @param pageIndex

* 页码

* @param pageSize

* 每页条数

* @param strName

* 关键词

* @return list 集合

*/

List queryBookDim(Integer pageIndex, Integer pageSize, String strName);

/**

* 获取表格的总记录数

*

* @param strName

* 关键词

* @return Integer 总记录数

*/

Integer queryBookByCount(String strName);

}

   2.4 dao.Impl包(dao方法实现包)  

                ①PromissionDaoImpl(权限方法接口实现类)        java类(PromissionDaoImpl.java)

package com.java.easyui.dao.impl;

import java.util.ArrayList;

import java.util.List;

import com.java.easyui.dao.IPromissionDao;

import com.java.easyui.entity.Promission;

import com.java.easyui.utils.BaseDao;

import com.java.easyui.utils.DBHelper;

/**

* 权限类方法定义接口实现类

* @author Administrator

*

*/

public class PromissionDaoImpl extends BaseDao implements IPromissionDao {

@Override

public List queryPromissionByPid(Integer pid) {

list = new ArrayList();//集合定义

rs = this.executeQuery("select id,text,pid,icon,url,state,sort from tb_promission where pid = ? order by sort asc",new Object[] {

pid

});

try {

while(rs.next()) {

promission = new Promission(rs.getInt(1),rs.getString(2),

rs.getInt(3),rs.getString(4),

rs.getString(5),rs.getInt(6),

rs.getInt(7));

list.add(promission);

}

} catch (Exception e) {

e.printStackTrace();

}finally {

DBHelper.myClose(con, ps, rs);

}

return list;

}

public static void main(String[] args) {

//测试

List list = new PromissionDaoImpl().queryPromissionByPid(-1);

for (Promission promission : list) {

System.out.println(promission);

}

}

}

                ②BookDaoImpl(书籍方法接口实现类)        java类(BookDaoImpl.java)

package com.java.easyui.dao.impl;

import java.util.ArrayList;

import java.util.List;

import com.java.easyui.dao.IBookDao;

import com.java.easyui.entity.Book;

import com.java.easyui.utils.BaseDao;

import com.java.easyui.utils.DBHelper;

/**

* 书籍方法接口实现类

* @author Administrator

*

*/

public class BookDaoImpl extends BaseDao implements IBookDao {

private List list = null;

private Integer count = 0;

private Book book = new Book();

@Override

public List queryBookDim(Integer pageIndex, Integer pageSize, String strName) {

Integer start = (pageIndex-1)*pageSize+1;

Integer end = pageIndex*pageSize;

list = new ArrayList();

rs = this.executeQuery("select a.* from(select b.*,rownum as rid from (select bid,bname,bprice,btype from tb_book where bname like '%"+strName+"%')b)a where a.rid between "+start+" and "+end+" ");

try {

while(rs.next()) {

book =new Book(rs.getInt(1),rs.getString(2),

rs.getDouble(3),rs.getString(4));

list.add(book);

}

} catch (Exception e) {

e.printStackTrace();

}finally {

DBHelper.myClose(con, ps, rs);

}

return list;

}

@Override

public Integer queryBookByCount(String strName) {

rs = this.executeQuery("select count(0) from tb_book where bname like '%"+strName+"%'");

try {

if(rs.next()) {

count = rs.getInt(1);

}

} catch (Exception e) {

e.printStackTrace();

}finally {

DBHelper.myClose(con, ps, rs);

}

return count;

}

@Override

public void addBook(Book book) {

con = DBHelper.getCon();

try {

ps = con.prepareStatement("insert into tb_book select nvl(max(bid),0)+1,?,?,? from tb_book");

ps.setString(1, book.getBname());

ps.setDouble(2, book.getBprice());

ps.setString(3, book.getbtype());

ps.executeUpdate();

} catch (Exception e) {

e.printStackTrace();

}finally {

DBHelper.myClose(con, ps, null);

}

}

@Override

public void delBook(int bid) {

con = DBHelper.getCon();

try {

ps = con.prepareStatement("delete from tb_book where bid = "+bid);

ps.executeUpdate();

} catch (Exception e) {

e.printStackTrace();

}finally {

DBHelper.myClose(con, ps, null);

}

}

@Override

public void updataBook(int bid, Book book) {

con = DBHelper.getCon();

try {

ps = con.prepareStatement("update tb_book set bname = ?, bprice = ?, btype = ? where bid = "+bid);

//给占位符赋值

ps.setString(1, book.getBname());

ps.setDouble(2, book.getBprice());

ps.setString(3, book.getbtype());

ps.executeUpdate();

} catch (Exception e) {

e.printStackTrace();

}finally {

DBHelper.myClose(con, ps, null);

}

}

public static void main(String[] args) {

// List queryBookDim = new BookDaoImpl().queryBookDim(1, 10, "");

// for (Book book : queryBookDim) {

// System.out.println(book);

// }

// Integer n = new BookDaoImpl().queryBookByCount("");

// System.out.println(n);

//new BookDaoImpl().addBook(new Book("范德萨",32,"的覅万"));

}

}

    2.5 biz包 (业务逻辑层)

                ①IPromissionBiz(权限方法定义接口)       java接口(IPromissionBiz.java)

package com.java.easyui.biz;

import java.util.List;

import com.java.easyui.entity.Promission;

/**

* 权限方法定义类

*

* @author Administrator

*

*/

public interface IPromissionBiz {

/**

* 根据父节点编号进行查询

*

* @param pid

* 父节点编号

* @return list 集合

*/

public List queryPromissionByPid(Integer pid);

}

                 ②IBookBiz(书籍类方法实现接口)        java接口(IBookDao.java)

package com.java.easyui.biz;

import java.util.List;

import com.java.easyui.entity.Book;

/**

* 书籍方法实现接口

*

* @author Administrator

*

*/

public interface IBookBiz {

/**

* 增加书籍的方法

*

* @param book

* 书籍实体

*/

void addBook(Book book);

/**

* 删除书籍的方法

*

* @param bid

*/

void delBook(int bid);

/**

* 修改书籍的方法

*

* @param bid

* 书籍编号

* @param book

* 书籍实体

*/

void updataBook(int bid, Book book);

/**

* 根据关键词模糊查询获取所有的书籍

*

* @param pageIndex

* 页码

* @param pageSize

* 每页条数

* @param strName

* 关键词

* @return list 集合

*/

List queryBookDim(Integer pageIndex, Integer pageSize, String strName);

/**

* 获取表格的总记录数

*

* @param strName

* 关键词

* @return Integer 总记录数

*/

Integer queryBookByCount(String strName);

}

      2.6 biz.impl包(biz方法实现接口)

                ①PromissionBizImpl(权限方法接口实现类)        java类(PromissionBizImpl.java)

package com.java.easyui.biz.impl;

import java.util.List;

import com.java.easyui.biz.IPromissionBiz;

import com.java.easyui.dao.IPromissionDao;

import com.java.easyui.dao.impl.PromissionDaoImpl;

import com.java.easyui.entity.Promission;

/**

* 权限类的业务逻辑层

* @author Administrator

*

*/

public class PromissionBizImpl implements IPromissionBiz {

//示例化dao层

IPromissionDao ipd = new PromissionDaoImpl();

@Override

public List queryPromissionByPid(Integer pid) {

//拿到所有的一级菜单

List list = ipd.queryPromissionByPid(pid);

//进行遍历

for (Promission promission : list) {

//进行内容上的显示(排除掉非一级菜单)

if(promission.getUrl() == null || "".equals(promission.getUrl().trim())) {

//将二级菜单的内容添加

//System.out.println(ipd.queryPromissionByPid(promission.getId()));

promission.setchildren(queryPromissionByPid(promission.getId()));

}

}

return list;

}

public static void main(String[] args) {

//List list = new PromissionBizImpl().queryPromissionByPid(1);

/*System.out.println(list);

for (Promission promission : list) {

System.out.println(promission);

}*/

}

}

             ②BookBizImpl(书籍方法接口实现类)        java类(BookBizImpl.java)

package com.java.easyui.biz.impl;

import java.util.List;

import com.java.easyui.biz.IBookBiz;

import com.java.easyui.dao.IBookDao;

import com.java.easyui.dao.impl.BookDaoImpl;

import com.java.easyui.entity.Book;

import com.java.easyui.utils.BaseDao;

import com.java.easyui.utils.DBHelper;

/**

* 书籍类的业务逻辑层

* @author Administrator

*

*/

public class BookBizImpl extends BaseDao implements IBookBiz {

//实例化dao层

IBookDao ibd = new BookDaoImpl();

@Override

public List queryBookDim(Integer pageIndex, Integer pageSize, String strName) {

// TODO Auto-generated method stub

return ibd.queryBookDim(pageIndex, pageSize, strName);

}

@Override

public Integer queryBookByCount(String strName) {

// TODO Auto-generated method stub

return ibd.queryBookByCount(strName);

}

@Override

public void addBook(Book book) {

ibd.addBook(book);

}

@Override

public void delBook(int bid) {

ibd.delBook(bid);

}

@Override

public void updataBook(int bid, Book book) {

ibd.updataBook(bid, book);

}

}

     2.7 servlet包 (拿到数据,将数据反馈给客户端)

                ①PromissionServelt(拿到所有的菜单)        servlet

package com.java.easyui.servlet;

import java.io.IOException;

import java.io.PrintWriter;

import java.util.List;

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import com.fasterxml.jackson.databind.ObjectMapper;

import com.java.easyui.biz.IPromissionBiz;

import com.java.easyui.biz.impl.PromissionBizImpl;

import com.java.easyui.entity.Promission;

/**

* 拿到所有的菜单

* @author Administrator

*

*/

@WebServlet("/promissionServelt.do")//servlet注释配置

public class PromissionServelt extends HttpServlet {

private static final long serialVersionUID = 1L;

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

doPost(request, response);

}

/**

* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)

*/

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

//设置编码格式

request.setCharacterEncoding("utf-8");

response.setCharacterEncoding("utf-8");

response.setContentType("application/json;charset=utf-8");

//获取内容

//String id = request.getParameter("pid");

int pid = -1;

//判断非空

// if(null!=id) {

// pid = Integer.parseInt(id);

// }

//一级菜单

IPromissionBiz ipb = new PromissionBizImpl();

List list = ipb.queryPromissionByPid(pid);

//进行格式的转换

ObjectMapper mapper = new ObjectMapper();

String promissionList = mapper.writeValueAsString(list);

//获取out对象,利用out对象进行传输

PrintWriter out = response.getWriter();

out.write(promissionList);

//刷新

out.flush();

//关闭

out.close();

}

}

                ②BookListServlet(实现书籍分页显示数据效果)

package com.java.easyui.servlet;

import java.io.IOException;

import java.io.PrintWriter;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import com.fasterxml.jackson.databind.ObjectMapper;

import com.java.easyui.biz.IBookBiz;

import com.java.easyui.biz.impl.BookBizImpl;

import com.java.easyui.entity.Book;

/**

* 实现书籍分页显示数据效果

* @author Administrator

*

*/

@WebServlet("/bookList.do")

public class BookListServlet extends HttpServlet {

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

doPost(request, response);

}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

//1.设置编码格式

request.setCharacterEncoding("utf-8");

response.setCharacterEncoding("utf-8");

response.setContentType("application/json;charset=utf-8");

//2.获取信息

//页码(开始默认为1)

Integer pageIndex = 1;

//用户点击了上下页

String pIndex = request.getParameter("page");//不能随便写,EasyUI已经定义好了

//非空判断

if(null!=pIndex) {

//重新给页码赋值

pageIndex = Integer.parseInt(pIndex);

}

//条数

Integer pageSize = 10;

String pSize = request.getParameter("rows");//不能随便写,EasyUI已经定义好了

//判断

if(null!=pSize) {

pageSize = Integer.parseInt(pSize);

}

//搜索内容

String searchName = request.getParameter("searchName");

System.out.println(searchName);

//非空判断

if(null==searchName) {

searchName = "";

}

//3.调用biz层的方法

IBookBiz ibb = new BookBizImpl();

//条数

Integer total = ibb.queryBookByCount(searchName);

//System.out.println(total);

//获取所有的书籍信息

List list = ibb.queryBookDim(pageIndex, pageSize, searchName);

//System.out.println(list);

//将以上内容保存到map集合中

Map maps = new HashMap();

//"total":7,"rows":

maps.put("total", total);

maps.put("rows", list);

//把maps转换成JSON格式内容

ObjectMapper mapper = new ObjectMapper();

String writeValueAsString = mapper.writeValueAsString(maps);

//实例化out对象

PrintWriter out = response.getWriter();

//将字符串map集合传入进去

out.write(writeValueAsString);

//刷新

out.flush();

//关闭

out.close();

}

}

                ③ DelBookServlet(删除指定的书籍)

package com.java.easyui.servlet;

import java.io.IOException;

import java.io.PrintWriter;

import java.util.HashMap;

import java.util.Map;

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import com.fasterxml.jackson.databind.ObjectMapper;

import com.java.easyui.biz.IBookBiz;

import com.java.easyui.biz.impl.BookBizImpl;

import com.java.easyui.entity.Book;

/**

* 删除书籍的servlet

* @author Administrator

*

*/

@WebServlet("/delBook.do")//配置

public class DelBookServlet extends HttpServlet {

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

doPost(request, response);

}

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

//1.设置编码格式

request.setCharacterEncoding("utf-8");

response.setCharacterEncoding("utf-8");

response.setContentType("application/json;charset=utf-8");

//2.获取信息

Integer bid = request.getParameter("bid")!=null? Integer.parseInt(request.getParameter("bid")):0;

//3.调用biz层的删除方法

IBookBiz ibb = new BookBizImpl();

//定一个一个maps集合保存结果

Map maps = new HashMap();

try {

//可能出现异常

ibb.delBook(bid);

//给出反馈

maps.put("success",true);

} catch (Exception e) {

maps.put("success",false);

}

//4.将内容转换String格式,在使用out对象传入

ObjectMapper mapper = new ObjectMapper();

String writeValueAsString = mapper.writeValueAsString(maps);

//删除内容到map集合中

PrintWriter out = response.getWriter();

out.write(writeValueAsString);

//刷新流

out.flush();

//关闭流

out.close();

}

}

                 ④EditAddBookServlet(增删改一体化servlet(节省资源))

package com.java.easyui.servlet;

import java.io.IOException;

import java.io.PrintWriter;

import java.util.HashMap;

import java.util.Map;

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import com.fasterxml.jackson.databind.ObjectMapper;

import com.java.easyui.biz.IBookBiz;

import com.java.easyui.biz.impl.BookBizImpl;

import com.java.easyui.entity.Book;

/**

* 增加修改一体化servlet

*

* @author Administrator

*

*/

@WebServlet("/editaddBook.do") // 配置

public class EditAddBookServlet extends HttpServlet {

protected void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

doPost(request, response);

}

protected void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

// 1.设置编码格式

request.setCharacterEncoding("utf-8");

response.setCharacterEncoding("utf-8");

response.setContentType("application/json;charset=utf-8");

// 书籍名称

String bname = request.getParameter("bname");

// System.out.println(bname);

// 书籍价格

Double bprice = Double.valueOf(request.getParameter("bprice"));

// System.out.println(bprice);

// 书籍类型

String btype = request.getParameter("btype");

// System.out.println(btype);

// 2.将内容封装到实体中去

Book book = new Book(bname, bprice, btype);

// 2.获取信息

// 根据不同类型调用不同biz层的增加方法或删除方法

IBookBiz ibb = new BookBizImpl();

// 定一个一个maps集合保存结果

Map maps = new HashMap();

// 获取类型进行相对应的判断

String type = request.getParameter("type");

if (type.equals("edit")) {

//获取编号

Integer bid = request.getParameter("bid")!=null? Integer.parseInt(request.getParameter("bid")):0;

try {

// 可能出现异常

ibb.updataBook(bid, book);

// 给出反馈

maps.put("success", true);

} catch (Exception e) {

maps.put("success", false);

}

} else if (type.equals("add")) {

try {

// 可能出现异常

ibb.addBook(book);

// 给出反馈

maps.put("success", true);

} catch (Exception e) {

maps.put("success", false);

}

}

// 5.将内容转换String格式,在使用out对象传入

ObjectMapper mapper = new ObjectMapper();

String writeValueAsString = mapper.writeValueAsString(maps);

// 增加内容到map集合中

PrintWriter out = response.getWriter();

out.write(writeValueAsString);

// 刷新流

out.flush();

// 关闭流

out.close();

}

}

三、JSP部分(组件导入的部分)      

  实现完了以上的步骤,我们进行下一步

         创这么多文件夹得目的:项目的规范。

         因为我们需要使用EasyUI技术完成该项目,所以必须导入相对应的组件(jquery-easyui),可以从EasyUI官网: https://www.jeasyui.net/plugins 上下载您需要的 jQuery EasyUI 版本。

        如果不会弄得话,可观看如下文章的组件下载部分https://blog.csdn.net/m0_60786924/article/details/124580379?spm=1001.2014.3001.5501

        1.下载进行解压,解压完毕后,将 下载好的 Jquery EasyUI 组件 复制到我们已经创建好的文件夹js中,当我们已经完成了这些。 

        2.在common 编写一个公共导入JQuery EasyUI 组件的 NewFile1.jsp 页面 代码如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

href="static/js/jquery-easyui-1.5.5.2/themes/icon.css" charset="UTF-8" />

        3.在WebContent文件夹下方编写      (如果有不理解的可以参考官方:EasyUI 文档,亦或者上方博客内容)

                  ①NewFile.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

<%-- <%@ include file="static/common/NewFile1.jsp" %> --%>

Insert title here

<%@ include file="static/common/NewFile1.jsp" %>

欢迎来到:AJF商城!

©©所有版权归《余生所爱公司》所有!  仿冒必究!本条消息来源于@3302059064qq.com

                ②BookList.jsp

<%@page import="com.fasterxml.jackson.annotation.JsonInclude.Include"%>

<%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

Insert title here

<%@ include file="static/common/NewFile1.jsp" %>

                  ③editBook.jsp         

<%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

Insert title here

<%@ include file="static/common/NewFile1.jsp" %>

        当我们完成了以上全部步骤,我们就可以直接运行 NewFile.jsp 界面,看到效果了。

     后言:

          以上内容为显示的效果图,本文章实现增删改查,分页效果、选项卡、列表等等,本文章只实现了单个图书区域,如需要完善其它的版块,大家可以根据这种模式继续完善。

相关文章

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。