黑马旅游网项目总结与反思
黑马旅游网项目总结环境:IDEA+Maven技术选型:Web层:Servlet,html,Filter,BeanUtils,JacksonService层:Javamail,Redis,JedisDao层:MySQL,Druid,JdbcTemplate完成功能:注册功能:1.1 表单校验:在前台html页面中使用JavaScript,利用正则表达式完成表单校验。使...
黑马旅游网项目总结与反思
反思
单纯这种项目的话,面试大厂时被面试官说技术老旧,没有用到SSM或者SpringBoot框架,网页又没有上线,也没有用户访问量,更难以谈并发,而且用户密码就直接明文存储在后台数据库,连加密都不做一下(例如哈希),稍微亮点是用到了Redis,虽然用了可是又没怎么用上,而且问你什么用Druid连接池也答不出个所以然。所以说拿这种项目去面大厂会被面试官嫌弃的。这种项目适合大一大二打基础练练手,就这想找工作,靠学历也面不上大厂,老老实实加强自己的代码能力,还有利用这个项目打好MVC基础后,去学习新的技术吧
回顾
- 环境:IDEA+Maven
- 技术选型:
- Web层:Servlet,html,Filter,BeanUtils,Jackson
- Service层:Javamail,Redis,Jedis
- Dao层:MySQL,Druid,JdbcTemplate
- 完成功能:
-
注册功能:
1.1 表单校验:
在前台html页面中使用JavaScript,利用正则表达式完成表单校验。使用JQuery框架简化JavaScript的编写。- 实现步骤:
- 为html标签添加id号
- 使用$("#id")获取标签,并获取值
- 定义一个正则表达式,检验值是否符合正则表达式
- 符合返回true,不符合返回false,方法是blur()失去焦点时执行
1.2 异步(ajax)提交表单:
校验通过则发送数据到服务器中-
实现步骤:
- 使用JQuery的语句来发送异步请求: . p o s t ( “ r e g i s t U s e r S e r v l e t ” , .post(“registUserServlet”, .post(“registUserServlet”,(this).serialize(),function(data){});
- 发送post请求,数据以serrialize序列化后发送到后台Servlet,并且回调函数获取返回的数据data,用lambda语句对数据data进行处理
- Servlet中需要先检查验证码是否正确,用户输入的验证码用request.getParameter(“check”);获取,服务器中的验证码利用了会话技术Session共享,要获取存在session中的验证码,首先创建一个session,request.getSession();再获取Attribute:(String)session.getAttribute(“CHECKCODE”);
- 验证码校验成功后再获取用户输入的数据,存入Map集合中。创建一个User对象(User实体类是预先定义好的,对应着数据库中tab_user表的各个字段),使用BeanUtils工具类将用户输入的map集合数据映射到新建的user对象中:BeanUtils.populate(user,map);
- 将数据传入service层的注册方法。service是检查用户是否已经存在,调用Dao层的save方法保存user数据。
- 在Dao层主要是编写连接数据库后的Sql语句,配置好连接池后只需要创建一个JdbcTemplate对象并获取连接池的连接:private JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());
- JdbcTemplate来自于SpringJDBC,用来简化编写sql语句,JDBCUtils是预先自己写好的工具类,连接池的连接操作提前写好,并提供getDataSource()方法来直接获取连接。
- 在Dao层编写Insert into的SQL语句完成插入数据库。
- 注册失败会在service层返回false到servlet,若注册失败则定义一个error信息,并将信息序列化为json,并用response将信息返回html页面中写的回调函数处。
1.3 邮箱激活功能:
数据库中的用户表中有个statu字段,默认值是N表示没有激活,需要用户登录注册邮箱点击激活链接再将字该段改为Y。- 使用MailUtils发送邮件,MailUtils工具类是可以使用网上现存的。
- 邮件内容定义:路径是范围激活功能的Servlet,并用?传一个用户唯一激活码参数,激活码是注册用户时同时存入数据库的,用来指示具体用户。
- 用户收到邮件后,点击链接,访问跳转到activeUserServlet,更好的效果可以选择跳转到具体页面
- Servlet获取激活码code,并传入Service调用dao层方法修改用户表的对应code的记录中statu为Y。
- 登录功能
登录功能需要输入用户名和密码,然后提交异步请求再服务端要判断用户名是否存在和密码是否正确,再判断用户是否已经激活,成功登录后需要再页面中显示用户名。
2.1 登录前台
为登录按钮绑定单击事件,然后将文本框数据用$.post()请求传入后台,回调函数返回flag和错误信息err
2.2 登录后台- 先进行校验验证码
- 获取request的用户名密码,同样适用BeanUtils工具类把数据从map映射到user对象
- 数据传入service层,返回数据为新的user,此时若成功查询出对应的数据,则该新user将会有完整信息,利用返回的user,判读uid是否为空,判断statu字段是否为N。
- 成功通过校验,返回true的信息到前端html页面
- 在Dao层执行查询语句,使用的是template的queryForObject方法
2.3 在header.heml页面中显示用户姓名
用户成功登录后,要在前端页面显示用户名信息,明确告知用户已经登录,提高用户体验。 - 前端页面使用$.get()中的回调函数获取登录的用户名
- 利用在登录的loginServet发出的session中存入的用户名,在当前Servlet中获取共享的用户名数据,然后封装成json数据返回。
- html中利用JQuery对显示用户名的标签进行内容修改:$("#span_username").html(msg);
- 实现步骤:
-
更多推荐
所有评论(0)