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

Commit

Permalink
继续修复了几个恶性 Bug
Browse files Browse the repository at this point in the history
1. 更新 Connector.java
   - 将数据库连接/断开提取封装为 private synchronized static 方法,确保全局仅有一个数据库连接对象
   - 确保每个连接在使用后被归还至连接池
2. 更新 context.xml ,配置超时数据库连接的自动回收
3. 移除 encrypt.js 并将其功能压缩后移动至相应的业务文件
4. 压缩 platform.js
5. 格式化了所有代码
  • Loading branch information
Dragon1573 committed Nov 13, 2020
1 parent 6b10fb9 commit c5e89f7
Show file tree
Hide file tree
Showing 24 changed files with 714 additions and 1,352 deletions.
33 changes: 4 additions & 29 deletions src/main/java/servlets/Comments.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
Expand Down Expand Up @@ -43,33 +41,11 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response)
response.setCharacterEncoding("UTF-8");
response.setContentType("application/json; charset=UTF-8");

// 获取用户名
String username = request.getParameter("username");

// 获取评论
Connector connector = new Connector();
ResultSet resultSet = connector.fetchComments(username);

// 生成JSON数据表
JSONArray vector = new JSONArray();
try {
while (resultSet != null && resultSet.next()) {
JSONObject object = new JSONObject();
object.put("SENDER", resultSet.getString("Sender"));
object.put("TITLE", resultSet.getString("Title"));
object.put("DETAILS", resultSet.getString("Details"));
// 将SQL Server中的时间转换为字符串
object.put("DATETIME", resultSet.getString("DateTime"));
// 将单个JSON数据加入表中
vector.add(object);
}
} catch (SQLException e) {
e.printStackTrace();
}

// 输出JSON字符串
try (PrintWriter writer = response.getWriter()) {
writer.println(JSON.toJSONString(vector));
String username = request.getParameter("username");
JSONArray array = Connector.fetchComments(username);
writer.println(JSON.toJSONString(array));
}
}

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

// 访问数据库
Connector connector = new Connector();
boolean isSaved = connector.sendComments(username, title, comments);
boolean isSaved = Connector.sendComments(username, title, comments);

// 转换为JSON字符串
JSONObject jsonObject = new JSONObject();
Expand Down
8 changes: 2 additions & 6 deletions src/main/java/servlets/Download.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
import java.io.OutputStream;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
Expand All @@ -18,20 +17,17 @@
@WebServlet(name = "Download", urlPatterns = {"/download"})
public class Download extends HttpServlet {
@Override
protected void doGet(
HttpServletRequest request, HttpServletResponse response
) throws ServletException, IOException {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
// 设置请求与响应的格式
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
response.setContentType("application/x-msdownload");
Connector connector = new Connector();

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

Expand Down
28 changes: 4 additions & 24 deletions src/main/java/servlets/Login.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,6 @@

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.ResultSet;
import java.sql.SQLException;

import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
Expand All @@ -13,28 +10,24 @@

import entities.UserInfo;
import utils.Connector;
import utils.Md5Util;

/**
* Servlet:用户登录
*
* @author Dragon1573
* @date 2019/7/7
*/
@WebServlet(name = "Login", urlPatterns = {"/login"})
public class Login extends HttpServlet {
private static final long serialVersionUID = -6477635060462144660L;

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

@Override
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws IOException {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
// 设置请求与回复编码
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
Expand All @@ -47,22 +40,9 @@ protected void doPost(HttpServletRequest request,
String username = request.getParameter("username");
String password = request.getParameter("password");

//查询数据库,进行身份校验
Connector connector = new Connector();
ResultSet resultSet = connector.login(username);
boolean success = false;
try {
while (resultSet != null && resultSet.next()) {
String s = resultSet.getString(1);
success = s.equals(Md5Util.encrypt(password));
}
} catch (SQLException exception) {
exception.printStackTrace();
}

// 判断是否登陆成功
String redirectUrl;
if (success) {
// 身份校验
if (Connector.login(username, password)) {
certificate.setUsername(username);
certificate.setVerified(true);
redirectUrl = "index.jsp?user=" + certificate.getUsername();
Expand Down
64 changes: 15 additions & 49 deletions src/main/java/servlets/Repositories.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,12 @@

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

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

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException {
// 指定编码
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
response.setContentType("application/json; charset=UTF-8");

// 获取请求字段
String username = request.getParameter("username");

// 连接数据库
Connector connector = new Connector();
ResultSet resultSet = connector.fetchRepositories(username);

// 创建JSON数组
JSONArray list = new JSONArray();
try {
while (resultSet != null && resultSet.next()) {
JSONObject object = new JSONObject();
object.put("USERNAME", resultSet.getString("Username"));
object.put("REPOSITORY", resultSet.getString("Repository"));
list.add(object);
}
} catch (SQLException e) {
e.printStackTrace();
try (PrintWriter out = response.getWriter()) {
out.println(JSON.toJSONString(Connector.fetchRepositories(request.getParameter("username"))));
}

// 转换为JSON字符串
String jsonStr = JSON.toJSONString(list);

// 输出
PrintWriter out = response.getWriter();
out.println(jsonStr);
out.close();
}

@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException {
// 指定编码
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
Expand All @@ -71,25 +46,16 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response)
String newName = request.getParameter("new_name");
String oldName = request.getParameter("old_name");

Connector connector = new Connector();
boolean success = false;

switch (method) {
case "rename":
success = connector.renameRepositories(username, newName, oldName);
break;
boolean success = switch (method) {
case "rename" -> Connector.renameRepositories(username, newName, oldName);
case "delete" -> Connector.deleteRepositories(username, oldName);
default -> false;
};

case "delete":
success = connector.deleteRepositories(username, oldName);
break;

default:
break;
try (PrintWriter writer = response.getWriter()) {
JSONObject object = new JSONObject();
object.put("SUCCESS", success);
writer.println(JSON.toJSONString(object));
}

JSONObject object = new JSONObject();
object.put("SUCCESS", success);
String json = JSON.toJSONString(object);
response.getWriter().println(json);
}
}
4 changes: 1 addition & 3 deletions src/main/java/servlets/ResetVerify.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,8 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response)
String username = request.getParameter("username");
String answer = request.getParameter("answer");

Connector connector = new Connector();

HttpSession session = request.getSession();
if (connector.resetVerify(username, answer)) {
if (Connector.resetVerify(username, answer)) {
UserInfo info = (UserInfo)session.getAttribute("certificate");
info.setVerified(true);
info.setUsername(username);
Expand Down
8 changes: 3 additions & 5 deletions src/main/java/servlets/SignUp.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
Expand All @@ -18,7 +17,6 @@
* Servlet:注册
*
* @author Dragon1573
* @date 2019/7/7
*/
@WebServlet(name = "SignUp", urlPatterns = {"/signUp"})
public class SignUp extends HttpServlet {
Expand All @@ -31,7 +29,8 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response) t
}

@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
// 设置请求编码格式
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
Expand All @@ -54,8 +53,7 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response)
profile.put("Answer", request.getParameter("answer"));

// 用户入库
Connector connector = new Connector();
int effect = connector.signUp(profile);
int effect = Connector.signUp(profile);
if (effect <= 0) {
// 用户信息未存入数据库
request.setAttribute("error", "SignUpFailedError");
Expand Down
Loading

0 comments on commit c5e89f7

Please sign in to comment.