一.今日学习内容 路由拆分 2.1 为什么要拆分 完成学生管理系统的增删改查操作之后,我们会发现app.js文件变的很大。 越大的文件越难于维护,所以我们需要将app.js文件进行拆分,让每个文件变的 更小,功能更单一,这样就有利于项目的后期维护了。 原则: 让每个文件都更小,功能更单一 2.2 路由模块拆分 核心思想: 将创建服务器和监听路由拆分成两个模块。 优势: 每个js文件都功能单一,有利于项目维护 app.js: 创建并开启服务器、托管静态资源、注册其他中间件、加载路由 模块 router.js: 监听路由 1) app.js 整体文件 2) 将所有 app.get 路由监听全都剪切到 router.js 文件中 3) 在 router.js 文件中,创建路由对象,再使用路由对象代替app,最后导出路由对 象 4) 在 app.js 文件中加载 router.js 模块,并将其注册为中间件 app.js:专注于创建并启动服务器,加载模块并注册为中间件 router.js:专注于路由监听并处理 2.3 拆分学生信息管理系统 思路: 1) 创建router.js文件,并将所有监听浏览器请求的代码剪切到 router.js中 2) 在app.js 中加载router.js 模块,并将router对象注册为中间件 代码实现: router.js app.js 在实际开发中: app.js:创建并启动服务器,配置模板引擎,加载各种中间件(统一处理静态资 源的中间件,第三方中间件【例如:body-parser】,路由中间件 【router.js】) router.js: 监听路由 3 2. 登录 目标:使用 admin 表中记录的用户和对应的密码进行登录 思路分析: 1) 创建 /login 路由用来显示 login.html页面 2) 创建 /checkLogin 路由 ① 接收数据 --- 表单提交的用户名和密码 ② 编写SQL语句 --- select * from admin where username=? and userpwd=? ③ 执行SQL语句 ④ 处理SQL执行结果 代码实现: 1) 创建 /login 路由用来显示login.html页面 创建 router_login.js 模块 2) 创建 /checkLogin 路由 ① 接收数据 --- 表单提交的用户名和密码 ② 编写SQL语句 --- select * from admin where username=? and userpwd=? ③ 执行SQL语句 ④ 处理SQL执行结果 验证: 不登录,直接请求 127.0.0.1:3000/index , 依然能够正常看到页面。因为在 /index 中没有验证用户是否登录。 验证用户名和密码的操作不能使用普通的技术,而是需要使用 会话控制 技术 3.1 为什么需要会话控制技术 HTTP是无状态协议,它不对之前的发生过的请求和响应的状态进行管理。不可否 认,无状态协议当然也有它的优点。由于不必保存状态,自然可减少服务器的CPU 及内存资源的消耗。从另一方面来说,也正是因为HTTP协议本身是非常简单的,所 以才会被应用在各个场景里。 会话控制技术可以在web浏览器与服务器多次请求/响应过程中,实现跟踪用户的功 能。
|