?? signup.java
字號:
package fengyun.Fastmail.beans;import java.util.*;import java.sql.ResultSet;import javax.servlet.http.*;import fengyun.Fastmail.util.MaildirMake;/** * 用戶注冊 * @author sanware & fengyun * @version 1.01 */public class SignUp { private static BeansConstants CONST = BeansConstants.getInstance(); /** * 檢查用戶是否存在 * @param userid 用戶ID */ public static boolean exists(String userid) { if (userid == null || "".equals(userid)) return false; try {
String sql = "select * from mailbox where userid = ?";
Mysql mysql = new Mysql(sql); mysql.setString(1,userid);
ResultSet rs = mysql.executeQuery(); boolean next = rs.next(); mysql.close(); mysql = null; return next; } catch (Exception ex) { ex.printStackTrace(); return false; } } public static boolean isValid(String userid) { if (userid.length() < 2 || userid.length() > 19) return false; char current = ' '; for (int i=0; i < userid.length(); i++) { current = userid.charAt(i); if (current != '-' && current !='_' && current != '.' && !Character.isLetterOrDigit(current)) return false; } return true; }
public static String getPassword(HttpServletRequest request) {
String userid = request.getParameter("userid");
String certificateType = request.getParameter("certificateType");
String cardNumber = request.getParameter("cardNumber");
String year = request.getParameter("year");
String month = request.getParameter("month");
String day = request.getParameter("day");
if(userid == null || "".equals(userid))
return null;
if(certificateType == null || cardNumber == null || "".equals("certificateType") || "".equals("cardNumber"))
return null;
if(year == null || month == null || day == null || "".equals(year) || "".equals(month) || "".equals(day))
return null;
try
{
String sql = "select userid from profile mailbox where userid = ? and year(birthday) = ? and month(birthday)=? and dayofmonth(birthday)=?"
+ " and certificateType = ? and cardNumber = ?";
String upsql = "update mailbox set password=PASSWORD(?) where userid=?";
Mysql mysql = new Mysql(sql);
mysql.setString(1, userid);
mysql.setString(2,year);
mysql.setString(3,month);
mysql.setString(4,day);
mysql.setInt(5,Integer.parseInt(certificateType));
mysql.setString(6,cardNumber);
ResultSet rs = mysql.executeQuery();
String newpass = null;
if(rs != null && rs.next())
{
newpass = Integer.toString(Math.abs((new Random()).nextInt()) % 0xf4240 + 1);
mysql.prepareStatement(upsql);
mysql.setString(1, newpass);
mysql.setString(2, userid);
mysql.executeUpdate();
}
mysql.close();
mysql = null;
return newpass;
}
catch(Exception exception) {
exception.printStackTrace();
}
return null;
} /** * 注冊(數據庫) */ public static int register(HttpServletRequest request) { String userid = request.getParameter(CONST.userid); if (exists(userid)) return CONST.USERID_EXISTS; String passwd = request.getParameter(CONST.passwd); String confirm = request.getParameter(CONST.confirm); String username = request.getParameter(CONST.username); String gender = request.getParameter(CONST.gender); String certificateType = request.getParameter(CONST.certificateType); String cardNumber = request.getParameter(CONST.cardNumber); String year = request.getParameter(CONST.birthYear); String month = request.getParameter(CONST.birthMonth); String day = request.getParameter(CONST.birthDay); if (passwd == null|| confirm == null || username == null || gender == null || "".equals(passwd) || "".equals(username) || "".equals(gender)) return CONST.FORM_ERROR; if (certificateType == null || cardNumber == null || "".equals("certificateType") || "".equals("cardNumber")) return CONST.FORM_ERROR; if (year == null || month == null || day == null || "".equals(year) || "".equals(month) || "".equals(day)) return CONST.FORM_ERROR; if (!confirm.equals(passwd)) return CONST.CONFIRM_ERROR; char current = ' '; if (Integer.parseInt(certificateType)==1) { for (int i=0; i < cardNumber.length(); i++) { current = cardNumber.charAt(i); if (current<48 || current>57) return CONST.IDCARD_ERROR; } } else { for (int i=0; i < cardNumber.length(); i++) { current = cardNumber.charAt(i); if (current != '-' && !Character.isLetterOrDigit(current)) return CONST.STUDENT_ERROR; } } String location = request.getParameter(CONST.location); String zipcode = request.getParameter(CONST.zipcode); String education = request.getParameter(CONST.education); String occupation = request.getParameter(CONST.occupation); String province = request.getParameter(CONST.province); String phone = request.getParameter(CONST.phone); String birthday = new String (year+"-"+month+"-"+day); java.text.SimpleDateFormat formatter = new java.text.SimpleDateFormat (CONST.entimeformat); String regdate = formatter.format(new java.util.Date());
String profilesql = "insert into profile (userid,regdate,username,gender,certificateType,cardNumber,birthday,location,zipcode,education,occupation,province,phone) values (?,?,?,?,?,?,?,?,?,?,?,?,?)";
int spread = java.lang.Math.abs(new java.util.Random().nextInt()) % CONST.maxspread + 1; String home = CONST.userhome + java.io.File.separator + spread + java.io.File.separator + userid; String mailboxsql = "insert into mailbox (userid,password,home) values (?,PASSWORD(?),?)";
String foldersql = "insert into folderlist (userid,folderindex,folderid,foldername,type) values (?,?,?,?,?)";
String folderidlist[] = {
CONST.rev, CONST.snt, CONST.src, CONST.dsb
};
int folderindexlist[] = {
10000, 20000, 30000, 40000
};
String foldernamelist[] = {
CONST.revname, CONST.sntname, CONST.srcname, CONST.dsbname
};
try { //添加到數據庫 Mysql mysql = new Mysql(profilesql); mysql.setString(1,userid); mysql.setString(2,regdate);
mysql.setString(3,username);
mysql.setString(4,gender); mysql.setString(5,certificateType);
mysql.setString(6,cardNumber);
mysql.setString(7,birthday);
mysql.setString(8,location);
mysql.setString(9,zipcode);
mysql.setString(10,education);
mysql.setString(11,occupation);
mysql.setString(12,province);
mysql.setString(13,phone);
mysql.executeUpdate();
mysql.prepareStatement(mailboxsql);
mysql.setString(1,userid);
mysql.setString(2,passwd);
mysql.setString(3,home);
mysql.executeUpdate();
mysql.prepareStatement(foldersql);
for(int i = 0; i < folderindexlist.length; i++)
{
mysql.setString(1, userid);
mysql.setInt(2, folderindexlist[i]);
mysql.setString(3, folderidlist[i]);
mysql.setString(4, foldernamelist[i]);
mysql.setInt(5, 0);
mysql.executeUpdate();
mysql.clearParameters();
}
mysql.close(); mysql = null; } catch (Exception ex) { ex.printStackTrace(); return CONST.SQL_ERROR; } int status = MaildirMake.make(home + java.io.File.separator + CONST.maildir); switch(status) { case MaildirMake.OK : { return CONST.OK; } case MaildirMake.CHANGEMOD_ERROR : { return CONST.CHMODERROR; } case MaildirMake.MAILDIR_EXISTS : { return CONST.MAILDIREXISTS; } case MaildirMake.CREATE_ERROR : { return CONST.CANTCREATEFOLD; } default :{ return CONST.OK; } } }}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -