1
我在安靜的應用程序和maven項目中都很新穎。我試圖在使用hibernate的maven中創建一個web動態項目應用程序。但我面臨一個404錯誤的問題。我認爲這個問題在我的web.xml文件中。如果有人能幫忙,我會很感激。以下是我的完整代碼。maven項目中的映射錯誤
MyResource.java
import com.crud.dao.EmployeeDAO;
@Path("/employees")
public class MyResource {
@GET
@Produces("application/json")
public List<Employee> getEmployee() {
EmployeeDAO dao = new EmployeeDAO();
List employees = dao.getEmployees();
return employees;
}
@POST
@Path("/create")
@Consumes("application/json")
public Response addEmployee(Employee emp){
emp.setName(emp.getName());
emp.setAge(emp.getAge());
EmployeeDAO dao = new EmployeeDAO();
dao.addEmployee(emp);
return Response.ok().build();
}
@PUT
@Path("/update/{id}")
@Consumes("application/json")
public Response updateEmployee(@PathParam("id") int id, Employee emp){
EmployeeDAO dao = new EmployeeDAO();
int count = dao.updateEmployee(id, emp);
if(count==0){
return Response.status(Response.Status.BAD_REQUEST).build();
}
return Response.ok().build();
}
@DELETE
@Path("/delete/{id}")
@Consumes("application/json")
public Response deleteEmployee(@PathParam("id") int id){
EmployeeDAO dao = new EmployeeDAO();
int count = dao.deleteEmployee(id);
if(count==0){
return Response.status(Response.Status.BAD_REQUEST).build();
}
return Response.ok().build();
}
}
Employee.java
package com.crud.dao;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity
public class Employee {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int id;
@Column
private String name;
@Column
private int age;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
EmployeeDAO.java
public class EmployeeDAO {
public void addEmployee(Employee bean){
Session session = SessionUtil.getSession();
Transaction tx = session.beginTransaction();
addEmployee(session,bean);
tx.commit();
session.close();
}
private void addEmployee(Session session, Employee bean){
Employee employee = new Employee();
employee.setName(bean.getName());
employee.setAge(bean.getAge());
session.save(employee);
}
public List<Employee> getEmployees(){
Session session = SessionUtil.getSession();
Query query = session.createQuery("from Employee");
List<Employee> employees = query.list();
session.close();
return employees;
}
public int deleteEmployee(int id) {
Session session = SessionUtil.getSession();
Transaction tx = session.beginTransaction();
String hql = "delete from Employee where id = :id";
Query query = session.createQuery(hql);
query.setInteger("id",id);
int rowCount = query.executeUpdate();
System.out.println("Rows affected: " + rowCount);
tx.commit();
session.close();
return rowCount;
}
public int updateEmployee(int id, Employee emp){
if(id <=0)
return 0;
Session session = SessionUtil.getSession();
Transaction tx = session.beginTransaction();
String hql = "update Employee set name = :name, age=:age where id = :id";
Query query = session.createQuery(hql);
query.setInteger("id",id);
query.setString("name",emp.getName());
query.setInteger("age",emp.getAge());
int rowCount = query.executeUpdate();
System.out.println("Rows affected: " + rowCount);
tx.commit();
session.close();
return rowCount;
}
}
SessionUtil.java
package com.crud.dao;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class SessionUtil {
private static SessionUtil instance=new SessionUtil();
private SessionFactory sessionFactory;
public static SessionUtil getInstance(){
return instance;
}
private SessionUtil(){
Configuration configuration = new Configuration();
configuration.configure("hibernate.cfg.xml");
sessionFactory = configuration.buildSessionFactory();
}
public static Session getSession(){
Session session = getInstance().sessionFactory.openSession();
return session;
}
}
的web.xml
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<application xmlns="http://wadl.dev.java.net/2009/02">
<doc xmlns:jersey="http://jersey.java.net/" jersey:generatedBy="Jersey: 2.22.1 2015-10-07 10:54:41"/>
<doc xmlns:jersey="http://jersey.java.net/" jersey:hint="This is simplified WADL with user and core resources only. To get full WADL with extended resources use the query parameter detail. Link: http://localhost:8080/jersey-webapp/webapi/application.wadl?detail=true"/>
<grammars/>
<resources base="http://localhost:8080/jerseypro/webapi/">
<resource path="/employees">
<method id="getEmployee" name="GET">
<response>
<representation mediaType="text/plain"/>
</response>
</method>
</resource>
</resources>
<servlet>
<servlet-name>jerseypro</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<!-- Define the ResourceConfig class -->
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>com.crud.jerseypro.MyResource</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey Pro</servlet-name>
<url-pattern>/webapi/*</url-pattern>
</servlet-mapping>
</application>
的pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>jersey</groupId>
<artifactId>jerseypro</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>jerseypro</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.3.10.Final</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.34</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.1.1</version>
<executions>
<execution>
<phase>
Employee
</phase>
<goals>
<goal>java</goal>
</goals>
<configuration>
<mainClass>com.crud.dao.Employee</mainClass>
<arguments>
<argument>
myArg1
</argument>
<argument>myArg2</argument>
</arguments>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
預先感謝您!
我改變了它,但同樣的錯誤再次 – Abaya
我不知道你改變了什麼。你添加了tomcat插件嗎?這個'com.crud.dao.Employee'不是主類,不會做任何事情。你沒有在你看到的任何一種web服務器。你如何開始申請? –
是的,這正是我的問題。非常感謝。你非常有幫助 – Abaya