一、密码修改的功能实现过程:
1、通过前端输入数据:用户名(用作数据库数据查询的条件),新的密码(该用户名的原密码修改为当前输入的密码);
2、点击提交按钮,将数据传送到后端;
3、后端接收数据之后进行相应验证;
4、验证成功则修改数据库信息;
5、修改失败则跳出反馈信息。
二、代码实现
❀密码修改页面
❀页面代码
<%@ page contentType="text/html;charset=GB2312" %>
<%@page language="java" import="java.util.*,myservlet.control.*" import="javax.servlet.http.*"%>
<HTML>
<title>密码修改页面</title>
<HEAD></HEAD>
<BODY style="background:url(image/布朗熊.jpg) ;background-size:cover; ">
<br>
<a href="mine.jsp"><img src="image/箭头.png"/>返回个人中心</a>
<div align="center" >
<br>
<br>
<br>
<br>
<font size=4xp color=white><b>   修改密码</b></font><br><br><br>
<FORM action="HandlePassword" Method="post">
<font color=white size=4xp>登录名称: </font><Input type=text name="logname"><br><br>
<font color=white size=4xp>修改密码: </font><Input type=password name="password"><br><br>
<font color=white size=4xp>确认密码: </font><Input type=password name="again_password"><br><br>
<input type="submit" value="提交" style="background:url(imagepath) no-repeat"/>
<td><Input type=reset name="g" value="重置" style="background:url(imagepath) no-repeat"></td> </tr>
</form>
</BODY>
</HTML>
❀后端代码
servlet:
package myservlet.control;
import mybean.data.*;
import java.sql.*;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;
public class HandlePassword extends HttpServlet
{
public void init(ServletConfig config) throws ServletException {
super.init(config);
try { Class.forName("com.mysql.jdbc.Driver");
}
catch(Exception e){}
}
public String handleString(String s)
{ try{ byte bb[]=s.getBytes("iso-8859-1");
s=new String(bb);
}
catch(Exception ee){}
return s;
}
public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{
this.doPost(request,response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String uri="jdbc:mysql://127.0.0.1:3306/toy_db?"+"user=root&password=123456&characterEncoding=gb2312";
Connection con;
PreparedStatement sql;
String logname = request.getParameter("logname").trim();
String password = request.getParameter("password").trim();
String again_password=request.getParameter("again_password").trim();
response.setContentType("text/html;charset=GB2312");
Login loginBean=null;
HttpSession session=request.getSession(true);
loginBean=(Login)session.getAttribute("loginBean");
String lname=loginBean.getLogname();
if(!lname.equals(logname)){
PrintWriter out=response.getWriter();
out.println("<html><body>");
out.println("<h2>请输入当前使用的用户名<br></h2>");
out.println("<a href=changePassword.jsp>返回</a>");
out.println("</body></html>");
return;
}
else{
//传入参数
if(!password.equals(again_password)){
PrintWriter out=response.getWriter();
out.println("<html><body>");
out.println("<h2>两次密码输入不一致,密码修改失败!<br></h2>");
out.println("<a href=changePassword.jsp>返回</a>");
out.println("</body></html>");
return;
}
boolean boo=password.length()>0;
try{
con=DriverManager.getConnection(uri);
String change="update client set password=?"+"where logname=?";
sql=con.prepareStatement(change);
if(boo){
sql.setString(1, handleString(password));
sql.setString(2, handleString(logname));
int m=sql.executeUpdate();
if(m!=0){
RequestDispatcher dispatcher=request.getRequestDispatcher("/change_sucess.jsp");//转发
dispatcher.forward(request,response);
}
}
else{
PrintWriter out=response.getWriter();
out.println("<html><body>");
out.println("<h2>密码修改失败!<br></h2>");
out.println("<a href=changePassword.jsp>返回</a>");
out.println("</body></html>");
return;
}
}
catch(SQLException exp){
exp.printStackTrace();
}
}
}
}
bean:
package mybean.data;
import java.util.*;
import java.util.Date;
public class Login {
private String logname="",
password;
public void setLogname(String logname){
this.logname = logname;
}
public String getLogname(){
return logname;
}
public void setPassword(String password){
this.password = password;
}
public String getPassword(){
return password;
}
}
上图中红框的代码为密码修改失败之后以新的页面形式输出反馈信息。
上图代码目的为获取前端输入的数据。
❀跳转页面
密码修改成功之后通过跳转页面跳转到登录页面:
❀跳转页面代码
<%@ page contentType="text/html;charset=GB2312" %>
<%@page language="java" import="java.util.*" import="javax.servlet.http.*"%>
<html>
<title>密码修改成功页面</title>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=GB2312"/>
<!-- <meta http-equiv="refresh" content="5;url=login.jsp"> -->
</head>
<body style="background:url(image/qsx2.jpg) ;background-size:cover; ">
<font color=green size=5xp>密码修改成功!</font>
<script type="text/javascript">
var t=5;
setInterval('jump()',1000);
function jump(){
if(t==0){
location="login.jsp";
}
document.getElementById('show').innerHTML=""+t+"秒后跳转到登陆页面";
t--;
}
</script>
<span id=show></span>
</body>
</html>