Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Архитектура разработки Web - приложений ?


Автор: ZeusX 6.11.2007, 05:06
Народ подскажите как правильно организовать архитектуру приложения под AJAX (на запрос от клиента возвращается XML)

может как то организовать Pool'ы (Servic'ы)?

воть мой код: 

Код

import java.io.*;
import java.net.*;
import java.util.*;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class Request extends HttpServlet {
   
   public Connection connection;
   HttpSession session;
   
   public void init(ServletConfig config) throws ServletException {
        super.init(config);
        try {
            Properties properties = new Properties();
            properties.load(getClass().getResourceAsStream("config.properties"));
            try {
                Class.forName(properties.getProperty("driver"));
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            }
            connection = DriverManager.getConnection(properties.getProperty("url"),
                    properties.getProperty("user"), properties.getProperty("password"));
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException eSQL) {
            eSQL.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
   
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/xml;charset=windows-1251");
        PrintWriter out = response.getWriter();
       
       
        if(session != null) session.invalidate();
        try {
            Statement sql = connection.createStatement();
            ResultSet rs = sql.executeQuery("SELECT * FROM webuser WHERE userID ='" + request.getParameter("userID") + "' AND pinCode = '" + request.getParameter("pinCode") + "'");
            if (!rs.next()) {
                out.println("<response><argument name='access' value='false'></argument></response>");
            } else {
                out.println("<response><argument name='access' value='true'></argument></response>");
                session = request.getSession(true);
                session.setAttribute("userID", rs.getString("userID"));
                session.setAttribute("client", rs.getString("name"));
            }
        } catch (SQLException eSQL) { out.println("ERROR: " + eSQL + "<br />"); }
        out.close();
    }
   
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }
   
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }
   
    public void destroy() {
        try {
            if(connection != null) connection.close();
        } catch (SQLException eSQL) { eSQL.printStackTrace(); }
    }
}

Автор: ekr 6.11.2007, 13:20
Замечания немного не по основному вопросу, но тож полезно:
1. Используй пулы соединений (connection pools) вместо 
Цитата(ZeusX @  6.11.2007,  05:06 Найти цитируемый пост)
connection = DriverManager.getConnection


2. Используй подготовленные выражения (prepared statements) вместо 
Цитата(ZeusX @  6.11.2007,  05:06 Найти цитируемый пост)
Statement sql = connection.createStatement();


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)