实验目的:
了解web应用程序开发的流程
了解MVC设计思想
进一步提高Java面向对象编程的能力
掌握MySQL数据库的基本操作
掌握Java访问/操作MySQL数据库的基本操作
实验步骤:
一、需求分析
二、设计
1、数据库设计
(1)角色表role
字段名 |
字段类型 |
备注 |
roleId |
int |
角色编号(主键,自动编号) |
roleName |
varchar(20) |
角色名(本系统两种角色,分别是普通用户和管理员) |
输入两条记录
roleId |
roleName |
2 |
普通用户 |
1 |
管理员 |
(2)用户表member
字段名 |
字段类型 |
备注 |
userId |
int |
用户编号(自动编号,主键) |
userName |
varchar(50) |
用户名(唯一) |
password |
varchar(255) |
密码 |
roleId |
int |
角色编号(外键) |
realName |
varchar(50) |
姓名 |
输入2条记录进行测试:
userId |
userName |
password |
roleId |
realName |
1 |
mike |
123456 |
0 |
刘玄德 |
2 |
admin |
123456 |
1 |
任我行 |
(3)分类表 category
字段名 |
字段类型 |
备注 |
categoryId |
int |
分类编号(主键,自动编号) |
categoryName |
varchar(50) |
分类名称 |
(4)新闻表 news
字段名 |
字段类型 |
备注 |
newsId |
int |
新闻编号(主键,自动编号) |
title |
varchar(255) |
新闻标题 |
content |
varchar(5000) |
新闻内容 |
userId |
int |
作者(即用户编号,外键) |
postTime |
datetime |
发表时间(默认值为当前时间(Current_timestamp()) |
hits |
int |
点击次数(默认值为0) |
categoryId |
int |
分类编号(外键) |
2、项目设计
(1)新建web项目news
(2)web UI(用户界面)设计
bootstrap
a.设计统一的导航栏
b.设计登录界面(模态框)
c.设计注册界面(模态框)
三、开发
1、实现登录功能。
mysql加密函数:
password():早期的加密函数,8.x已移除了。
md5():5.x or 8.x
sha():5.x or 8.x
(1)登录验证
(2)cookie记住用户名和密码
(3)session存储登录用户的信息
2、实现注册功能
(1)将填写的用户信息写入数据库
(2)在写入之前进行数据验证
客户端验证(js验证):
html+css+js
js:行为,表单验证和增强网页动态效果。
js代码可以在网页的任何位置嵌入,以<script>来标记。
获取DOM对象的方法:
如果是表单元素,可以直接通过name得到。
比如:form2.userName.value
正则表达式
正则表达式对象:
(1)/<正则表达式>/[参数]
(2)new Regex(<正则表达式>)
调用正则表达式的方法:
格式:<正则表达式对象>.test(<字符串>)
功能:判断指定的字符串是否匹配正则表达式,返回值是bool型。
正则表达式的模式:
^:字符开始,例如:^[0-9]
$:字符结束,例如:[a-f]$
汉字的Unicode编码范围:u4E00-u9FA5
客户端数据验证
服务器端数据验证
检测用户名是否存在
onblur:是一个失去焦点事件