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


Автор: alice18 6.2.2007, 02:25
вобщем у метя есть такой сервлет

Код

package de.sana.eadress.servlet;

import java.io.*;
import java.util.ArrayList;
import java.util.Iterator;
import java.sql.*;

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

import de.sana.eadress.bean.SuchAdresseBean_firma;
import de.sana.eadress.bean.SuchKriterienBean_firma;

public class SuchenServlet_firma extends HttpServlet {
    public void init(ServletConfig config) throws ServletException
    {
        super.init(config);
        try {
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance(); 
        }
        catch (Exception e) {
            throw new ServletException("Couldn't load DB driver :" + e.getMessage(), e);
        }
    }    
    
    public void doGet(HttpServletRequest req,
                            HttpServletResponse res)
                        throws ServletException, IOException {
                    
        Connection con = null;
        Statement stmt = null;
        ResultSet rs = null;
        
        HttpSession session = req.getSession();
        SuchKriterienBean_firma suchKriterien =
            (SuchKriterienBean_firma)session.getAttribute("SuchKriterien");

        suchKriterien.setFirma1(req.getParameter("Firma1"));
        ...............................
        
        // ------------------------------------
        // Begin Business Logic
        // ------------------------------------
            
            String errorMsg = "",
            nextStop = " ";
            
        boolean errorDetected = false;
        
        res.setContentType("text/html");
        PrintWriter out = res.getWriter();
        
        if (suchKriterien.getFirma1().equals("") && suchKriterien.getStrasse().equals("") && suchKriterien.getPLZ().equals("") && suchKriterien.getOrt().equals("") &&
                suchKriterien.getTelefon1().equals("") && suchKriterien.getemail().equals("")) {
            errorMsg = "Bitte geben Sie Suchbedingung ein!";
            out.println("<p align='center'>" + "<font size='4' face='Arial' color='#FF0000'>" + "<span style='background-color: #FFFFFF'>" + errorMsg + "</font>");
            errorDetected = true;
        }
        RequestDispatcher rd;
        
        if    (errorDetected) {
            nextStop = "/jsp/firma_search.jsp";
            rd = getServletContext().getRequestDispatcher(nextStop);
            rd.include(req, res);
        }
        else
        try {
            con = DriverManager.getConnection("jdbc:odbc:eAdress_Beispiel","root","");
            String query = "Select * from Adressen";
            List<String> parameters = new ArrayList<String>();
            query = appendCondition(query, parameters, "KurzBez", "firma");
            query = appendCondition(query, parameters, "Firma1", suchKriterien.getFirma1());
            ..............................
        
            PreparedStatement s = con.prepareStatement(query);
            Iterator<String> it = parameters.iterator();
            int idx = 1;
            while (it.hasNext()) {
                String value = it.next();
                s.setString(idx++, "%"+value+"%");
            }
            List <SuchAdresseBean_firma> AdresseList = new ArrayList<SuchAdresseBean_firma>();
            stmt = con.createStatement();
            rs = s.executeQuery();
            try {
                while(rs.next()) {
                    SuchAdresseBean_firma SuchAdresse = new SuchAdresseBean_firma();
                    SuchAdresse.setID(rs.getString("ID"));
                    .........................                    AdresseList.add(SuchAdresse);
                }
            } finally {
                rs.close();
                
            }
            // ------------------------------------
            // End Business Logic
            // ------------------------------------
            
        HttpSession session2 = req.getSession(true);
        session2.setAttribute("AdresseList", AdresseList);
        stmt.close();
        nextStop = "/jsp/firma_search_result.jsp";
     rd = getServletContext().getRequestDispatcher(nextStop);
     rd.forward(req, res);    
        }
        catch(SQLException e) {
            out.println("SQLException caught: " + e.getMessage());
        }
        finally {
            try {
                if (con != null) con.close();
                }
            catch (SQLException ignored) { }
        }
        }

    private String appendCondition(
        String query,
        List<String> parameters,
        String column,
        String value)
    {
        if(value.length() > 0) {
            if(parameters.isEmpty())
                query = query + " where "; 
            else
                query = query + " and "; 
            query = query + column + " like ?";
            parameters.add(value);
        }
        return query;
    }
    private String appendCondition2(
            String query,
            List<String> parameters,
            String column,
            String value)
        {
            if(value.length() > 0) {
                if(parameters.isEmpty())
                    query = query + " where "; 
                else
                    query = query + " or "; 
                query = query + column + " like ?";
                parameters.add(value);
            }
            return query;
        }
}



а преподаватель пометил блок- "бизнес логика" и сказал отделить....так я не поняла, как мне его отделить нужно...создать новый сервлет и бин что-ли?

да и зачем вообще это надо...ведь тогда в этом сервлете почти ничего не останется, зачем плодить их? объясните пожалуйста, а то может я не так что-то понимаю...

Автор: batigoal 6.2.2007, 09:07
Видимо, он имел в виду, что этот сервлет должен заниматься только отображением данных на страницу, а все реальные операции с базой следует вынести в отдельный класс.

Автор: alice18 7.2.2007, 10:55
ок, спасибо, буду пытаться

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