Jsp—02—项目:某某某管理系统--登录注册退出模块
一、开发文档编写
项目名称:
- 后台管理系统
项目需求:
- 实现用户登录
- 实现用户退出
- 实现用户注册
功能分析:
- 用户登录: 根据用户名和密码查询用户信息。查到则登录成功,查不到则登录失败。
- 用户退出: 销毁session
- 用户注册: 将用户注册信息插入数据库
数据库设计:
- 用户表:t_user
- 用户id uid
- 用户名 uname
- 用户密码 pwd
- 用户性别 sex
- 用户年龄 age
- 出生日期 birthday
SQL语句设计:
- 用户登录: select * from t_user where uname=? and pwd=?
- 用户注册: insert into t_user values(default,?,?,?,?,?)
-----------------------------------------------------
问题:
现在我们一个请求或者一个独立的业务逻辑都单独进行一个Servlet的创建进行请求处理。
但是一个网站的功能是非常的多,如果每个都创建单独的Servlet进行处理,这样造成Servlet过多。造成资源浪费。
解决:
服务器在接收到浏览器发送的请求后,会调用对应的Servlet进行请求处理。
然后调用Servlet中的Service方法进行处理。
我们将不同功能的处理封装成对应的方法。
在service方法中调用其对应的功能处理方法进行请求处理。
这样Servlet我们只需要一个。
新的问题:
如何在service方法中实现根据请求动态的调用其功能处理方法呢?
解决:
使用反射。
注意:
请求中需要附带要执行的方法名称。
MVC分层开发:
二、开发步骤:
-
登录模块
1. 我们开发一般用uname 和 pwd,所以把login.jsp中的这部分属性改成uname和pwd;
2. 在login.jsp中, 他的form表单会提交到index.html, 我们让他提交到main.jsp;
3. 更改css和js的动态绝对路径; 要知道, jsp中,路径的第一个/表示什么! (表示已经进入到了服务器根目录)
4. login.jsp中, 让form表单提交到控制层的Employees Servlet中;
5.在控制层的EmployeesServlet中, 调用model层的service方法;
然后根据登录成功还是失败, 重定向到不同位置;
成功则重定向到main.jdp; 失败则重定向到login.jsp;
6.我们再回到login.jsp;
获取session, 如果sessin的flag是false, 说明登录失败了; 我们要在login.jsp中打印这句话---用户名或密码错误!
7.在mian.jsp中, 我们添加一个新功能, 即在主页上显示------欢迎 '用户名' ,登录成功; 这句话;
我们该怎么做呢 ?
利用session, 获取uname标签里的值即可;
-
退出模块
1.在main.jsp中, 把href标签的路径, 改成控制层的OutServlet, 这个servlet主要用来处理用户的退出请求;
2.创建OutServlet, 在销毁当前登录对象的session, 重定向到login.jsp
-
注册模块
1.在login.jsp中,添加一个注册标签, 点击此标签, 将会跳转到 register.jsp注册页面中;
2.在register.jsp页面中, 填写好个人信息后, 点击提交, 页面会将form表单发送到RegisterServlet中;
3.控制层的Register Servlet, 在调用service层的方法, 执行insert语句后, 会重定向到login.jsp;
4.login.jsp根据session里的信息, 跳出"注册成功"的表示语;