#java #hibernate #jsp
#java #переход в спящий режим #jsp
Вопрос:
У меня возникла пара проблем с простым приложением JSP. Когда я захожу на страницы добавления или удаления, я могу ввести данные и отправить их, элемент либо добавляется, либо удаляется в / из базы данных, как и должно быть, но вместо того, чтобы возвращать меня на страницу, он отправляет меня на страницу с надписью «Отправлено по адресу: / ToDoList». Я могу использовать кнопку «Назад», чтобы вернуться на страницу, но предполагается, что это просто перезагрузит ту же страницу jsp. Раньше это работало, но я не уверен, что я изменил.
Кроме того, я пытаюсь заполнить таблицу данными из базы данных на странице Показать список (show.jsp), но это выдает мне исключение ConcurrentModificationException, которое я не могу определить. Я действительно не уверен, что я здесь делаю не так. Любая помощь приветствуется. Объект ListItem — это просто int ItemId и string ItemDesc. Следующий код:
добавить.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>
удалить.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>
показать.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 amp;amp; 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);
}
}