01/10/2018, 09:15
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")
// + " » </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!
Bài liên quan
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.
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ì
à ok anh em bí ý tượng. em làm được rồi
File in ra menu và sub menu lấy từ database jsp
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