JSP表单提交并列出人口问题

时间:2019-03-02 21:24:22

标签: java hibernate jsp

我在使用一个简单的JSP应用程序时遇到了几个问题。当我进入“添加”或“删除”页面时,我可以输入数据并提交,该项目可以按原样添加到数据库中或从数据库中删除,但是它不是使我返回页面,而是将我带到一个页面,上面写着“服务于:/ ToDoList”。我可以使用“后退”按钮返回到该页面,但它应该只是重新加载同一jsp页面。以前可以使用,但是我不确定自己做了什么更改。

此外,我正在尝试使用“显示列表”页面(show.jsp)上的数据库数据填充表,但这给了我一个ConcurrentModificationException,我无法弄清楚。我真的不确定我在做什么错。任何帮助表示赞赏。 ListItem对象只是一个int itemID和字符串itemDesc。代码如下:

add.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>

<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Add an item</title>
</head>
<body>
<h1>Add an item</h1>
<form action="AddItem" method="post">
	<table>
		<tr><td><input type="text" name="desc" value="" size="100"/></td></tr>
		<tr><td><input type="submit" value="Submit" name="addSub" /></td></tr>
	</table>
</form>
<input type="submit" name="btnAdd" value="Back to menu" onclick="window.location='/ToDoList/index.jsp'">
</body>
</html>

delete.jsp

<%@page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Show list</title>
</head>
<body>
<h1>To-Do List</h1>
<form action="ShowList" method="post">
	<input type="submit" value="Populate">
</form>
	<table>
		<c:forEach var="item" items="${dispList}">
	  		<tr>
	  			<td>${item.itemID}</td>
	  			<td>${item.itemDesc}.</td>
	  		</tr>
		</c:forEach>
	</table>
<input type="submit" name="btnAdd" value="Back to menu" onclick="window.location='/ToDoList/index.jsp'">
</body>
</html>

show.jsp

<%@page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Show list</title>
</head>
<body>
<h1>To-Do List</h1>
<form action="ShowList" method="post">
	<input type="submit" value="Populate">
</form>
	<table>
		<c:forEach var="item" items="${dispList}">
	  		<tr>
	  			<td>${item.itemID}</td>
	  			<td>${item.itemDesc}.</td>
	  		</tr>
		</c:forEach>
	</table>
<input type="submit" name="btnAdd" value="Back to menu" onclick="window.location='/ToDoList/index.jsp'">
</body>
</html>

ItemList.java

package todolist;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Scanner;

import org.apache.tomcat.util.http.fileupload.util.LimitedInputStream;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.query.Query;

public class ItemList {
	List<ListItem> list = new ArrayList<>();
	List<ListItem> tempList = new ArrayList<>();

	public static SessionFactory factory;
	
	public ItemList() {
		super();
	}

	public void addItem(String itemStr) {		
		//list.add(item);
		//list.get(list.size() - 1).setItemNumber(list.size());
		ListItem item = new ListItem(itemStr);
		try {
			factory = new Configuration().configure().buildSessionFactory();
		} catch (Throwable ex) { 
			System.err.println("Failed to create sessionFactory object." + ex);
			throw new ExceptionInInitializerError(ex); 
		}
		Session session = factory.openSession();
	    Transaction tx = null;
	    Integer itemID = null;
	    try {
	       tx = session.beginTransaction();
	       itemID = (Integer) session.save(item);
		   tx.commit();
	    } catch (HibernateException e) {
	    	if (tx!=null) tx.rollback();
	    	e.printStackTrace(); 
		} finally {
			session.close(); 
		}
	}
	
	public void delItem(int itemNbr) {
		try {
			factory = new Configuration().configure().buildSessionFactory();
		} catch (Throwable ex) { 
			System.err.println("Failed to create sessionFactory object." + ex);
			throw new ExceptionInInitializerError(ex); 
		}
	    Session session = factory.openSession();		
	    Transaction tx = null;
	    ListItem item2 = (ListItem)session.get(ListItem.class, itemNbr);
	    try {
	       tx = session.beginTransaction();
	       session.delete(item2); 
	       tx.commit();
	    } catch (HibernateException e) {
	       if (tx!=null) tx.rollback();
	       e.printStackTrace(); 
	    } finally {
	       session.close(); 
	    }
	}
	
	public List<ListItem> getList() {
		try {
			factory = new Configuration().configure().buildSessionFactory();
		} catch (Throwable ex) { 
			System.err.println("Failed to create sessionFactory object." + ex);
			throw new ExceptionInInitializerError(ex); 
		}
		Session session = factory.openSession();
		Transaction tx = null;
	    try {
	      tx = session.beginTransaction();
	      Query<ListItem> queryList = session.createQuery("FROM itemlist");
	      tempList = queryList.list();
	      tx.commit();   
	      } catch (HibernateException e) {
	         if (tx!=null) tx.rollback();
	         e.printStackTrace(); 
	      } finally {
	         session.close(); 
	      }
	    list = tempList;
	    return list;
	}
	
	public int size() {
		return list.size();
	}
}

AddItem.java

package todolist;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class AddItem
 */
@WebServlet("/AddItem")
public class AddItem extends HttpServlet {
	private static final long serialVersionUID = 1L;
	ItemList list = new ItemList();
    /**
     * @see HttpServlet#HttpServlet()
     */
    public AddItem() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		RequestDispatcher rd = request.getRequestDispatcher("add.jsp");
		rd.forward(request, response);	
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		if(request.getParameter("desc")!=null) {
			String desc = request.getParameter("desc");
			list.addItem(desc);
			RequestDispatcher rd = request.getRequestDispatcher("add.jsp");
			rd.forward(request, response);
		}
		
	}

}

DelItem.java

package todolist;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.hibernate.HibernateException;

/**
 * Servlet implementation class DelItem
 */
@WebServlet("/DelItem")
public class DelItem extends HttpServlet {
	private static final long serialVersionUID = 1L;
	ItemList list = new ItemList();       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public DelItem() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		RequestDispatcher rd = request.getRequestDispatcher("delete.jsp");
		rd.forward(request, response);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		if(request.getParameter("itemNbr")!=null && request.getParameter("itemNbr")!="") {
			int itemNbr = Integer.parseInt(request.getParameter("itemNbr"));
			list.delItem(itemNbr);
			RequestDispatcher rd = request.getRequestDispatcher("delete.jsp");
			rd.forward(request, response);
		}

	}

}

ShowList.java

package todolist;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class ShowList
 */
@WebServlet("/ShowList")
public class ShowList extends HttpServlet {
	private static final long serialVersionUID = 1L;
	ItemList list2 = new ItemList();
    /**
     * @see HttpServlet#HttpServlet()
     */
    public ShowList() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		RequestDispatcher rd = request.getRequestDispatcher("show.jsp");
        rd.forward(request, response);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		List<ListItem> tempList = new ArrayList<>();
		tempList = list2.getList();
		request.setAttribute("dispList", tempList);
        RequestDispatcher rd = request.getRequestDispatcher("show.jsp");
        rd.forward(request, response);
	}

}

0 个答案:

没有答案