По просьбе модератора, создаю новую тему на основе предыдущей (для нового вопроса - новая тема) Я переделал в сервлет эту прогу и теперь TestExample.java выглядит следующим образом:
| Код | package de.laliluna.example;
import java.util.Iterator; import java.util.List; import java.io.*; import java.net.*; import javax.servlet.*; import javax.servlet.http.*; import org.apache.log4j.Logger; import org.hibernate.HibernateException; import org.hibernate.Session; import org.hibernate.Transaction; import de.laliluna.hibernate.InitSessionFactory;
//public class TestExample { public class TestExample extends HttpServlet { protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); /* Honey forestHoney = new Honey(); forestHoney.setName("forest honey"); forestHoney.setTaste("very sweet"); Honey forest = new Honey(); forest.setName("forest honey"); forest.setTaste("very bad"); Honey countryHoney = new Honey(); countryHoney.setName("country honey"); countryHoney.setTaste("tasty"); createHoney(forestHoney); createHoney(countryHoney); createHoney(forest); */ out.println("<html>" + "<head>" + "<title>Servlet MyHelly</title>"); out.println("</head>" + "<body>"); Transaction tx = null; Session session = InitSessionFactory.getInstance().getCurrentSession(); try{ tx = session.beginTransaction(); List honeys = session.createQuery("from Honey as h WHERE name = 'forest honey'").list(); for (Iterator iter = honeys.iterator(); iter.hasNext();) { Honey elem = (Honey) iter.next();
out.println("Name = " + elem.getTaste()); } session.update(honeys); tx.commit(); } catch (HibernateException e) { e.printStackTrace(); if (tx != null && tx.isActive()) tx.rollback();
} out.println("</body>" + "</html>"); out.close(); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } public String getServletInfo() { return "Short description"; } private static void deleteHoney(Honey honey) { Transaction tx = null; Session session = InitSessionFactory.getInstance().getCurrentSession(); try { tx = session.beginTransaction(); session.delete(honey); tx.commit(); } catch (HibernateException e) { e.printStackTrace(); if (tx != null && tx.isActive()) tx.rollback(); } }
private static void createHoney(Honey honey) { Transaction tx = null; Session session = InitSessionFactory.getInstance().getCurrentSession(); try { tx = session.beginTransaction(); session.save(honey); tx.commit(); } catch (HibernateException e) { e.printStackTrace(); if (tx != null && tx.isActive()) tx.rollback(); } }
} |
Не произведение исскуств, но все же. Если я убираю /* */, то сервлет запускается и выдает: Name = very sweet Name = very bad - что и требуется. Если же снова поставить, то таблица в базе данных опустевает и сервлет ничего не выдает. Нужно чтобы сервлет ничего не создавал, а просто искал. |