如何循环存储在会话中的值?

时间:2011-01-25 06:33:25

标签: jsp session arraylist

很抱歉打断你们所有人。

我对会话有疑问。

在我的情况下,我需要检查会话是否存储了值。

如果会话不为null,我想循环该值以进行比较。

现在,我只使用if语句检查书籍ID的最后一条记录是否重复。

但我不知道如何使用循环检查是否有任何重复的书籍ID。

有人会为我提供一些建议来实现这个目标吗?

非常感谢。

这是我的源代码:

<%@ page contentType="text/html; charset=Big5"%>
<%@ page import="java.io.*" %>
<%@ page import="java.sql.*" %>
<%@ page import ="javax.sql.*" %>
<%@ page import="java.util.*" %>
<%@ page import="java.lang.*"%>


    <%!
    public class BookInfo {

        private String id;
        private String name;
        private int count;

        public BookInfo(String id, String name, int count) {
            this.id = id;
            this.name = name;
            this.count = count;
        }

        public String getId() {
            return id;
        }

        public void setId(String id) {
            this.id = id;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public int getCount() {
            return count;
        }

        public void setCount(int count) {
            this.count = count;
        }

        public boolean equals(Object obj) {
            if (this == obj)
                return true;
            if (obj == null)
                return false;
            if (getClass() != obj.getClass())
                return false;
            BookInfo other = (BookInfo) obj;
            if (id == null) {
                if (other.id != null)
                    return false;
            } else if (!id.equals(other.id))
                return false;
            return true;
        }

        public String toString()
        {
            return " ISBN is " + getId() + " , book title is " + getName() + " & order no. is " + getCount() + "\n";
        }   
    }
    %>

    <%
        try {
            List MyCart = (List) request.getSession().getAttribute("MyCart");
            if (MyCart == null) {
                MyCart = new ArrayList();
            }

            BookInfo book = new BookInfo("2", "C++ langauge", 1);
            //BookInfo book = new BookInfo("2", "java", 1);


            if (!MyCart.contains(book)) {
                MyCart.add(book);

            } else {

                //how to loop the value stored in session?

                BookInfo tmpBook = (BookInfo) MyCart.get(MyCart.indexOf(book));
                tmpBook.setCount(tmpBook.getCount() + book.getCount());



            }

            request.getSession().setAttribute("MyCart", MyCart);


            System.out.println(MyCart);

        }
        catch ( Exception main_error ) {
            System.out.println("%%%%%%%%%%%"+main_error);
        }
    %>

1 个答案:

答案 0 :(得分:1)

你不应该编写java代码,特别是在JSP中创建类。它的编码实践非常糟糕 - 尝试将代码提取到实际的java文件中。

但要回答你的问题:你应该看到List对象是可迭代的,所以你可以使用

循环它
for(BookInfo aBook: MyCart){
    //code to look at each BookInfo object here
}