diff --git a/src/core/operation/DownloadFile.java b/src/core/operation/DownloadFile.java index ddb242d..6063852 100644 --- a/src/core/operation/DownloadFile.java +++ b/src/core/operation/DownloadFile.java @@ -17,9 +17,8 @@ public class DownloadFile extends Operation{ String field = core.operation.utils.Utils.getFileField(table); List ls = new ArrayList<>(); ls.add(field); - ResultSet rs = DBManagement.select(ls,table,limits,0,1); - rs.next(); - String filePath = rs.getString(0); + List resultLs = DBManagement.select(ls,table,limits,0,1); + String filePath = resultLs.get(0)[0]; File file = new File(filePath); this.getOptions().put("file",file); return this.getOptions(); diff --git a/src/core/operation/Search.java b/src/core/operation/Search.java index 5638d4a..d84f42c 100644 --- a/src/core/operation/Search.java +++ b/src/core/operation/Search.java @@ -17,17 +17,7 @@ public class Search extends Operation { Map limits = (Map)this.getOptions().get("limits"); int start = (int)this.getOptions().get("start"); int end = (int)this.getOptions().get("end"); - ResultSet rs = DBManagement.select(fields,table,limits,start,end); - ResultSetMetaData rsm = rs.getMetaData() ; - int columnCount = rsm.getColumnCount(); - List ls = new ArrayList<>(); - while(rs.next()){ - String[] s = new String[columnCount]; - for(int i=0;i ls = DBManagement.select(fields,table,limits,start,end); this.getOptions().put("result",ls); return this.getOptions(); } diff --git a/src/core/operation/UploadFileOperation.java b/src/core/operation/UploadFileOperation.java index 527b5ac..ff26329 100644 --- a/src/core/operation/UploadFileOperation.java +++ b/src/core/operation/UploadFileOperation.java @@ -28,9 +28,8 @@ public class UploadFileOperation extends Operation { List ls = new ArrayList<>(); ls.add(field); - ResultSet rs = DBManagement.select(ls,table,limits,0,1); - rs.next(); - String lastFilePath = rs.getString(0); + List resultLs = DBManagement.select(ls,table,limits,0,1); + String lastFilePath = resultLs.get(0)[0]; new File(lastFilePath).delete(); DBManagement.update(table,vMap,limits); return this.getOptions(); diff --git a/src/core/process/ProcessManagement.java b/src/core/process/ProcessManagement.java index 3d64848..7e9f354 100644 --- a/src/core/process/ProcessManagement.java +++ b/src/core/process/ProcessManagement.java @@ -30,7 +30,7 @@ public class ProcessManagement { //Map public static Map getStatus(User user){ - Map userTables = DBManagement.getUserTables(user.getType()); + Map userTables = DBManagement.getUserStatusTables(user.getType()); String graduationDesignId = null; for(Map.Entry entry:userTables.entrySet()){ String[] ti = entry.getKey().split("."); diff --git a/src/core/user/utils/AccountManagement.java b/src/core/user/utils/AccountManagement.java index 8d70b1d..f832674 100644 --- a/src/core/user/utils/AccountManagement.java +++ b/src/core/user/utils/AccountManagement.java @@ -20,7 +20,7 @@ import static dao.DBManagement.userTables; public interface AccountManagement { static User login(String id, String password) throws Exception { - ResultSet rs = null; + List ls = null; String userType = null; for(String userTable:userTables){ List columns = new ArrayList<>(); @@ -28,26 +28,22 @@ public interface AccountManagement { Map limits = new HashMap<>(); limits.put("id",id); try { - rs = DBManagement.select(columns,userTable,limits,0,1); + ls = DBManagement.select(columns,userTable,limits,0,1); } catch (Exception e) { throw new GExcptSQL("QUERY\n\t"+id+"\nfailure"); } - if(rs!=null){ + if(ls.size()!=0){ userType = userTable; break; } } - if(rs==null){ - throw new GExcptAccount("id "+id+"don't exists"); - } - rs.next(); - if(!rs.getString(2).equals(password)) + String[] userInfo = ls.get(0); + if(!userInfo[1].equals(password)) throw new GExcptAccount("password wrong"); Map vMap = new HashMap<>(); - ResultSetMetaData rsm = rs.getMetaData(); - rs.next(); - for(int i=0;i public static Map graduationDesignStudentTables = new HashMap<>(){ { @@ -79,7 +106,7 @@ public class DBManagement { } return null; } - public static Map getUserTables(String userType){ + public static Map getUserStatusTables(String userType){ if(userType.equals("student")){ return graduationDesignStudentTables; } @@ -88,7 +115,18 @@ public class DBManagement { } return null; } - + public static String[] getUserInfoTables(String userType){ + if(userType.equals("administrator")){ + return administratorInfo; + } + if(userType.equals("student")){ + return studentInfo; + } + if(userType.equals("teacher")){ + return teacherInfo; + } + return null; + } public static void delete(String table, Map limits) throws GExcptSQL { Delete delete = new Delete(table, limits); String sql = delete.getSQL(); @@ -99,7 +137,7 @@ public class DBManagement { String sql = insert.getSQL(); update(sql); } - public static ResultSet select(List columns, String table, Map limits, int startRow, int endRow) throws Exception { + public static List select(List columns, String table, Map limits, int startRow, int endRow) throws Exception { Select select = new Select(columns,table,limits,startRow,endRow); String sql = select.getSQL(); return query(sql); @@ -109,15 +147,24 @@ public class DBManagement { String sql = update.getSQL(); update(sql); } - public static ResultSet query(String sql) throws Exception { + public static List query(String sql) throws Exception { if(!ifInit) return null; - ResultSet rs = null; + List ls; Connection con = null; try{ con = DBManagement.getConnection(); Statement stmt = con.createStatement(); - rs = stmt.executeQuery(sql); - System.out.println(rs); + ResultSet rs = stmt.executeQuery(sql); + ResultSetMetaData rsm = rs.getMetaData() ; + int columnCount = rsm.getColumnCount(); + ls = new ArrayList<>(); + while(rs.next()){ + String[] s = new String[columnCount]; + for(int i=0;i list = new ArrayList<>(); list.add("q"); list.add("w"); diff --git a/src/servlet/account/S_Register.java b/src/servlet/account/Register.java similarity index 64% rename from src/servlet/account/S_Register.java rename to src/servlet/account/Register.java index b3397fb..2ca40fd 100644 --- a/src/servlet/account/S_Register.java +++ b/src/servlet/account/Register.java @@ -5,6 +5,7 @@ import core.user.utils.AccountManagement; import error.GExcptAccount; import error.GExcptSQL; import javax.servlet.ServletException; +import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -13,34 +14,37 @@ import java.sql.SQLException; import java.util.HashMap; import java.util.Map; -public class S_Register extends HttpServlet { +@WebServlet("/register") +public class Register extends HttpServlet { @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - super.doPost(request, response); Map user_info=new HashMap<>(); String id=request.getParameter("id"); user_info.put("id",id); String name=request.getParameter("name"); user_info.put("name",name); - String e_mail=request.getParameter("e-mail"); - user_info.put("e_mail",e_mail); - String phone_number=request.getParameter("phone-number"); + String e_mail=request.getParameter("e_mail_location"); + user_info.put("e_mail_location",e_mail); + String phone_number=request.getParameter("phone_number"); user_info.put("phone_number",phone_number); String password=request.getParameter("password"); user_info.put("password",password); + String userType = request.getParameter("userType"); User user=null; try { - user = AccountManagement.register("student",user_info); + user = AccountManagement.register(userType,user_info); } catch (GExcptSQL gExcptSQL) { gExcptSQL.printStackTrace(); + response.sendRedirect("/op_fail.jsp"); } catch (GExcptAccount gExcptAccount) { gExcptAccount.printStackTrace(); + response.sendRedirect("/op_fail.jsp"); } catch (Exception e) { e.printStackTrace(); + response.sendRedirect("/op_fail.jsp"); } - //注册失败 - request.getSession().setAttribute("User",user); - request.getRequestDispatcher("/home.jsp").forward(request,response); - + request.getSession().setAttribute("user",user); + response.sendRedirect("/home.jsp"); + return; } } \ No newline at end of file diff --git a/src/servlet/account/login.java b/src/servlet/account/login.java index 0afd51b..ee72254 100644 --- a/src/servlet/account/login.java +++ b/src/servlet/account/login.java @@ -17,21 +17,28 @@ import error.GExcptSQL; @WebServlet("/login") public class login extends HttpServlet { - protected void doPost(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException { - String id=request.getParameter("id"); - String password=request.getParameter("password"); - User user = null; - try { - user = AccountManagement.login(id,password); - } catch (GExcptSQL | SQLException gExcptSQL) { - gExcptSQL.printStackTrace(); - } catch (GExcptAccount gExcptAccount) { - gExcptAccount.printStackTrace(); - } catch (Exception e) { - e.printStackTrace(); - } - request.getSession().setAttribute("user",user); - request.getRequestDispatcher("/home.jsp").forward(request,response); - } + protected void doPost(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + String id=request.getParameter("id"); + String password=request.getParameter("password"); + User user = null; + try { + user = AccountManagement.login(id,password); + } catch (GExcptSQL | SQLException gExcptSQL) { + gExcptSQL.printStackTrace(); + response.sendRedirect("/op_fail.jsp"); + return; + } catch (GExcptAccount gExcptAccount) { + gExcptAccount.printStackTrace(); + response.sendRedirect("/op_fail.jsp"); + return; + } catch (Exception e) { + e.printStackTrace(); + response.sendRedirect("/op_fail.jsp"); + return; + } + request.getSession().setAttribute("user",user); + response.sendRedirect("/home.jsp"); + return; + } } diff --git a/web/login.jsp b/web/login.jsp index 658a59e..b1ffd2a 100644 --- a/web/login.jsp +++ b/web/login.jsp @@ -40,7 +40,7 @@
-
+