Làm việc với ArrayList Object trong 1 trang jsp

Em có 1 trang jsp đọc database từ mysql như sau:

<%@page import="mypack.Menu"%>
<%@page import="java.util.ArrayList"%>
<%@page import="java.util.Vector"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@page import="java.sql.*"%>
<%@page import="com.mysql.jdbc.Connection"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <link rel="stylesheet" type="text/css" href="skeleton/skeleton.css" />
        <script src="skeleton/stuHover.js" type="text/javascript"></script>
        <title>JSP Page</title>
    </head>
    <body>
        <%
            try {
                String _URL = "jdbc:mysql://localhost/menu";
                String _USER = "root";
                String _PASS = "password";
                java.sql.Connection connection = null;

                Class.forName("com.mysql.jdbc.Driver").newInstance(); 
                connection = DriverManager.getConnection(_URL, _USER, _PASS);
                
                /////// code menu here
                ArrayList<Menu> mnLV1 = new ArrayList<Menu>();
                ArrayList<Menu> mnLV2 = new ArrayList<Menu>();
                ArrayList<Menu> mnLV3 = new ArrayList<Menu>();
                ArrayList<Menu> mnLV4 = new ArrayList<Menu>();
                
                ResultSet rs = null;
                PreparedStatement pstmt = null;
                String ds = "";
                ds+= "<ul id=\"nav\">";
                try {
                    pstmt = connection.prepareStatement("select * from tmenu");
                    rs = pstmt.executeQuery();                    
                    while(rs.next()) {
                        int lvID = rs.getInt("levelID");
                        if(lvID == 1)
                        {
                            mnLV1.add(new Menu(rs.getInt("itemID"),rs.getString("itemText"),
                                    rs.getString("url"),rs.getInt("levelID"),rs.getInt("parentID")));
                        }
                        else if (lvID == 2)
                        {
                            mnLV2.add(new Menu(rs.getInt("itemID"),rs.getString("itemText"),
                                    rs.getString("url"),rs.getInt("levelID"),rs.getInt("parentID")));
                        }
                        else if (lvID == 3)
                        {
                            mnLV3.add(new Menu(rs.getInt("itemID"),rs.getString("itemText"),
                                    rs.getString("url"),rs.getInt("levelID"),rs.getInt("parentID")));
                        }
                        else if (lvID == 4)
                        {
                            mnLV4.add(new Menu(rs.getInt("itemID"),rs.getString("itemText"),
                                    rs.getString("url"),rs.getInt("levelID"),rs.getInt("parentID")));
                        }
                        //if(lvID == 1)
                        //{
                            //ds += "<li>";
                            //ds += "<a href=\""+rs.getString("url")+"\">"+rs.getString("itemText")
                            //            + " &#187; </a>";
                            // += "</li>";
                            //}                       
                    }
                }
                catch(Exception ex){
                    ex.printStackTrace();
                }
                ds += "</ul>";
                out.println(ds);

                //////
            } 
            catch(Exception ex){
                out.println("Unable to connect to database"+ex);
            }       
        %>
    </body>
</html>

còn đây là class object Menu

package mypack;

public class Menu {
    int itemID,parentID,levelID;
    String itemText = "", url = "";
    
    public Menu(int itemID, String itemText, String url, int levelID, int parentID)
    {
        this.itemID = itemID;
        this.itemText = itemText;
        this.url = url;
        this.levelID = levelID;
        this.parentID = parentID;
    }
}

Mục đích của em là đọc database ghi lại vào 4 arraylist ( mỗi arraylist lưu trữ tùy vào levelID của menu và submenu của nó

Bây giờ làm sao để đọc được những cái đó làm việc theo mảng được nhỉ? Em xem qua các phương thức thì có get(int index) em thử thì nó ra 1 đống loằng ngoằng

Cảm ơn các bác! Có gì các bác cứ đặt câu hỏi em nói ý tưởng của em . Thanks mọi người!

Em vừa thêm mấy hàm get thông tin bên class Menu rồi giờ em có thể lấy ra được thông tin từ mấy hàm get này. Giờ em đang sắp xếp mấy các submenu các bác góp ý em với.

public int getItemID(){
        return itemID;
    }   
    public int getLevelID(){
        return levelID;
    }
    public int getParentID(){
        return parentID;
    }
    public String getItemText(){
        return itemText;
    }
    public String getURL(){
        return url;
    }

là sao nhỉ mh vẫn ko hiểu ? bạn cho vào 4 arraylist rồi còn gì
lấy ra theo mảng thì

 for(int i=0;i<=mnLV1.size();i++){
       mnLV1.get(i).getitemID;

}

à ok anh em bí ý tượng. em làm được rồi :smiley:
File in ra menu và sub menu lấy từ database jsp

<%@page import="mypack.Menu"%>
<%@page import="java.util.ArrayList"%>
<%@page import="java.util.Vector"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@page import="java.sql.*"%>
<%@page import="com.mysql.jdbc.Connection"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <link rel="stylesheet" type="text/css" href="skeleton/skeleton.css" />
        <script src="skeleton/stuHover.js" type="text/javascript"></script>
        <title>JSP Page</title>
    </head>
    <body>
        <%
            try {
                String _URL = "jdbc:mysql://localhost/menu";
                String _USER = "root";
                String _PASS = "03091997";
                java.sql.Connection connection = null;

                Class.forName("com.mysql.jdbc.Driver").newInstance(); 
                connection = DriverManager.getConnection(_URL, _USER, _PASS);
                
                /////// code menu here
                ArrayList<Menu> mnLV1 = new ArrayList<Menu>();
                ArrayList<Menu> mnLV2 = new ArrayList<Menu>();
                ArrayList<Menu> mnLV3 = new ArrayList<Menu>();
                ArrayList<Menu> mnLV4 = new ArrayList<Menu>();
                
                ResultSet rs = null;
                PreparedStatement pstmt = null;
                String ds = "";
                ds+= "<ul id=\"nav\">";
                try {
                    pstmt = connection.prepareStatement("select * from tmenu");
                    rs = pstmt.executeQuery();                    
                    while(rs.next()) {
                        int lvID = rs.getInt("levelID");
                        if(lvID == 1)
                        {
                            mnLV1.add(new Menu(rs.getInt("itemID"),rs.getString("itemText"),
                                    rs.getString("url"),rs.getInt("levelID"),rs.getInt("parentID")));
                        }
                        else if (lvID == 2)
                        {
                            mnLV2.add(new Menu(rs.getInt("itemID"),rs.getString("itemText"),
                                    rs.getString("url"),rs.getInt("levelID"),rs.getInt("parentID")));
                        }
                        else if (lvID == 3)
                        {
                            mnLV3.add(new Menu(rs.getInt("itemID"),rs.getString("itemText"),
                                    rs.getString("url"),rs.getInt("levelID"),rs.getInt("parentID")));
                        }
                        else if (lvID == 4)
                        {
                            mnLV4.add(new Menu(rs.getInt("itemID"),rs.getString("itemText"),
                                    rs.getString("url"),rs.getInt("levelID"),rs.getInt("parentID")));
                        }
                        //if(lvID == 1)
                        //{
                            //ds += "<li>";
                            //ds += "<a href=\""+rs.getString("url")+"\">"+rs.getString("itemText")
                            //            + " &#187; </a>";
                            // += "</li>";
                            //}                       
                    }
                    for(int i = 0; i < mnLV1.size(); i++)
                    {
                        int prID1 = mnLV1.get(i).getItemID();
                        ds += "<li><a href=\""+mnLV1.get(i).getURL()+"\">" + mnLV1.get(i).getItemText() + " &#187;</a>";
                        if(mnLV2.size() > 0)
                        {
                            ds += "<ul>";
                            for(int j = 0; j < mnLV2.size(); j++)
                            {
                                int chrID1 = mnLV2.get(j).getParentID();
                                int prID2 = mnLV2.get(j).getItemID();
                                if(prID1 == chrID1){
                                ds += "<li>";
                                if(mnLV3.size() > 0)
                                {
                                    ds += "<a href=\"" + mnLV2.get(j).getURL() + "\">" + mnLV2.get(j).getItemText() + " &#187;</a>";
                                    ds += "<ul>";
                                    for(int k = 0; k<mnLV3.size(); k++)
                                    {
                                        int chrID2 = mnLV3.get(k).getParentID();
                                        int prID3 = mnLV3.get(k).getItemID();
                                        if (prID2 == chrID2){
                                        ds += "<li>";
                                        if(mnLV4.size() > 0)
                                        {
                                            ds += "<a href=\"" + mnLV3.get(k).getURL() + "\">" + mnLV3.get(k).getItemText() + " &#187;</a>";
                                            ds += "<ul>";
                                            for(int h = 0; h<mnLV4.size(); h++)
                                            {
                                                int chrID3 = mnLV4.get(h).getParentID();
                                                if(prID3 == chrID3){
                                                ds += "<li><a href=\"" + mnLV4.get(h).getURL() + "\">" + mnLV4.get(h).getItemText() + "</a></li>";
                                                } // if(prID3 == chrID3)
                                            }
                                            ds += "</ul>";
                                        }
                                        else
                                        {
                                            ds += "<a href=\"" + mnLV3.get(k).getURL() + "\">" + mnLV3.get(k).getItemText() + "</a>";
                                        }
                                        ds += "</li>";
                                        } // if (prID2 == chrID2)
                                    }
                                    ds += "</ul>";
                                }
                                else
                                {
                                    ds += "<a href=\"" + mnLV2.get(j).getURL() + "\">" + mnLV2.get(j).getItemText() + "</a>";
                                }
                                ds += "</li>";
                                } // if prID == chrID
                            }
                            ds += "</ul>";
                            
                        }
                        ds += "</li>";
                    }
                    ds += "</ul>";

                }
                catch(Exception ex){
                    ex.printStackTrace();
                }
                out.println(ds);

                //////
            } 
            catch(Exception ex){
                out.println("Unable to connect to database"+ex);
            }       
        %>
    </body>
</html>

Bạn học Servlet hay MVC chưa vậy ? Cơ bản JSP thuộc View (nhận dữ liệu từ controller và hiển thị layout) trong mô hình MVC nên việc trực tiếp kết nối với database không phải là good pratice

Em có học servlet đang học MVC anh @@ thấy trên stackoverflow họ bảo viết code java trong jsp là very bad!!!

mà em mới học nên viết vậy cho nhanh, để em nghiên cứu cải tiến từ từ @@

đổi luôn đi bạn viết business riêng view riêng , làm theo mô hình MVC ấy , mình thấy bên php nó cứ thích viết chung kiểu này nhìn rất rối , cứ tách riêng ra sẽ học nhanh hơn đó … thay đổi ngay đi vì kiểu viết này rất là bad và không ai viết kiểu này nữa …nên dùng tablib đi bạn

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?