OA项目笔记
一、创建项目构架
1、创建一个Maven的web工程
1.1修改编译器版本
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>10</maven.compiler.source>
<maven.compiler.target>10</maven.compiler.target>
<spring.version>5.0.2.RELEASE</spring.version>
1.2导入依赖
依赖可以直接从Maven中央仓库下载
1.3在pom中注册资源目录
1.4完善maven的目录结构
- 添加src/main/java目录
- 添加src/main/resources目录
- 将这些目录添加上相应的功能属性
1.5定义mybatis主配置文件
1.6定义Spring配置文件
<context:component-scan base-package="cn.edu.aynu.service"/>
<context:component-scan base-package="cn.edu.aynu.controller"/>
<tx:annotation-driven transaction-manager="transactionManager"/>
1.7修改web.xml版本
1.8修改webapp目录中的资源
- 将系统原型复制到webapp目录
- 将Maven工程中原来自带的index.jsp文件删除
2创建数据库
DROP DATABASE IF EXISTS oa;
CREATE DATABASE oa ;
USE oa ;
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for department
-- ----------------------------
DROP TABLE IF EXISTS department;
CREATE TABLE department (
ID int(11) NOT NULL,
depname varchar(20) DEFAULT NULL,
pid int(11) DEFAULT NULL,
email varchar(30) DEFAULT NULL,
phone varchar(20) DEFAULT NULL,
content varchar(200) DEFAULT NULL,
PRIMARY KEY (ID)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of department
-- ----------------------------
-- ----------------------------
-- Table structure for flow_manage
-- ----------------------------
DROP TABLE IF EXISTS flow_manage;
CREATE TABLE flow_manage (
ID int(11) NOT NULL,
uid int(11) DEFAULT NULL,
flow_name varchar(20) DEFAULT NULL,
flow_uid1 int(11) DEFAULT NULL,
assess1 char(1) DEFAULT NULL,
assess_time1 date DEFAULT NULL,
assess_view1 varchar(50) DEFAULT NULL,
flow_uid2 int(11) DEFAULT NULL,
assess2 char(1) DEFAULT NULL,
assess_view2 varchar(50) DEFAULT NULL,
assess_time2 date DEFAULT NULL,
PRIMARY KEY (ID)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of flow_manage
-- ----------------------------
-- ----------------------------
-- Table structure for meeting
-- ----------------------------
DROP TABLE IF EXISTS meeting;
CREATE TABLE meeting (
ID int(11) NOT NULL,
depid int(11) DEFAULT NULL,
m_type int(11) DEFAULT NULL,
m_name varchar(20) DEFAULT NULL,
uid int(11) DEFAULT NULL,
start_time date DEFAULT NULL,
end_time date DEFAULT NULL,
room_id int(11) DEFAULT NULL,
all_uid varchar(20) DEFAULT NULL,
content varchar(100) DEFAULT NULL,
upload varchar(30) DEFAULT NULL,
PRIMARY KEY (ID)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of meeting
-- ----------------------------
-- ----------------------------
-- Table structure for meeting_room
-- ----------------------------
DROP TABLE IF EXISTS meeting_room;
CREATE TABLE meeting_room (
ID int(11) NOT NULL,
room_name varchar(20) DEFAULT NULL,
room_content varchar(100) DEFAULT NULL,
room_pic varchar(30) DEFAULT NULL,
PRIMARY KEY (ID)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of meeting_room
-- ----------------------------
-- ----------------------------
-- Table structure for meeting_type
-- ----------------------------
DROP TABLE IF EXISTS meeting_type;
CREATE TABLE meeting_type (
ID int(11) NOT NULL,
fid int(11) DEFAULT NULL,
name varchar(20) DEFAULT NULL,
PRIMARY KEY (ID)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of meeting_type
-- ----------------------------
-- ----------------------------
-- Table structure for mess_group
-- ----------------------------
DROP TABLE IF EXISTS mess_group;
CREATE TABLE mess_group (
ID int(11) NOT NULL,
g_name varchar(20) DEFAULT NULL,
g_content varchar(50) DEFAULT NULL,
uid int(11) DEFAULT NULL,
PRIMARY KEY (ID)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of mess_group
-- ----------------------------
-- ----------------------------
-- Table structure for message
-- ----------------------------
DROP TABLE IF EXISTS message;
CREATE TABLE message (
ID int(11) NOT NULL,
g_id int(11) DEFAULT NULL,
name varchar(20) DEFAULT NULL,
sex char(1) DEFAULT NULL,
phone varchar(20) DEFAULT NULL,
MSN varchar(20) DEFAULT NULL,
address varchar(30) DEFAULT NULL,
PRIMARY KEY (ID)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of message
-- ----------------------------
-- ----------------------------
-- Table structure for newlabel
-- ----------------------------
DROP TABLE IF EXISTS newlabel;
CREATE TABLE newlabel (
ID int(11) NOT NULL AUTO_INCREMENT,
label_name varchar(20) DEFAULT NULL,
label_content varchar(100) DEFAULT NULL,
pid int(11) DEFAULT NULL,
PRIMARY KEY (ID)
) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of newlabel
-- ----------------------------
INSERT INTO newlabel VALUES ('1', '体育新闻', '体育新闻体育新闻体育新闻', null);
INSERT INTO newlabel VALUES ('2', '娱乐新闻', '娱乐新闻娱乐新闻娱乐新闻', null);
INSERT INTO newlabel VALUES ('3', '时政新闻', '时政新闻时政新闻时政新闻', null);
INSERT INTO newlabel VALUES ('4', '国际足球', '国际足球国际足球', '1');
INSERT INTO newlabel VALUES ('5', 'CBA', '中国篮球中国篮球', '1');
INSERT INTO newlabel VALUES ('6', '武林风', '河南武林风', '1');
INSERT INTO newlabel VALUES ('7', '网球', '网球网球', '1');
INSERT INTO newlabel VALUES ('8', '羽毛球', '羽毛球羽毛球', '1');
INSERT INTO newlabel VALUES ('9', '乒乓球', '乒乓球乒乓球', '1');
INSERT INTO newlabel VALUES ('10', '中超联赛', '中超联赛中超联赛', '1');
INSERT INTO newlabel VALUES ('11', '体坛名将', '体坛名将体坛名将', '1');
INSERT INTO newlabel VALUES ('12', '体坛快讯', '体坛快讯体坛快讯', '1');
INSERT INTO newlabel VALUES ('13', '内地影讯', '内地影讯内地影讯', '2');
INSERT INTO newlabel VALUES ('14', '内地影星', '内地影星内地影星', '2');
INSERT INTO newlabel VALUES ('15', '港台影星', '港台影星港台影星', '2');
INSERT INTO newlabel VALUES ('16', '欧美影讯', '欧美影讯欧美影讯', '2');
INSERT INTO newlabel VALUES ('17', '日韩影讯', '日韩影讯日韩影讯', '2');
INSERT INTO newlabel VALUES ('18', '今日历史', '今日历史今日历史', '3');
INSERT INTO newlabel VALUES ('19', '中央要闻', '中央要闻中央要闻', '3');
INSERT INTO newlabel VALUES ('20', '地方要闻', '地方要闻地方要闻', '3');
INSERT INTO newlabel VALUES ('21', '国际动态', '国际动态国际动态', '3');
-- ----------------------------
-- Table structure for newmanage
-- ----------------------------
DROP TABLE IF EXISTS newmanage;
CREATE TABLE newmanage (
ID int(11) NOT NULL,
uid int(11) DEFAULT NULL,
labelid int(11) DEFAULT NULL,
title varchar(20) DEFAULT NULL,
content varchar(200) DEFAULT NULL,
time date DEFAULT NULL,
PRIMARY KEY (ID)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of newmanage
-- ----------------------------
-- ----------------------------
-- Table structure for user_duty
修改login.htm
* 将htm扩展名修改为jsp
* 在文件头部添加page指令
> <%@ page contentType="text/html;charset=UTF-8" language="java" %>
* 修改login.jsp文件第31-35行代码为如下内容
if(name=="admin" && pwd=="admin")
{
location.href="../html/index.htm";
return true;
}
修改index.htm
修改left.htm
修改"栏目管理.htm"
三、完成查询功能
newslabercontroller方法功能
查询出所有一级栏目信息
将查出的信息写入request域
查询出全部结果中的第一页
查询一级栏目
select* from
where pid is null
而不是where pid = null
创建实体类:newslabel栏目
定义属性中包含子栏目
Set
若NewsLabel为子栏目,应包含关联属性
因此是关联表
创建page实体类 vo
页码:pageno(给定)
起始索引:pageStartIndex(计算)
起始索引为0,计算出来的 = pageNumber(size-1)
页面大小:pageSize(给定)
总记录数:totalRows
总页数:totalpages
当前页所包含的详情(数据库查询)
set
泛型:
无参构造器
带参构造器:包含给定数据即可(页码、页面大小)
注意:带参构造器和无参构造器

算出页数:
例如: 21/3=7;
22/3=8
当有余数的时+1
页数判断代码:

page实现类代码:

概念区分:
- bean:实体类,一般其都是具有id属性,与DB中某表具有对应关系,还有的习惯于称其为entity、po(persistant object)
- vo: value object,值对象,一般不具有id属性,与DB中是表没有对应关系,其作用是在类与页面传值
- dto:data transfer object,数据传输对象,一般不具有id属性,与DB中是表没有对应关系,其作用是在类间传值
四、完成删除功能
EL表达式更改父栏目界面,显示父栏目的上一栏目无
页面跳转的细节
—————————————————————————————————————————————
完成删除功能
- 删除后应该还显示删除前的页面:需要传递三个参数
- id
- pageno

- 数据库表要设置外键约束,否则删除会出错
- 当删除一级栏目时,仅仅删除一级栏目,子栏目没有删除
- 两种方案:
①不允许删除一级栏目
②级联删除
问题:
- 当删除一级栏目时,仅仅删除了一级栏目,子栏目没有删除;应当是一级栏目删除时,采取级联删除,或者不允许删除一级栏目
Ajax、json、jQuery完成删除
-
这些语句无作用的原因是:没有加入MVC的注解驱动
级联删除
- 查询出id的所有子栏目
- 删除所有子栏目
- 删除id栏目(父栏目)


子栏目删除的问题
- 当前页有一条信息,删除后,当前页码大于总页数
- 解决办法:

- 当子栏目全部删除时,出现错误(-3,3)
- 解决办法

- 当子栏目全部删除时,即pageno<=0,则不用执行分页操作,显示友好的提示信息

五、完成修改功能
修改前的查询

查询时显示当前所要修改栏目的父栏目信息


修改

问题1:修改内容之后点一下刷新才能显示(关闭刷新内容时同理)
解决方案:修改后可直接看见修改内容,不用再点刷新

问题2:把栏目变为一级栏目时应该是null,却变成0
解决方案:赋值为null

六、完成插入功能
添加


浙公网安备 33010602011771号