JavaWeb 项目实现(四) 验证旧密码

这篇具有很好参考价值的文章主要介绍了JavaWeb 项目实现(四) 验证旧密码。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.验证旧密码

步骤很简单,从Session中取到当前密码,和修改密码界面得到的旧密码对比,判断是否相等。

特别之处在于实现用到了Ajax,可以不刷新整个页面的情况下与Web服务器进行通信。

2.Ajax

Ajax(Asynchronous JavaScript and XML)是一种用于在Web应用程序中创建交互式用户界面和实现异步数据交换的技术。它使用JavaScript编写的代码,在不刷新整个页面的情况下与Web服务器进行通信,从而实现动态加载内容和更新页面。

用法: 

JavaWeb 项目实现(四) 验证旧密码,web开发,java,web

3.JSON

在使用Ajax的时候,我们看到了数据类型是json,所以来了解一下jason。

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它使用易于读写的文本格式来表示数据,通常用于在客户端和服务器之间传递数据。JSON格式基于JavaScript语言的一个子集,但它可以由很多不同的编程语言解析和生成。

JSON格式由键值对组成,其中键是字符串,值可以是字符串、数字、布尔值、数组、对象或null。例如,下面是一个简单的JSON对象:

```
{
  "name": "John",
  "age": 30,
  "city": "New York"
}
```

JSON格式具有很多优点,例如易于读写、易于解析、轻量级、可读性好等。

JSON已成为Web应用程序中传递数据的常用格式,例如在AJAX请求中传递数据,或者在RESTful API中返回数据。

4.代码实现

上面说到了在AJAX请求中传递数据,或者在RESTful API中返回数据。

所以我们的实现也是一样的,先是js代码:

var oldpassword = null;
var newpassword = null;
var rnewpassword = null;
var saveBtn = null;

$(function(){
	oldpassword = $("#oldpassword");
	newpassword = $("#newpassword");
	rnewpassword = $("#rnewpassword");
	saveBtn = $("#save");
	
	oldpassword.next().html("*");
	newpassword.next().html("*");
	rnewpassword.next().html("*");
	
	oldpassword.on("blur",function(){
		$.ajax({
			type:"GET",
			url:path+"/jsp/user.do",
			data:{method:"pwdmodify",oldpassword:oldpassword.val()},	//Ajax传递的参数
			//path+/jsp/user.do?method=pwdmodify&oldpassword=oldpassword.val();
			dataType:"json",	//主流开发都是用JSON实现前后端交互
			success:function(data){
				if(data.result == "true"){//旧密码正确
					validateTip(oldpassword.next(),{"color":"green"},imgYes,true);
				}else if(data.result == "false"){//旧密码输入不正确
					validateTip(oldpassword.next(),{"color":"red"},imgNo + " 原密码输入不正确",false);
				}else if(data.result == "sessionerror"){//当前用户session过期,请重新登录
					validateTip(oldpassword.next(),{"color":"red"},imgNo + " 当前用户session过期,请重新登录",false);
				}else if(data.result == "error"){//旧密码输入为空
					validateTip(oldpassword.next(),{"color":"red"},imgNo + " 请输入旧密码",false);
				}
			},
			error:function(data){
				//请求出错
				validateTip(oldpassword.next(),{"color":"red"},imgNo + " 请求错误",false);
			}
		});


	}).on("focus",function(){
		validateTip(oldpassword.next(),{"color":"#666666"},"* 请输入原密码",false);
	});

	newpassword.on("focus",function(){
		validateTip(newpassword.next(),{"color":"#666666"},"* 密码长度必须是大于6小于20",false);
	}).on("blur",function(){
		if(newpassword.val() != null && newpassword.val().length > 6
				&& newpassword.val().length < 20 ){
			validateTip(newpassword.next(),{"color":"green"},imgYes,true);
		}else{
			validateTip(newpassword.next(),{"color":"red"},imgNo + " 密码输入不符合规范,请重新输入",false);
		}
	});


	rnewpassword.on("focus",function(){
		validateTip(rnewpassword.next(),{"color":"#666666"},"* 请输入与上面一致的密码",false);
	}).on("blur",function(){
		if(rnewpassword.val() != null && rnewpassword.val().length > 5
				&& rnewpassword.val().length < 20 && newpassword.val() == rnewpassword.val()){
			validateTip(rnewpassword.next(),{"color":"green"},imgYes,true);
		}else{
			validateTip(rnewpassword.next(),{"color":"red"},imgNo + " 两次密码输入不一致,请重新输入",false);
		}
	});

	saveBtn.on("click",function(){
		oldpassword.blur();
		newpassword.blur();
		rnewpassword.blur();
		if(
			oldpassword.attr("validateStatus") == "true"
			&&
			newpassword.attr("validateStatus") == "true"
			&&
			rnewpassword.attr("validateStatus") == "true"){
			if(confirm("确定要修改密码?")){
				$("#userForm").submit();
			}
		}
	});
}
);

再是servlet代码:文章来源地址https://www.toymoban.com/news/detail-622570.html

package com.code.servlet.user;

import com.alibaba.fastjson.JSONArray;
import com.code.pojo.User;
import com.code.service.user.UserService;
import com.code.service.user.UserServiceImpl;
import com.code.util.Constants;
import com.mysql.cj.util.StringUtils;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.Map;

public class UserServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String method = req.getParameter("method");
        if (method.equals("savePwd")) {
            updatePwd(req, resp);
        }else if (method.equals("pwdmodify")) {
            modifyPwd(req, resp);
        }
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }

    private void updatePwd(HttpServletRequest req, HttpServletResponse resp){
        Object object = req.getSession().getAttribute(Constants.USER_SESSION);
        String newPwd = req.getParameter("newpassword");

        if(object!=null && !StringUtils.isNullOrEmpty(newPwd)){
            UserService userService = new UserServiceImpl();
            boolean res = userService.updatePwd(((User)object).getId(), newPwd);
            if(res){

                req.setAttribute(Constants.MESSAGE, "更新密码成功,请成功登录");
                req.removeAttribute(Constants.USER_SESSION);
            }else{

                req.setAttribute(Constants.MESSAGE, "更新密码失败");
            }
        }else {

            req.setAttribute(Constants.MESSAGE, "新密码异常");
        }

        try {
            req.getRequestDispatcher("pwdmodify.jsp").forward(req, resp);
        } catch (ServletException e) {
            throw new RuntimeException(e);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

    private void modifyPwd(HttpServletRequest req, HttpServletResponse resp){
        Object o = req.getSession().getAttribute(Constants.USER_SESSION);
        String oldPwd = req.getParameter("oldpassword");
        Map<String, String > resultMap = new HashMap<String, String>();
        if(o==null){
            resultMap.put("result", "sessionerror");
        } else if (StringUtils.isNullOrEmpty(oldPwd)) {
            resultMap.put("result", "error");
        } else  {
            String pwd = ((User)(o)).getUserPassword();
            if(oldPwd.equals(pwd)){
                resultMap.put("result", "true");
            }else{
                resultMap.put("result", "false");
            }
        }


        try {
            resp.setContentType("application/jason");
            PrintWriter writer = resp.getWriter();
            writer.write(JSONArray.toJSONString(resultMap));
            writer.flush();
            writer.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

到了这里,关于JavaWeb 项目实现(四) 验证旧密码的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • maven如何建立JavaWeb项目并连接数据库,验证登录

    这里是建立建立web项目:Maven如何创建Java web项目(纯干货版)!!!_明天更新的博客-CSDN博客 我们主要演示如何连接数据库验证登录。 1.在webapp目录下创建我们的登录页面:index.jsp    还需要再写一个验证登录成功的页面(如果页面跳转成功就代表登录成功)  内容如下:

    2024年02月13日
    浏览(44)
  • Django教程第4章 | Web开发实战-三种验证码实现

    验证码的存在是为了防止系统被暴力破解攻击,几乎每个系统都有验证码。下面将介绍三种生成验证码方式。 您可以根据你自己的需要进行学习。   安装绘图依赖,利用的是画图模块  PIL  以及随机模块  random  在后台生成一个图片和一串随机数,然后保存在内存中。 编写

    2024年01月15日
    浏览(45)
  • Java实现JSON Web Token(JWT)的生成、解码和验证

    JSON Web Token(JWT)是一种用于安全传输信息的开放标准。它可以用于认证和授权用户,以及在不同系统之间传输数据。在本文中,我们将介绍如何在 Java 中使用 jjwt 库来生成、解码和验证 JWT 引入 jjwt 库 首先,你需要在你的项目中引入 jjwt 库。如果你使用 Maven,可以在 pom.xm

    2024年02月10日
    浏览(61)
  • JavaWeb开发(后端Web开发【一】)

    此文档来源于网络,如有侵权,请联系删除! 什么是Maven Maven是apache旗下的一个开源项目,是一款用于管理和构建java项目的工具。 Apache Apache 软件基金会,成立于1999年7月,是目前世界上最大的最受欢迎的开源软件基金会,也是一个专门为支持开源项目而生的非盈利性组织。

    2024年02月15日
    浏览(48)
  • JavaWeb小项目——【源码】使用Vue+axios+Servlet+Lombok+JDBC+MySQL技术栈实现云笔记管理系统案例的开发

    使用Vue+axios+Servlet+Lombok+JDBC+MySQL技术栈实现云笔记管理系统案例的开发 (一)题目要求 使用Vue+axios+Servlet+Lombok+JDBC+MySQL技术栈实现云笔记管理系统案例的开发 (二)数据库设计(10分) 创建数据库woniu_note (1)用户表:t_user,必要字段包含:用户名(username)、密码(passwd)

    2024年02月09日
    浏览(37)
  • web攻防-通用漏洞&验证码识别&复用&调用&找回密码重定向&状态值

    目录 一、知识点概述 二、找回密码过程中涉及到的安全问题 三、案例演示 验证码回显 修改Response状态值 验证码爆破 四、真实案例1 更改状态值 验证码接口调用 五、真实案例2 用户名重定向 六、安全修复方案 找回密码逻辑机制 - 回显 验证码 指向。 验证码验证安全机制

    2024年02月04日
    浏览(86)
  • [JavaWeb]【六】web后端开发-请求响应

    目录 一  引子 二 请求 2.1 Postman 2.1.1 安装 2.1.2 创建工作空间  2.1.3 添加接口 2.2 简单参数 2.2.1 原始方式(不推荐)  2.2.2 SpringBoot方式-GET(参数名与形参变量名相同)  2.2.3 SpringBoot方式-POST(参数名与形参变量名相同) 2.2.4 SpringBoot方式-POST(参数名与形参变量名不相同) 2.2.5 @Req

    2024年02月12日
    浏览(46)
  • JavaWeb核心、综合案例(详细!Web开发流程)

    目录 案例说明 一、创建MavenWeb项目 二、导入相关依赖 1、导入maven编译插件 2、导入tomacat插件 3、导入servlet依赖 4、导入druid数据库连接池依赖 5、导入mysql依赖 6、导入mybatis依赖 7、导入junit依赖 8、导入mybatis核心配置文件mybatis-config.xml 三、使用Mapper代理 导入MySql映射文件 X

    2024年02月04日
    浏览(42)
  • [JavaWeb]【七】web后端开发-MYSQL

    目录 一 数据库介绍 1.1 什么是数据库  1.2 数据库产品 二 MySQL概述 2.1 下载 2.2 解压 2.3 配置 2.3.1. 添加环境变量 2.3.2. 初始化MySQL 2.3.3. 注册MySQL服务 2.3.4. 启动MySQL服务  2.3.5. 修改默认账户密码 2.4 登录MySQL 2.5卸载MySQL 2.2 数据模型 2.3 SQL简介 三 数据库设计-DDL 3.1 数据库操作 3

    2024年02月12日
    浏览(42)
  • JavaWeb_瑞吉外卖_业务开发Day5-套餐管理, 短信发送, 手机验证码登录

    总结 接收List数据时, 需要加上 @RequestParam 注解 操作2个及2个以上表, 加上 @Transactional 事务注解, 保持数据的一致性. 发送短信 生成验证码 黑马程序员. 瑞吉外卖项目

    2024年02月12日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包