lisliefor
发贴: 287
积分: 7
|
于 2006-06-22 11:45
MVC模式: **修改密码的页面:UpdatePassword.jsp <%@ page language="java" contentType="text/html; charset=GBK" pageEncoding="GBK"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=GBK"> <title>password</title> <% String msg = (String)request.getAttribute("msg"); msg = (msg==null)?"":msg; //第一次进入该页面msg获取过来的值为空 %> </head> <body> <br> <%=msg %> <form name="up" method="post" action="/Example/UpdateServlet"> <br>Enter old password: <input type="password" name="oldpsw"> <br>Enter new password: <input type="password" name="newpsw"> <br>Enter password again: <input type="password" name="repsw"> <br> <input type="submit" name="s" value="提交"> <input type="reset" name="r" value="重置"> </form> </body> </html>
**相应servlet:UpdateServlet package update;
import java.io.IOException; import java.util.ArrayList;
import javax.servlet.RequestDispatcher; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;
public class UpdateServlet extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet { private static final String CONTENT_TYPE = "text/html; charset=GBK"; public UpdateServlet() { super(); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //设置编码方式 response.setContentType(CONTENT_TYPE); ServletContext context = getServletContext(); String target = "UpdatePassword.jsp"; //设置跳转页面,servlet中,页面绝对地址不需要加工程名;而在jsp页面中则需要,比如:表单action指向的地址 String msg = ""; String username = (String)request.getSession().getAttribute("username"); //这里假设该用户登陆时的用户名你已经保存在session中 String oldpsw = (String)request.getParameter("oldpsw"); //getParameter("....")引号内的字符串对应页面文本框的name String newpsw = (String)request.getParameter("newpsw"); //新密码和确认密码是否相等,完全可以放在页面中,通过java scripts判断。(同样输入是否为空、字符是否合法、字符长度等,都可以放到那判断) String repsw = (String)request.getParameter("repsw"); if(newpsw.equals(repsw)){ UpdateDAO ud = new UpdateDAO(); ArrayList array = new ArrayList(); //成功查询到该用户 if(ud.Update(username,array)){ //取出密码,虽然array中只有一个元素,取值操作仍然要放在循环中 String psw = ""; for(int i=0;i<array.size();i++){ psw = (String)array.get; } //数据库取出的密码跟页面提交密码比较 if(psw.equals(oldpsw)){ /* * 数据库修改的部分留给你完成吧 * 只需要修改SQL操作语句即可 * */ msg = "密码修改成功!"; } else{ msg = "旧密码不正确,请重新输入!"; } } else{ msg = "该用户名不存在!"; } request.setAttribute("msg",msg); RequestDispatcher requestDis = context.getRequestDispatcher(target); requestDis.forward(request, response); } } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request,response); } }
**数据处理beans:UpdateDAO package update;
import java.sql.*; import java.util.ArrayList;
public class UpdateDAO {
public boolean Update(String username,ArrayList array) { Connection con; Statement sql; ResultSet rs; boolean Flag = false; //桥接法驱动 try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); } catch(ClassNotFoundException e){} try { //test为跟数据库关联的数据源名 con = DriverManager.getConnection("jdbc:odbc:test","",""); sql = con.createStatement(); /* 假设数据库中用户表如下: * 表名:user * 各字段: * username(用户名) password(密码) pflag(用户权限) * */ rs = sql.executeQuery("select password from user where username='"+username+"'"); while(rs.next()){ Flag = true; String password = rs.getString(1); array.add(password); } } catch(SQLException e1) { System.err.println(e1) ; } return Flag; } }
|