У меня есть веб-приложение jsp + servlet.У меня есть много сервлетов, у которых глобальные переменные объявлены как показано в примере нижеКогда я провел некоторое исследование, я обнаружил, что все глобальные переменные являются общими для всех одновременных запросов.Поэтому мое веб-приложение может работать некорректно.Теперь, как я могу сделать эти переменные разными для каждого запроса.
import Utils.DBConnection;
import Utils.IST;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.SQLIntegrityConstraintViolationException;
import java.sql.Statement;
import java.util.Properties;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.naming.NamingException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Category extends HttpServlet {
Connection connection = null;
Statement statement = null;
IST ist;
PrintWriter out;
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
out = response.getWriter();
}
public void connectToServer() throws SQLException, NamingException {
connection = DBConnection.getDataSource().getConnection();
statement = connection.createStatement();
ist = new IST();
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
try {
connectToServer();
switch (request.getParameter("mode")) {
case "checkAvailability": {
String category_name = request.getParameter("category_name");
String sql = "Select category_name from course_category where category_name='" + category_name + "'";
ResultSet resultset_val = statement.executeQuery(sql);
if (resultset_val.next()) {
out.print("exist");
}
break;
}
case "checkAvailability1": {
String category_id = request.getParameter("category_id");
String category_name = request.getParameter("category_name");
String sql = "Select category_name from course_category where category_name='" + category_name + "' and category_id!='" + category_id + "'";
ResultSet resultset_val = statement.executeQuery(sql);
if (resultset_val.next()) {
out.print("exist");
}
break;
}
case "checkwarning": {
String category_id = request.getParameter("category_id");
String warning = "";
String sql_query = "select * from course where category_id='" + category_id + "' and status='Active'";
ResultSet resultset_val = statement.executeQuery(sql_query);
if (resultset_val.next()) {
warning = "yes";
}
String sql_query1 = "select * from assessment where category_id='" + category_id + "' and status='Active'";
ResultSet resultset_val1 = statement.executeQuery(sql_query1);
if (resultset_val1.next()) {
warning = "yes";
}
if (warning.equals("yes")) {
throw new Exception();
}
break;
}
case "active_inactive": {
String category_id = request.getParameter("category_id");
String status = request.getParameter("status");
String sql = "Update course_category set status='" + status + "',last_updated_user='" + request.getSession(false).getAttribute("log_user_id") + "',last_updated_ts='" + ist.getLastUpdatedts() + "' where category_id='" + category_id + "'";
int i = statement.executeUpdate(sql);
if (i > 0) {
}
connection.commit();
break;
}
default:
break;
}
} catch (Exception ex) {
Logger.getLogger(Category.class.getName()).log(Level.SEVERE, null, ex);
try {
response.setStatus(400);
if (!connection.isClosed()) {
connection.rollback();
}
} catch (SQLException ex1) {
Logger.getLogger(Category.class.getName()).log(Level.SEVERE, null, ex1);
}
} finally {
try {
out.flush();
out.close();
if (!statement.isClosed()) {
statement.close();
}
if (!connection.isClosed()) {
connection.close();
}
statement=null;
connection = null;
} catch (SQLException ex) {
Logger.getLogger(Category.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
try {
connectToServer();
switch (request.getParameter("mode")) {
case "add": {
String category_name = request.getParameter("category_name");
String category_desc = request.getParameter("category_desc");
String status = request.getParameter("status");
String sql = "INSERT INTO course_category(category_name,category_desc,status,created_user,created_ts,last_updated_user,last_updated_ts) VALUES ('" + category_name + "', '" + category_desc + "','" + status + "','" + request.getSession(false).getAttribute("log_user_id") + "','" + ist.getLastUpdatedts() + "','" + request.getSession(false).getAttribute("log_user_id") + "','" + ist.getLastUpdatedts() + "')";
statement.executeUpdate(sql);
connection.commit();
break;
}
case "edit": {
String category_id = request.getParameter("category_id");
String category_name = request.getParameter("category_name");
String category_desc = request.getParameter("category_desc");
String sql = "update course_category set category_name='" + category_name + "',category_desc='" + category_desc + "',last_updated_user='" + request.getSession(false).getAttribute("log_user_id") + "',last_updated_ts='" + ist.getLastUpdatedts() + "' where category_id='" + category_id + "'";
statement.executeUpdate(sql);
connection.commit();
break;
}
default:
break;
}
} catch (Exception ex) {
try {
Logger.getLogger(Category.class.getName()).log(Level.SEVERE, null, ex);
if (ex instanceof SQLIntegrityConstraintViolationException) {
response.setStatus(1);
} else {
response.setStatus(2);
}
if (!connection.isClosed()) {
connection.rollback();
}
} catch (SQLException ex1) {
Logger.getLogger(Category.class.getName()).log(Level.SEVERE, null, ex1);
}
} finally {
try {
out.flush();
out.close();
if (!statement.isClosed()) {
statement.close();
}
if (!connection.isClosed()) {
connection.close();
}
statement=null;
connection = null;
} catch (SQLException ex) {
Logger.getLogger(Category.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
@Override
public String getServletInfo() {
return "Short description";
}
}