所以我正在根据 MVC Pattern 建立一个网站。我使用 Eclipse/Tomcat。
我有一个 PostAccess 类,它从数据库中检索我的帖子,它创建一个包含 PostBean 项目的向量。servlet 将向量提供给 jsp 文件,而 jsp 文件创建 html 等。
我的问题是不止一个线程与向量交互,所以我在 eclipse 上得到了这个:
java.util.NoSuchElementException
at java.util.Vector$Itr.next(Unknown Source)
正如我从谷歌搜索中了解到的,这个错误是因为没有同步编辑向量的线程。
但是我到底应该在哪里进行同步?
此代码在我的 PostAccess 类中:
public synchronized Vector<Post> RetrievePosts() throws SQLException
{
向量 c = (Vector)(new Vector());return c; }
这是在我的 Servlet 类中:
public synchronized void process(ServletContext servletContext,HttpServletRequest request, HttpServletResponse response)
{
Vector<Post> c = (Vector<Post>)(new Vector<Post>());
try {
PostDAO pDAO=new PostDAO(servletContext);
c=(Vector<Post>) pDAO.RetrievePosts();
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
request.setAttribute("posts", c);
}
这是在我的jsp中:
<% Vector<Post> c =(Vector<Post>)request.getAttribute("posts");
Iterator<Post> i = c.iterator();
herePost p=(Post)i.next();
while (!c.isEmpty()) { %>