企业实训期间,我们跟随企业从业人员学习了web相关的基本知识,并且开发了公证处的部分后端。由于时间紧迫,并且是边学边做进程十分缓慢,在企业实训课时上完后,我们的后端开发进程仍然差很多。在企业实训结束后,我们也没有项目的需求文档,这样进行后续的开发就十分繁琐麻烦。
企业实训期间进行的公证处后端开发,主要进行了MVC三层开发1、表现层(UI)2、业务逻辑层(BLL) 3、数据访问层(DAL)实现了网页从数据库中提取数据,前端显示相关的信息图片。开发了网站的后端管理,实现了用户名、验证码、密码登录,注册。后端对前端的信息、图片进行管理。
所做项目的优势是网站内容丰富,信息全面,可以给用户周到的服务,起到很好的企业宣传作用。
局限性是:没有设置实时的用户交互,这样不能很好的了解用户需求,给予用户最及时,周到的服务。
未来发展:网站未来可以做成私人订制是网站,网站根据用户喜好,工作需求,呈现出不同的网站。每个用户可以及时的和企业员工进行交互,给予用户更好的用户体验。
代码有待完善情况:
使用dbutils能极大简化jdbc编码的工作量。
数据库连接池技术的优点由于数据库连接得以重用,避免了频繁创建,释放连接引起的大量性能开销。在减少系统消耗的基础上,另一方面也增加了系统运行环境的平稳性,更快的系统反应速度。
使用log4j纪录操作,能够详细的知道错误的原因。避免控制台并不出现日志的窘境。
事务处理机制在程序开发过程中有着非常重要的作用,它可以使整个系统更加安全。
增加数据库的备份与修复模块,是数据库更加安全。等等
现在把自己开发过程中遇到的各种失误总结一下:
由于初期的项目计划书,各种不完善,给之后敲代码带来了不少的麻烦,自己的数据库有哪些字段都记不清楚,总是不停的去查看数据库,这给开发效率带来了很大的障碍。
数据库各种之间的关系没有梳理清楚,就胡乱的建各种表,导致后期重新返工浪费了大量的时间。
创建数据库时数据类型不小心设置错误,在测试功能时程序无法运行,编译器又不报错,查询许久时间才找到这个错误。浏览器、tomcat、编译器有可能出现异常导致正常的程序无法显示,运行。
用户密码,varchar类型,设置了20位,因为当时认为用户的密码最长是20位,结果写完登录页面后发现无法登录,反复检查流程发现没有任何逻辑上的错误?后来多方查询才知道密码是经过MD5加密的,加密后的密码是32位的,可是字段的长度只有20位。
还有把用户资料的修改和修改密码写在了同一个页面,这样修改用户资料的同时发现密码全都被重置了,原理很简单就是提交表单的同时,如果密码框中是空就把值为空的密码传递到了数据库,密码当然被修改了。
犯的最低等的错误就是把’= =’写成了赋值的=。
网络汽车租赁网站开发过程以及效果如下:
整个项目开发步骤如下
1.搭建环境
1.1 导开发包
mysql驱动
dbutils框架
c3p0连接池
beanutils框架
log4j
commons fileupload
commons io
jstl开发包
我们这个系统采用使用dbutils能极大简化jdbc编码的工作量。
数据库连接池技术的优点由于数据库连接得以重用,避免了频繁创建,释放连接引起的大量性能开销。在减少系统消耗的基础上,另一方面也增加了系统运行环境的平稳性,更快的系统反应速度。
使用log4j纪录操作,能够详细的知道错误的原因。避免控制台并不出现日志的窘境。
事务处理机制在程序开发过程中有着非常重要的作用,它可以使整个系统更加安全。
1.2 创建组织程序的包
创建组织jsp的目录:
在WebRoot下新建manager目录,保存后台相关的jsp
1.在webroot下新建一个manger.jsp页面,这个页面代表后台首页,这个页面是个分真页面,代码如下:
<frameset rows="18%,*">
<frame
src="${pageContext.request.contextPath}/manager/head.jsp"
name="head">
<frameset cols="15%,*">
<frame
src="${pageContext.request.contextPath}/manager/left.jsp"
name="left">
<frame src="#" name="right">
</frameset>
</frameset>
2、在WebRoot下新建client目录,保存前台相关的jsp
3.创建工程所需的数据库
create database carstore;
use carstore;
4.创建一些全局的工具类和过滤器
JdbcUtils
WebUtils
CharacterEncodingFilter 这个过滤器是解决所有的乱码问题
HtmlFilter
TransactionFilter
事务处理机制在程序开发过程中有着非常重要的作用,它可以使整个系统更加安全。
DaoFactory
1 透明化:
商业对象可以在完全不知道数据源如何具体实现的情况下来使用数据源. 访问数据源是透明的,因为实现细节已经被隐藏进了DAO.
2 迁移简单化:
DAO 层的出现,使得应用程序向不同的数据库实现进行迁移变的容易.商业对象可以对底层数据实现一无所知.这样,迁移只涉及到了对DAO层的修改. 另外,如果使用工厂策略,则使为每一种底层数据实现提供一个具体的工厂实现成为可能.在这种情况下,迁移到一种不同的数据实现,其实就相当于为这个应用程序再提供一个新的工厂实现.
3 减少在商业对象中的编程难度.
由于DAO管理着所有的数据访问细节,因而大大简化了在商业对象和其他使用DAO的数据客户端里的代码.所有的实现细节相关的代码比如(SQL 语句)都包含在DAO而不在商业对象中. 这样使得代码变的更加健壮而且大大提高了开发效率.
2.设计实体
Category
private String id;
private String name;
private String description;
Car
private String id;
private String name;
private double price;
private String driver;
private String image; //记住汽车的图片的位置
private String description;
private Category category;
Order
private String id;
private Date ordertime; //下单时间
private boolean state; //订单状态
private double price; //订单总价
private User user; //记住下单人
private Set orderitems; //记住订单所有的订单项
OrderItem
private String id;
private int quantity;
private double price;
private Car car; //记住订单项代表的是哪本书
User
private String id;
private String username;
private String password;
private String phone;
private String cellphone;
private String email;
private String address;
3.设计表
create table user
(
id varchar(40) primary key,
username varchar(40) not null unique,
password varchar(40) not null,
phone varchar(20) not null,
cellphone varchar(20) not null,
email varchar(40) not null,
address varchar(255) not null
);
create table category
(
id varchar(40) primary key,
name varchar(40) not null unique,
description varchar(255)
);
create table car
(
id varchar(40) primary key,
name varchar(40) not null unique,
price decimal(8,2) not null,
driver varchar(40) not null,
image varchar(255) not null,
description varchar(255),
category_id varchar(40),
constraint category_id_FK foreign key(category_id) references category(id)
);
create table orders
(
id varchar(40) primary key,
ordertime datetime not null,
state boolean not null,
price decimal(8,2) not null,
user_id varchar(40),
constraint user_id_FK foreign key(user_id) references user(id)
) ;
create table orderitem
(
id varchar(40) primary key,
quantity int not null,
price decimal(8,2) not null,
book_id varchar(40),
constraint car_id_FK foreign key(car_id) references car(id),
order_id varchar(40),
constraint order_id_FK foreign key(order_id) references orders(id)
);
4.写dao
5.写service
6.做web层
//为保存备份信息,需要新建一个库
create database carstore_bak;
use carstore_bak;
create table dbbak
(
id varchar(40) primary key,
filename varchar(255) not null,
baktime datetime not null,
description varchar(255)
);
对所完成项目开展小规模用户体验评估,分析结果并针对发现的问题提出相应的建议或策略。
进行完小规模的用户体验评估后,发现我们的用户界面很差,租车时选择时间需要多次点击一小时一小时的累加,没有用户和客服的实时交互,图片不能够点击大,每辆汽车只有一张拖点,客户不能很好的观察汽车的外观。没有很好的匹配算法,不能根据客户需求匹配出合适顾客的汽车。没有GPS地点分类,有可能出现北京的顾客租到海南的汽车等等各种问题。
建议:
学习网页设计相关知识,参考优秀的网页设计作品,努力制作出美观实用的网站。增加租车时间选择模块和用户与客服沟通模块。每辆汽车设置为可增加多个图片,学习算法知识,使用合理的算法帮助用户匹配到最合适的汽车,每辆汽车增加地址信息,讲顾客和汽车距离作为匹配的条件之一。
以下是整个网站的个个功能模块的截图
主页
汽车分类
预定成功
后台管理