JavaWeb(八)---书城项目第六阶段-登陆和注册的细节处理

1、登陆—显示用户名

UserServlet 程序中保存用户登录的信息
在这里插入图片描述

修改 login_succuess_menu.jsp
在这里插入图片描述
还要修改首页 index.jsp 页面的菜单 :
在这里插入图片描述

2、登出—注销用户

1、销毁 Session 中用户登录的信息(或者销毁 Session)
2、重定向到首页(或登录页面)。

UserServlet 程序中添加 logout 方法:

 /**
     * 注销
     * @param req
     * @param resp
     * @throws ServletException
     * @throws IOException
     */
    protected void logout(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //1.销毁Session中的用户信息(即销毁Session)
        req.getSession().invalidate();
        //2.重定向到首页
        resp.sendRedirect(req.getContextPath());
    }

修改【注销】的菜单地址:
在这里插入图片描述

3、表单重复提交之-----验证码

表单重复提交有三种常见的情况:
   一:提交完表单。服务器使用请求转来进行页面跳转。这个时候,用户按下功能键 F5,就会发起最后一次的请求。 造成表单重复提交问题。解决方法:使用重定向来进行跳转
  二:用户正常提交服务器,但是由于网络延迟等原因,迟迟未收到服务器的响应,这个时候,用户以为提交失败, 就会着急,然后多点了几次提交操作,也会造成表单重复提交。
   三:用户正常提交服务器。服务器也没有延迟,但是提交完成后,用户回退浏览器。重新提交。也会造成表单重复 提交。
在这里插入图片描述

4、谷歌 kaptcha 图片验证码的使用

谷歌验证码 kaptcha 使用步骤如下:

  • 1、导入谷歌验证码的 jar 包 :kaptcha-2.3.2.jar
  • 2、在 web.xml 中去配置用于生成验证码的 Servlet 程序
    <servlet>
        <servlet-name>KaptchaServlet</servlet-name>
        <servlet-class>com.google.code.kaptcha.servlet.KaptchaServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>KaptchaServlet</servlet-name>
        <url-pattern>/kaptcha.jpg</url-pattern>
    </servlet-mapping>
  • 3、在表单中使用 img 标签去显示验证码图片并使用它
<input class="itxt" type="text" style="width: 90px;" id="code" name="code"/>
<img id="code_img" lt="" src="kaptcha.jpg" style="float: right; margin-right: 40px; width: 110px;height: 40px">

  • 4、在服务器获取谷歌生成的验证码和客户端发送过来的验证码比较使用。
 @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        //获取Session中的验证码
        String token = (String) req.getSession().getAttribute(KAPTCHA_SESSION_KEY);
        //删除Session中的验证码
        req.getSession().removeAttribute(KAPTCHA_SESSION_KEY);

        String code = req.getParameter("code");
        //获取用户名
        String username = req.getParameter("username");
        if (token != null && token.equalsIgnoreCase(code)){
            System.out.println("保存到数据库:" + username);
            resp.sendRedirect(req.getContextPath() + "/ok.jsp");
        } else {
            System.out.println("请不要重新提交表单");
        }
//        //使用重定向解决浏览器F5刷新后,重复提交表单的问题
//        resp.sendRedirect(req.getContextPath() + "/ok.jsp");
    }

切换验证码:

//给验证码绑定单击事件
// 在事件响应的 function 函数中有一个 this 对象。这个 this 对象,是当前正在响应事件的 dom 对象
// src 属性表示验证码 img 标签的 图片路径。它可读,可写 /
$("#code_img").click(function () {
	this.src = "${ basePath }kaptcha.jpg?d=" + new Date();
});
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值