一.项目的思路和流程(一)
1.用户模块 userServlet
通过actionName的值来判断当前做什么操作
登录操作 actionName=login
退出操作 actionName=logout
加载头像 actionName=userHead
验证昵称的唯一性 actionName=checkNick
修改用户信息 actionName=updateInfo
2.分层思想:
Web层:
接收请求(接收参数)
响应数据(页面跳转)
Service层:
业务逻辑(各种判断)
Dao层:
JDBC操作(增删改查)
3.用户登录
前台:
需要用form标签将表单元素包裹起来,并且表单元素要设置name属性值和id属性值
form标签:
action属性、method属性设置为post、id属性
表单元素:
姓名文本框:
name属性值和id属性值
密码文本框:
name属性值和id属性值
隐藏域:
name=actionName,value=login;表示当前要执行的操作为用户登录
复选框:
记住密码。需要设置name属性值,并且指定value的值;当复选框被选中时,则得到value的值;
span标签:显示错误提示信息,需要设置id属性值
判断登录按钮的点击事件
1)得到用户名和密码文本框的值(id选择器)
2)判断值是否为空
如果为空,显示错误提示信息
3)如果不为空,提交表单(提交表单到userServlet)
后台响应数据后,通过el表达式获取回显数据和错误提示信息
后台:
Web层: 接收请求(接收参数)、响应数据(页面跳转)
1)接收前台传递的参数(用户名和密码)
2)调用Service的方法,返回登录结果(返回封装类ResultInfo:状态码code、提示信息msg、返回的对象)
3)根据登录结果,跳转不同的页面
登录失败,跳转到登录页面(将resultInfo对象设置到request域对象中,请求转发跳转到登录页面)
登录成功,跳转到首页Servlet中(1、将用户对象存到session作用域中2、判断是否记住密码,如果是则存cookie对象3、重定向跳转到首页Servlet)
注:首页Servlet中的方法会查询首页显示所需要的数据
Service层: 业务逻辑(各种判断)
得到封装类ResultInfo对象
设置ResultInfo对象中返回的对象(用来做回显的用户对象)
1)判断参数是否为空(必填参数)
如果为空,设置ResultInfo对象的code=0,msg="xxx不能为空",返回 resultInfo对象
2)调用Dao层的查询方法,通过用户名查询用户对象,返回的是 用户对象user
3)判断用户对象是否为空
如果为空,设置ResultInfo对象的code=0,msg="用户名不存在!",返回 resultInfo对象
4)将前台传递的密码加密(数据库中的密码是加密过的)
5)将前台传递的密码与数据库中查询到的密码作比较
如果不相等,设置ResultInfo对象的code=0,msg="用户密码不正确!",返回 resultInfo对象
6)如果相等,设置ResultInfo对象的code=1,msg="登录成功!",返回 resultInfo对象
Dao层: JDBC操作(增删改查)
通过用户名查询用户对象
二. log4j日志的使用
1、将所需的jar包拷贝到项目中的lib目录下
log4j-1.2.17.jar、slf4j-api-1.7.12.jar、slf4j-log4j12-1.7.12.jar
2、加入配置文件
百度直接搜索log4j的配置文件,在项目中新建log4j.properties文件,将内容拷贝进来即可
3、使用日志工厂类
// 记入日志
private static Logger logger = LoggerFactory.getLogger(UserDao.class);
//记录日志
logger.info("打印内容 ");
4、通过log4j.properties文件中指示的路径去查看:
【log4j日志能够将生成的结果和要打印的东西生成在文件中,这样子就可以去文件中查看输出的结果,因为控制台是一直会输出的就会将你原来输出的给覆盖掉,但是文件中的记录是一直在的】
三.JUnit的使用
1、在src右键,选择Other,搜索Test,选择JUnit Test Case
2、设置包名和类型
3、确认加载Junit的类库