-
超市订单管理系统(6)-ajax验证旧密码
这个功能只在servlet做就可以了,这个是和修改密码一块的servlet
1.引入json格式转换的依赖,引入依赖后如果没有自动加载,就右键项目-》maven-》reload project
1 <dependency> 2 <groupId>com.alibaba</groupId> 3 <artifactId>fastjson</artifactId> 4 <version>1.2.9</version> 5 </dependency>
2.编写servlet
1 package com.xiaoma.servlet.user; 2 3 import com.mysql.jdbc.StringUtils; 4 import com.xiaoma.pojo.User; 5 import com.xiaoma.service.user.UserService; 6 import com.xiaoma.service.user.UserServiceImpl; 7 import com.xiaoma.util.Constants; 8 import javax.servlet.ServletException; 9 import javax.servlet.http.HttpServlet; 10 import javax.servlet.http.HttpServletRequest; 11 import javax.servlet.http.HttpServletResponse; 12 import java.io.IOException; 13 import java.io.PrintWriter; 14 import java.util.HashMap; 15 16 import com.alibaba.fastjson.*; 17 18 public class UserServlet extends HttpServlet { 19 @Override 20 protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 21 String method = req.getParameter("method"); 22 if (method != null&&method.equals("savepwd")) { 23 this.updataPwd(req,resp); 24 }else if(method!=null && method.equals("pwdmodify")){ 25 this.pwdModify(req,resp); 26 } 27 } 28 29 @Override 30 protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 31 doGet(req, resp); 32 } 33 34 //修改密码,把方法提出来,实现servlet的复用 35 public void updataPwd(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 36 //获取用户session 37 Object o = request.getSession().getAttribute(Constants.USER_SESSION); 38 //拿到前端的newpassword参数 39 String newpassword = request.getParameter("newpassword"); 40 System.out.println("Servlet:"+newpassword); 41 boolean flag = false; 42 //当密码不为空并且session也不为空往下走 43 if (o != null && !StringUtils.isNullOrEmpty(newpassword)) { 44 UserService userService = new UserServiceImpl(); 45 //拿到用户id和密码 46 flag = userService.updatePwd(((User) o).getID(), newpassword); 47 if (flag) { 48 request.setAttribute(Constants.USER_SESSION, "修改密码成功,请退出并使用新密码重新登录!"); 49 //如果密码修改成功就吧session移除掉 50 request.getSession().removeAttribute(Constants.USER_SESSION);//session注销 51 } else { 52 request.setAttribute(Constants.USER_SESSION, "修改密码失败!"); 53 } 54 } else { 55 request.setAttribute(Constants.USER_SESSION, "修改密码失败!"); 56 } 57 request.getRequestDispatcher("pwdmodify.jsp").forward(request, response); 58 } 59 60 //验证旧密码,我们不用再从数据库里查找旧密码,因为我们登录了已经,那么session中就会存在密码,就可以通过session获取登录密码 61 //所以我们只要将session中的密码与前端输入的密码进行对比就可以了 62 public void pwdModify(HttpServletRequest req, HttpServletResponse resp){ 63 //获取session中的id 64 Object o = req.getSession().getAttribute(Constants.USER_SESSION); 65 //获取js中的ajax请求中的pwdmodify,这个验证旧密码的ajax中的data:{method:"pwdmodify",oldpassword:oldpassword.val()} 66 //其中method就相当于一个key,oldpassword是获取的前端的值 67 String oldpassword=req.getParameter("oldpassword"); 68 //使用map存放ajax请求中的那好几个数据 69 HashMap<String, String> resultMap = new HashMap<String,String>(); 70 71 //如果获取的session对象o为空,说明session过期了或者失效了 72 if (o == null) { 73 //result为pwdmodify.js中的旧密码验证ajax中的result,sessionerror为session过期时对应的请求 74 resultMap.put("result","sessionerror"); 75 }else if(StringUtils.isNullOrEmpty(oldpassword)){ 76 //当用户输入的旧密码为空的时候 77 resultMap.put("result","error"); 78 }else{ 79 //当密码不为空且session存活的时候,就去拿到session中的密码 80 String userPassword = ((User) o).getUserPassword(); 81 //当session中的密码和旧密码一样的时候,就成功,否则就失败 82 if (userPassword.equals(oldpassword)) { 83 resultMap.put("result","true"); 84 }else{ 85 resultMap.put("result","false"); 86 } 87 } 88 89 //下面就是把数据给Ajax接收,先将map数据变为json数据 90 try { 91 resp.setContentType("application/json"); 92 PrintWriter writer = resp.getWriter(); 93 //将map集合中的数据转为json字符串 94 writer.write(JSONArray.toJSONString(resultMap)); 95 writer.flush(); 96 writer.close(); 97 } catch (IOException e) { 98 e.printStackTrace(); 99 } 100 } 101 }
效果图:
来源:https://www.cnblogs.com/XiaoMaGuai/p/15451048.html
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
SQL Server -- 解决存储过程传入参数作为s
关于JS定时器的整理
JS中使用Promise.all控制所有的异步请求都完
js中字符串的方法
import-local执行流程与node模块路径解析流程
检测数据类型的四种方法
js中数组的方法,32种方法
前端操作方法
数据类型
window.localStorage.setItem 和 localStorage.setIte
如何完美解决前端数字计算精度丢失与数