Skip to content
This repository was archived by the owner on Nov 13, 2020. It is now read-only.

Commit c5e89f7

Browse files
committed
继续修复了几个恶性 Bug
1. 更新 Connector.java - 将数据库连接/断开提取封装为 private synchronized static 方法,确保全局仅有一个数据库连接对象 - 确保每个连接在使用后被归还至连接池 2. 更新 context.xml ,配置超时数据库连接的自动回收 3. 移除 encrypt.js 并将其功能压缩后移动至相应的业务文件 4. 压缩 platform.js 5. 格式化了所有代码
1 parent 6b10fb9 commit c5e89f7

24 files changed

+714
-1352
lines changed

src/main/java/servlets/Comments.java

Lines changed: 4 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@
22

33
import java.io.IOException;
44
import java.io.PrintWriter;
5-
import java.sql.ResultSet;
6-
import java.sql.SQLException;
75
import javax.servlet.annotation.WebServlet;
86
import javax.servlet.http.HttpServlet;
97
import javax.servlet.http.HttpServletRequest;
@@ -43,33 +41,11 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response)
4341
response.setCharacterEncoding("UTF-8");
4442
response.setContentType("application/json; charset=UTF-8");
4543

46-
// 获取用户名
47-
String username = request.getParameter("username");
48-
49-
// 获取评论
50-
Connector connector = new Connector();
51-
ResultSet resultSet = connector.fetchComments(username);
52-
53-
// 生成JSON数据表
54-
JSONArray vector = new JSONArray();
55-
try {
56-
while (resultSet != null && resultSet.next()) {
57-
JSONObject object = new JSONObject();
58-
object.put("SENDER", resultSet.getString("Sender"));
59-
object.put("TITLE", resultSet.getString("Title"));
60-
object.put("DETAILS", resultSet.getString("Details"));
61-
// 将SQL Server中的时间转换为字符串
62-
object.put("DATETIME", resultSet.getString("DateTime"));
63-
// 将单个JSON数据加入表中
64-
vector.add(object);
65-
}
66-
} catch (SQLException e) {
67-
e.printStackTrace();
68-
}
69-
7044
// 输出JSON字符串
7145
try (PrintWriter writer = response.getWriter()) {
72-
writer.println(JSON.toJSONString(vector));
46+
String username = request.getParameter("username");
47+
JSONArray array = Connector.fetchComments(username);
48+
writer.println(JSON.toJSONString(array));
7349
}
7450
}
7551

@@ -97,8 +73,7 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response)
9773
String comments = request.getParameter("details");
9874

9975
// 访问数据库
100-
Connector connector = new Connector();
101-
boolean isSaved = connector.sendComments(username, title, comments);
76+
boolean isSaved = Connector.sendComments(username, title, comments);
10277

10378
// 转换为JSON字符串
10479
JSONObject jsonObject = new JSONObject();

src/main/java/servlets/Download.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import java.io.OutputStream;
55
import java.net.URLEncoder;
66
import java.nio.charset.StandardCharsets;
7-
import javax.servlet.ServletException;
87
import javax.servlet.annotation.WebServlet;
98
import javax.servlet.http.HttpServlet;
109
import javax.servlet.http.HttpServletRequest;
@@ -18,20 +17,17 @@
1817
@WebServlet(name = "Download", urlPatterns = {"/download"})
1918
public class Download extends HttpServlet {
2019
@Override
21-
protected void doGet(
22-
HttpServletRequest request, HttpServletResponse response
23-
) throws ServletException, IOException {
20+
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
2421
// 设置请求与响应的格式
2522
request.setCharacterEncoding("UTF-8");
2623
response.setCharacterEncoding("UTF-8");
2724
response.setContentType("application/x-msdownload");
28-
Connector connector = new Connector();
2925

3026
// 获取文件名及其内容
3127
final String username = request.getParameter("user");
3228
final String repository = request.getParameter("repo");
3329
String filename = request.getParameter("file");
34-
byte[] content = connector.getFiles(username, repository, filename);
30+
byte[] content = Connector.getFiles(username, repository, filename);
3531
filename = filename.substring(filename.lastIndexOf("/") + 1);
3632
filename = URLEncoder.encode(filename, StandardCharsets.UTF_8);
3733

src/main/java/servlets/Login.java

Lines changed: 4 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,6 @@
22

33
import java.io.IOException;
44
import java.io.PrintWriter;
5-
import java.sql.ResultSet;
6-
import java.sql.SQLException;
7-
85
import javax.servlet.annotation.WebServlet;
96
import javax.servlet.http.HttpServlet;
107
import javax.servlet.http.HttpServletRequest;
@@ -13,28 +10,24 @@
1310

1411
import entities.UserInfo;
1512
import utils.Connector;
16-
import utils.Md5Util;
1713

1814
/**
1915
* Servlet:用户登录
2016
*
2117
* @author Dragon1573
22-
* @date 2019/7/7
2318
*/
2419
@WebServlet(name = "Login", urlPatterns = {"/login"})
2520
public class Login extends HttpServlet {
2621
private static final long serialVersionUID = -6477635060462144660L;
2722

2823
@Override
29-
protected void doGet(HttpServletRequest request, HttpServletResponse response)
30-
throws IOException {
24+
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
3125
PrintWriter out = response.getWriter();
3226
out.println("警告:此方法仅用于Visio生成网站图,请使用POST方法!");
3327
}
3428

3529
@Override
36-
protected void doPost(HttpServletRequest request,
37-
HttpServletResponse response) throws IOException {
30+
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
3831
// 设置请求与回复编码
3932
request.setCharacterEncoding("UTF-8");
4033
response.setCharacterEncoding("UTF-8");
@@ -47,22 +40,9 @@ protected void doPost(HttpServletRequest request,
4740
String username = request.getParameter("username");
4841
String password = request.getParameter("password");
4942

50-
//查询数据库,进行身份校验
51-
Connector connector = new Connector();
52-
ResultSet resultSet = connector.login(username);
53-
boolean success = false;
54-
try {
55-
while (resultSet != null && resultSet.next()) {
56-
String s = resultSet.getString(1);
57-
success = s.equals(Md5Util.encrypt(password));
58-
}
59-
} catch (SQLException exception) {
60-
exception.printStackTrace();
61-
}
62-
63-
// 判断是否登陆成功
6443
String redirectUrl;
65-
if (success) {
44+
// 身份校验
45+
if (Connector.login(username, password)) {
6646
certificate.setUsername(username);
6747
certificate.setVerified(true);
6848
redirectUrl = "index.jsp?user=" + certificate.getUsername();

src/main/java/servlets/Repositories.java

Lines changed: 15 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,12 @@
22

33
import java.io.IOException;
44
import java.io.PrintWriter;
5-
import java.sql.ResultSet;
6-
import java.sql.SQLException;
75
import javax.servlet.annotation.WebServlet;
86
import javax.servlet.http.HttpServlet;
97
import javax.servlet.http.HttpServletRequest;
108
import javax.servlet.http.HttpServletResponse;
119

1210
import com.alibaba.fastjson.JSON;
13-
import com.alibaba.fastjson.JSONArray;
1411
import com.alibaba.fastjson.JSONObject;
1512

1613
import utils.Connector;
@@ -23,43 +20,21 @@ public class Repositories extends HttpServlet {
2320
private static final long serialVersionUID = 7370782377273050355L;
2421

2522
@Override
26-
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
23+
protected void doGet(HttpServletRequest request, HttpServletResponse response)
24+
throws IOException {
2725
// 指定编码
2826
request.setCharacterEncoding("UTF-8");
2927
response.setCharacterEncoding("UTF-8");
3028
response.setContentType("application/json; charset=UTF-8");
3129

32-
// 获取请求字段
33-
String username = request.getParameter("username");
34-
35-
// 连接数据库
36-
Connector connector = new Connector();
37-
ResultSet resultSet = connector.fetchRepositories(username);
38-
39-
// 创建JSON数组
40-
JSONArray list = new JSONArray();
41-
try {
42-
while (resultSet != null && resultSet.next()) {
43-
JSONObject object = new JSONObject();
44-
object.put("USERNAME", resultSet.getString("Username"));
45-
object.put("REPOSITORY", resultSet.getString("Repository"));
46-
list.add(object);
47-
}
48-
} catch (SQLException e) {
49-
e.printStackTrace();
30+
try (PrintWriter out = response.getWriter()) {
31+
out.println(JSON.toJSONString(Connector.fetchRepositories(request.getParameter("username"))));
5032
}
51-
52-
// 转换为JSON字符串
53-
String jsonStr = JSON.toJSONString(list);
54-
55-
// 输出
56-
PrintWriter out = response.getWriter();
57-
out.println(jsonStr);
58-
out.close();
5933
}
6034

6135
@Override
62-
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
36+
protected void doPost(HttpServletRequest request, HttpServletResponse response)
37+
throws IOException {
6338
// 指定编码
6439
request.setCharacterEncoding("UTF-8");
6540
response.setCharacterEncoding("UTF-8");
@@ -71,25 +46,16 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response)
7146
String newName = request.getParameter("new_name");
7247
String oldName = request.getParameter("old_name");
7348

74-
Connector connector = new Connector();
75-
boolean success = false;
76-
77-
switch (method) {
78-
case "rename":
79-
success = connector.renameRepositories(username, newName, oldName);
80-
break;
49+
boolean success = switch (method) {
50+
case "rename" -> Connector.renameRepositories(username, newName, oldName);
51+
case "delete" -> Connector.deleteRepositories(username, oldName);
52+
default -> false;
53+
};
8154

82-
case "delete":
83-
success = connector.deleteRepositories(username, oldName);
84-
break;
85-
86-
default:
87-
break;
55+
try (PrintWriter writer = response.getWriter()) {
56+
JSONObject object = new JSONObject();
57+
object.put("SUCCESS", success);
58+
writer.println(JSON.toJSONString(object));
8859
}
89-
90-
JSONObject object = new JSONObject();
91-
object.put("SUCCESS", success);
92-
String json = JSON.toJSONString(object);
93-
response.getWriter().println(json);
9460
}
9561
}

src/main/java/servlets/ResetVerify.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,8 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response)
2222
String username = request.getParameter("username");
2323
String answer = request.getParameter("answer");
2424

25-
Connector connector = new Connector();
26-
2725
HttpSession session = request.getSession();
28-
if (connector.resetVerify(username, answer)) {
26+
if (Connector.resetVerify(username, answer)) {
2927
UserInfo info = (UserInfo)session.getAttribute("certificate");
3028
info.setVerified(true);
3129
info.setUsername(username);

src/main/java/servlets/SignUp.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import java.io.IOException;
44
import java.io.PrintWriter;
55
import java.util.HashMap;
6-
76
import javax.servlet.ServletException;
87
import javax.servlet.annotation.WebServlet;
98
import javax.servlet.http.HttpServlet;
@@ -18,7 +17,6 @@
1817
* Servlet:注册
1918
*
2019
* @author Dragon1573
21-
* @date 2019/7/7
2220
*/
2321
@WebServlet(name = "SignUp", urlPatterns = {"/signUp"})
2422
public class SignUp extends HttpServlet {
@@ -31,7 +29,8 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response) t
3129
}
3230

3331
@Override
34-
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
32+
protected void doPost(HttpServletRequest request, HttpServletResponse response)
33+
throws IOException, ServletException {
3534
// 设置请求编码格式
3635
request.setCharacterEncoding("UTF-8");
3736
response.setCharacterEncoding("UTF-8");
@@ -54,8 +53,7 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response)
5453
profile.put("Answer", request.getParameter("answer"));
5554

5655
// 用户入库
57-
Connector connector = new Connector();
58-
int effect = connector.signUp(profile);
56+
int effect = Connector.signUp(profile);
5957
if (effect <= 0) {
6058
// 用户信息未存入数据库
6159
request.setAttribute("error", "SignUpFailedError");

0 commit comments

Comments
 (0)