Witajcie,
Rozpocząłem naukę Javy EE: stworzyłem prosty servlet, podpiąłem do niego plik jsf i jedyne czego mi brakuje do rozpoczęcia to połaczenia się z bazą danych.
1. Uzupełniłem plik persistance.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">
<persistence-unit name="hotel">
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<class>user</class>
<properties>
<property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/kurs_javaee"/>
<property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
<property name="hibernate.connection.username" value="root"/>
<property name="hibernate.connection.password" value="admin"/>
</properties>
</persistence-unit>
</persistence>
2. Zawartośc servletu:
import javax.persistence.*;
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.swing.text.html.parser.Entity;
import java.io.IOException;
@WebServlet(name = "Servlett")
public class Servlett extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("test");
response.setContentType("text/html");
//request.getRequestDispatcher("WEB-INF/test.jsp").forward(request, response); ;
EntityManagerFactory emf = Persistence.createEntityManagerFactory("hotel");
EntityManager em = emf.createEntityManager();
user u = em.find(user.class, 1);
response.getWriter().println(u.getUsername());
emf.close();
em.close();
}
}
3. Plik user.java
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import java.io.Serializable;
@Entity
@Table(name="user")
public class user implements Serializable {
private static final long serialVersionUID = 1L;
@Id
private int id;
private String username = "";
private String password = "";
private String email = "";
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
4. Nie mam problemu połączyć się z bazą danych używając modułu intelij
5. Plik web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<servlet>
<servlet-name>Servlet</servlet-name>
<servlet-class>Servlett</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Servlet</servlet-name>
<url-pattern>/test</url-pattern>
</servlet-mapping>
</web-app>
6. Drzewo projektu:
Drzewo projektu - link z zapodaj.net
7. Exception z przeglądarki:
HTTP Status 500 - Servlet execution threw an exception
type Exception report
message Servlet execution threw an exception
description The server encountered an internal error that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: Servlet execution threw an exception
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
root cause
java.lang.NoClassDefFoundError: javax/persistence/Persistence
Servlett.doGet(Servlett.java:21)
javax.servlet.http.HttpServlet.service(HttpServlet.java:624)
javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
note The full stack trace of the root cause is available in the Apache Tomcat/7.0.86 logs.
Już drugi dzień siedzę i nie mogę znaleźć odpowiedzi na pytanie: co robię źle?