黑马旅游网项目总结与反思

反思

单纯这种项目的话,面试大厂时被面试官说技术老旧,没有用到SSM或者SpringBoot框架,网页又没有上线,也没有用户访问量,更难以谈并发,而且用户密码就直接明文存储在后台数据库,连加密都不做一下(例如哈希),稍微亮点是用到了Redis,虽然用了可是又没怎么用上,而且问你什么用Druid连接池也答不出个所以然。所以说拿这种项目去面大厂会被面试官嫌弃的。这种项目适合大一大二打基础练练手,就这想找工作,靠学历也面不上大厂,老老实实加强自己的代码能力,还有利用这个项目打好MVC基础后,去学习新的技术吧

回顾

  1. 环境:IDEA+Maven
  2. 技术选型:
    1. Web层:Servlet,html,Filter,BeanUtils,Jackson
    2. Service层:Javamail,Redis,Jedis
    3. Dao层:MySQL,Druid,JdbcTemplate
  3. 完成功能:
    1. 注册功能:
      在这里插入图片描述
      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。
      1. 登录功能
        在这里插入图片描述

      登录功能需要输入用户名和密码,然后提交异步请求再服务端要判断用户名是否存在和密码是否正确,再判断用户是否已经激活,成功登录后需要再页面中显示用户名。
      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);
Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐