在Web开发中,用户登录是非常基础的功能。然而随之而来的,必须要有一套完整的账户管理功能来满足用户需求,其中最基础的操作之一就是修改密码。在本篇文章中,我们会介绍一种简单易学的修改密码方法,结合P以及数据库操作实现密码修改功能。
一、需求分析
在实现密码修改的功能之前,我们需要对需求进行分析,以确保我们开发的功能符合实际需求。对于密码修改功能,我们需要考虑以下几个方面:
1. 安全性:必须要保证密码修改操作是安全可靠的,确保用户的信息不被泄漏。
2. 用户体验:必须要提供简易的操作流程,方便用户快速的修改密码。
3. 数据库操作:必须要将修改后的密码保存到数据库中,以便后续登录验证。
二、实现方式
在分析需求之后,我们可以开始着手实现修改密码功能。以下是修改密码的简易流程:
1. 用户需要在登录状态下进入密码修改页面。
2. 在密码修改页面上,用户需要输入当前密码、新密码以及确认新密码。
3. 当用户填写完毕后,需要点击修改密码按钮。
4. 系统会先对用户输入的信息进行合法性校验,如果用户输入的信息无误,则将用户的新密码存入数据库,并提示用户修改密码成功。
现在,我们可以开始对如何实现以上流程进行讲解。其中,需要用到P页面以及MySQL数据库操作技术。
1. 创建修改密码页面
我们需要创建一个P页面来实现修改密码的功能。在该页面中,我们需要包括以下元素:
– 输入当前密码的文本框
– 输入新密码的文本框
– 输入确认新密码的文本框
– 提交按钮
– 处理密码修改的后台程序(包括表单验证以及数据库操作等)
以下是修改密码页面的代码:
“`
<%@ page language=”java” contentType=”text/html; charset=UTF-8″
pageEncoding=”UTF-8″%>
修改密码
修改密码
当前密码:
新密码:
确认新密码:
“`
2. 编写后台P代码
接下来,我们需要实现管理密码修改操作的后台程序。在该程序中,我们需要完成以下操作:
– 获取用户输入的当前密码、新密码以及确认新密码。
– 对输入的密码进行验证(密码长度、格式等)。
– 对数据库使用SQL语句,将新密码更新至数据库。
– 返回前端页面信息(修改成功或者失败信息)。
以下是修改密码后台程序的代码:
“`
<%@ page language=”java” contentType=”text/html; charset=UTF-8″
pageEncoding=”UTF-8″%>
<%
request.setCharacterEncoding(“UTF-8”);
String oldPwd = request.getParameter(“oldPwd”); //获取用户输入的当前密码
String newPwd = request.getParameter(“newPwd”); //获取用户输入的新密码
String confirmPwd = request.getParameter(“confirmPwd”); //获取用户输入的确认新密码
String sessionID = session.getId(); //获取sessionID
String username = “”; //获取当前登录用户的用户名
//查询当前登录用户的用户名
try{
Class.forName(“com.mysql.jdbc.Driver”);
Connection conn = DriverManager.getConnection(“jdbc:mysql://localhost:3306/userDB?useSSL=false&serverTimezone=GMT%2B8”, “root”, “xxxxx”);
String sql = “select username from user_session where sessionID=?”;
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1,sessionID);
ResultSet rs = pstmt.executeQuery();
while(rs.next()){
username = rs.getString(“username”);
}
pstmt.close();
rs.close();
conn.close();
}catch(Exception e){
e.printStackTrace();
}
//验证密码是否符合要求
if(newPwd.length() 20){
out.println(“alert(‘密码长度应为6~20位!’);location.href=’javascript:history.back(-1);’”);
}else if(!newPwd.matches(“^[a-zA-Z0-9_@.-]+$”)){
out.println(“alert(‘密码格式不正确!’);location.href=’javascript:history.back(-1);’”);
}else if(!newPwd.equals(confirmPwd)){
out.println(“alert(‘两次密码输入不一致!’);location.href=’javascript:history.back(-1);’”);
}
//更新密码到数据库
try{
Class.forName(“com.mysql.jdbc.Driver”);
Connection conn = DriverManager.getConnection(“jdbc:mysql://localhost:3306/userDB?useSSL=false&serverTimezone=GMT%2B8”, “root”, “xxxxx”);
String sql = “update user set password=? where username=?”;
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1,newPwd);
pstmt.setString(2,username);
int num = pstmt.executeUpdate();
pstmt.close();
conn.close();
//密码修改成功
if(num>0){
out.println(“alert(‘密码修改成功!’);location.href=’changePwd.jsp’;”);
}
}catch(Exception e){
e.printStackTrace();
}
%>
“`
在以上代码中,我们首先获取用户输入的当前密码、新密码以及确认新密码等信息,并对其进行格式验证。之后,我们从数据库中查询出当前用户的用户名,并使用SQL语句将修改后的密码更新至数据库。我们返回执行结果给前端页面。
三、
以上就是使用P及数据库操作实现修改密码的简单易学方法。当然,在实际开发当中,我们需要更多的安全验证以及更加完善的逻辑操作,以便保证应用程序的健壮性。希望本篇文章对您有所帮助。
相关问题拓展阅读:
- servlet+jsp修改登陆密码
servlet+jsp修改登陆密码
jsp页面端
/UserDetailServlet?ofplag=updatePassword” method=post>
修改口令
登陆帐号
姓名
原密码
新密码
确认新密码
伍姿
servlet端:
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding(“GBK”);
update(request, response);
}
public void update(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
boolean flag = false;
String msg = “修改密码成功!!”;
String pwd = request.getParameter(“pwd”);//获取前端提慎档交的旧密码
String password = request.getParameter(“password”);//获取提交的新密码
System.out.println(pwd);
System.out.println(password);
//从当前的session中获得当前登录的用户信息
UserInfo userinInfo = (UserInfo)request.getSession().getAttribute(“userinfo”);
UserManager userManager = new UserManager();
System.out.println(userinInfo.getPwd());
//对比用户输入的旧密码是否和数据库中密码一致,如果一致才才修改密码
if (userinInfo.getPwd().equals(pwd)) {
System.out.println(“=======================================”);
//调用业务层去修改密码,并返回是否修改成功的标志。
flag = userManager.updatePassword(userinInfo, password);
if (flag) { //如果flag=true则说明修改密码成功
request.setAttribute(“msg”, msg);
} else {
msg = “修改密码出错,请重新提交!!”;
request.setAttribute(“msg”, msg);
}
} else { //不一致则返回信息告诉用户原密码错误。
msg = “原密码错误,请确认再修改!!”;
request.setAttribute(“msg”, msg);
}
//跳转到指定页面,并显示以上设置的提示。
request.getRequestDispatcher(“/jspPages/homewpage.jsp”).forward(request, response);
}
UserManager类中修改密码的方法
/*
* 修改密码
*/
public Boolean updatePassword(UserInfo userInfo, String password){
String sql = “update userinfo set pwd = ? where userid = ?” ; //设置修改密码sql
System.out.println(sql);
Object args = {password,userInfo.getUserID()}; //sql中问号的参数
//调用数据访问层dao,执行数据库操作。
PersistentStorage persistentStorage = new PersistentStorage();
return (1 == persistentStorage.update(sql, args));
}
PersistentStorage 类中的update方法
public int update(String sql,Object args)
{
int row=0;
/*
* 根据sql语句进行插入数据库操作。
*
* */
dbManager.getCon();
try {
dbManager.pst = dbManager.conn.prepareStatement(sql);
for (int i = 0; i
dbManager.pst.setObject(i + 1, args);
}
row = dbManager.pst.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
dbManager.closeCon();
}
return row;
}
PersistentStorage 类中用到的dbManager类
package com.upc.soft.domain.persistent;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class DbConManager {
public static ResultSet rs = null;
public static Connection conn = null;
public static PreparedStatement pst = null;
public void getCon() {
try {
//加载内存,到DriverManager注册
Class.forName(IConfig.DRIVER);
System.out.println(“加载驱动程序成功”);
//建立公路
conn = DriverManager.getConnection(IConfig.URL+IConfig.DBNAME, IConfig.UNAME, IConfig.PWD);
System.out.println(“得到连接成功”);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
public void closeCon() {
try {
if(rs!=null) {
rs.close();
rs = null;
System.out.println(“rs数据流关闭成功”);
}
if(pst!=null) {
pst.close();
pst = null;
System.out.println(“pst数据流关闭成功”);
}
if(conn!=null) {
conn.close();
conn = null;
System.out.println(“conn数据流关闭成功”);
}
} catch (SQLException e) {
e.printStackTrace();
}
}
关于jsp 修改密码 数据库的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。