![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
Escorial |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 13.8.2012 Репутация: нет Всего: нет |
у меня появилось желание создать логинку - но что бы имя, фамилия, логин, пароль и т.д. - заносились в бд.
использую postgresql, hibernate, jsp, tomсаt, eclipse. создал дао классы, класс User с гетерами и сеттерами, на основе него создается бд, создал сервлет который забирает значения полей (логина и пароля) с html страницы и при успешной регестрации переводит на другую страницу. ошибка появляется - когда я пытаюсь использовать полученые данные с request что бы задать логин и пароль нового User(а) и сохранить его в бд. просто на просто не хочет сохранятся в сессии хибернейта. если использовать классы не в сервлете все работает отлично. вот код: import org.hibernate.HibernateException; import org.hibernate.Query; public class UserCreate extends SessionCreate{ /*использует методы дао класса там все нормльно работает, как собственно и этот класс*/ public User createUser(String username, String password) throws Exception { try { begin(); User user = new User(username, password); getSession().save(user); commit(); return user; } catch (HibernateException e) { System.out.println("UserCreate"); rollback(); throw new Exception("Could not create user " + username, e); } } } import java.io.IOException; import javax.servlet.RequestDispatcher; import javax.servlet.ServletContext; 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 javax.servlet.http.HttpSession; @WebServlet("/login") public class LoginServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String loginName, password; loginName = request.getParameter("loginUser"); password = request.getParameter("password"); if (loginName != "" && loginName !=null && (password != null || password.trim() != "")){ UserCreate create = new UserCreate(); try { User user = create.createUser(loginName, password); } catch (Exception e) { System.out.println("error in the login servlet"); e.printStackTrace(); } }else{ response.sendRedirect("index.jsp"); return; } RequestDispatcher dispatcher = request.getRequestDispatcher("download.jsp"); dispatcher.forward(request, response); return; } } Это сообщение отредактировал(а) Escorial - 7.9.2012, 15:16 |
|||
|
||||
AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 8 Всего: 118 |
Как-то сложно выглядит - что это за класс такой SessionCreate ?
По идее (на простом уровне) в методе init сервлета загрузить сессию хибернейта. В destroy ее хорошо бы освободить. Ну и пользоваться как обычной сессией. Или тогда информации явно недостаточно - там же скорее всего какие-то логи есть, ошибки. Или просто тишина и ничего не происходит ? |
|||
|
||||
Escorial |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 13.8.2012 Репутация: нет Всего: нет |
Простите моя вина - ввел в недоумение. опустите остальные классы, есть только класс User с полями loginName и password с гетерами и сетерами - на основе этих двух полей создается бд.
я пытаюсь создать сессию хибернейта внутри сервлета, создаю нового юзера - устанавливаю на нем loginName и password и закрываю сессию. в результате происходит исключение ClassNotFoundExceprion : org.hibernate.Session. ниже код сервлета: @WebServlet("/login") public class LoginServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String loginName, password; loginName = request.getParameter("loginUser"); password = request.getParameter("password"); if (loginName != "" && loginName !=null && (password != null || password.trim() != "")){ User user = new User(); user.setLoginName(loginName); user.setPassword(password); try { SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory(); Session session = sessionFactory.openSession(); session.beginTransaction(); session.save(user); // здесь вылетает exception ClassNotFoundExceprion : org.hibernate.Session session.getTransaction().commit(); session.close(); } catch (Exception e) { System.out.println("error in the login servlet"); e.printStackTrace(); } }else{ response.sendRedirect("index.jsp"); return; } RequestDispatcher dispatcher = request.getRequestDispatcher("download.jsp"); dispatcher.forward(request, response); return; } } |
|||
|
||||
AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 8 Всего: 118 |
Как-то мало верится, что такая ошибка вылетает - может все-таки полный стектрейс посмотреть ?
Или если такое действительно происходит, то может перепутаны JAR-файлы ? Например есть версия Hibernate 4 и 3 "в одном флаконе". |
|||
|
||||
Escorial |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 13.8.2012 Репутация: нет Всего: нет |
так вся проблема в том, что если не в сервлете то все работает отлично. а вот когда пытаюсь сохранить обьект в сервлете вылетает ошибка. я просто не могу понять почему...
ошибка вылетает когда я заполняю поля логина и пароля в html страницы и нажимаю отправить. консоль: java.lang.ClassNotFoundException: org.hibernate.Session at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1676) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1521) at DataBase.LoginServlet.doPost(LoginServlet.java:24) at javax.servlet.http.HttpServlet.service(HttpServlet.java:641) at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:562) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:395) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:250) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:188) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) html страница: HTTP Status 500 - -------------------------------------------------------------------------------- type Exception report message description The server encountered an internal error () that prevented it from fulfilling this request. exception javax.servlet.ServletException: Servlet execution threw an exception root cause java.lang.NoClassDefFoundError: org/hibernate/Session DataBase.LoginServlet.doPost(LoginServlet.java:24) javax.servlet.http.HttpServlet.service(HttpServlet.java:641) javax.servlet.http.HttpServlet.service(HttpServlet.java:722) root cause java.lang.ClassNotFoundException: org.hibernate.Session org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1676) org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1521) DataBase.LoginServlet.doPost(LoginServlet.java:24) javax.servlet.http.HttpServlet.service(HttpServlet.java:641) javax.servlet.http.HttpServlet.service(HttpServlet.java:722) |
|||
|
||||
AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 8 Всего: 118 |
А jar-файлы с Hibernate укладываются вместе с приложением в каталог WEB-INF/lib ?
|
|||
|
||||
Escorial |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 13.8.2012 Репутация: нет Всего: нет |
та нет. если честно, даже не понимаю зачем это делать - я же импортировал необходимые библиотеки в проект? можете подробней обьяснить!
|
|||
|
||||
AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 8 Всего: 118 |
Мда-а-а. Сударь, у вас большие пробелы в образовании
![]() В двух словах - import позволяет ТОЛЬКО скомпилировать свой код. Но это не говорит, что импортированные классы автоматически появятся в приложении. Эти классы все также храняться в JAR-файлах и эти JAR-файлы надо устанвливать вместе с приложением (если конечно эти JAR-файлы не уставновлены уже на сервере Tomcat или другом подобном). Hibernate вообщем-то в поставку Tomcat не входит. Так что надо его с собой "носить". |
|||
|
||||
Escorial |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 13.8.2012 Репутация: нет Всего: нет |
Спасибо за обьяснение. я с этим никогда не сталкивался, так что рано или поздно...
кстати вы уже в одной из теме говорили про импортирование, поэтому я добавил jar файлы хибернейт в WEB-INF/lib, но ошибка осталась. Это сообщение отредактировал(а) Escorial - 11.9.2012, 11:51 |
|||
|
||||
AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 8 Всего: 118 |
Там вообщем-то несколько больше файлов. Может для начала попробовать что-то попроще ? А то сразу за Hibernate без понимания элементарных вещей слишком смело.
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |