java - 状态 404 - 未在 RESTFul API 的 @post 注释上找到
问题描述
我在 java 文件中给出了配置详细信息,当我尝试访问 URL 时出现状态 404 错误。找不到我哪里出错了。我尝试访问的 URL 是http://localhost:8080/foodCourt/webapi/foods
. 请帮助解决代码。在此,我将分享代码详细信息。使用@Post
注释时出现此错误。请查找 web.xml 文件的详细信息。我在文件中为 url 模式提供 webapi。我提供了必要的 jar 文件,包括 hibernate、jersey、jboss
@ApplicationPath("webapi")
public class AplicationConfig extends Application {
@Override
public Set<Class<?>> getClasses() {
Set<Class<?>> resources = new java.util.HashSet<>();
addRestResourceClasses(resources);
return resources;
}
private void addRestResourceClasses(Set<Class<?>> resources) {
resources.add(resources.Foods.class);
}
}
@XmlRootElement
public class FoodCourt {
private int foodCourtId;
private String foodCourtName;
private int seatingCapacity;
private int votes;
public int getFoodCourtId() {
return foodCourtId;
}
public void setFoodCourtId(int foodCourtId) {
this.foodCourtId = foodCourtId;
}
public String getFoodCourtName() {
return foodCourtName;
}
public void setFoodCourtName(String foodCourtName) {
this.foodCourtName = foodCourtName;
}
public int getSeatingCapacity() {
return seatingCapacity;
}
public void setSeatingCapacity(int seatingCapacity) {
this.seatingCapacity = seatingCapacity;
}
public int getVotes() {
return votes;
}
public void setVotes(int votes) {
this.votes = votes;
}
}
@Path("/foods")
public class Foods {
private Foods()
{}
private FoodDAO fooddao = new FoodCourtDAOImple();
@POST
@Consumes("application/json")
@Produces("application/xml,application/json")
public Response fooddetails(FoodCourt foodDTO) throws Exception
{
int id=fooddao.addFoodDetails(foodDTO);
System.out.println(id);
return Response.status(201).entity(id).build();
}
}
@Entity
@Table(name="FoodCourt")
public class FoodCourtEntity {
@Id
private int foodCourtId;
private String foodCourtName;
private int seatingCapacity;
private int votes;
public int getFoodCourtId() {
return foodCourtId;
}
public void setFoodCourtId(int foodCourtId) {
this.foodCourtId = foodCourtId;
}
public String getFoodCourtName() {
return foodCourtName;
}
public void setFoodCourtName(String foodCourtName) {
this.foodCourtName = foodCourtName;
}
public int getSeatingCapacity() {
return seatingCapacity;
}
public void setSeatingCapacity(int seatingCapacity) {
this.seatingCapacity = seatingCapacity;
}
public int getVotes() {
return votes;
}
public void setVotes(int votes) {
this.votes = votes;
}
}
public class FoodCourtDAOImple implements FoodDAO {
Session session;
SessionFactory factory;
@Override
public int addFoodDetails(FoodCourt foodcourt) throws Exception {
// TODO Auto-generated method stub
int foodCourtId=0;
try
{
factory = HibernateUtil.getSessionFactory();
session = factory.openSession();
Transaction tx = session.beginTransaction();
FoodCourt foodDTO=foodcourt;
FoodCourtEntity foodEntity=new FoodCourtEntity();
foodEntity.setFoodCourtId(foodDTO.getFoodCourtId());
foodEntity.setFoodCourtName(foodDTO.getFoodCourtName());
foodEntity.setSeatingCapacity(foodDTO.getSeatingCapacity());
foodEntity.setVotes(foodDTO.getVotes());
foodCourtId=(int) session.save(foodEntity);
return foodCourtId;
}catch (HibernateException exception) {
throw new Exception(exception.getMessage());
}
finally {
if (session != null || session.isOpen()) {
session.close();
}
}
}
}
public class HibernateUtil {
private static SessionFactory factory;
private HibernateUtil() {
}
public static SessionFactory getSessionFactory() {
Configuration cfg = new Configuration().configure();
ServiceRegistry serviceRegistry;
serviceRegistry = new ServiceRegistryBuilder().applySettings(cfg.getProperties()).buildServiceRegistry();
factory = cfg.buildSessionFactory(serviceRegistry);
return factory;
}
}
<?xml version="1.0" encoding="UTF-8"?>
<!-- This web.xml file is not required when using Servlet 3.0 container,
see implementation details http://jersey.java.net/nonav/documentation/latest/jax-rs.html -->
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet>
<servlet-name>Jersey Web Application</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>org.aarthi.rest.messenger</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey Web Application</servlet-name>
<url-pattern>/webapi/*</url-pattern>
</servlet-mapping>
解决方案
我看不到控制器的任何映射,请尝试使用以下 url:
http://localhost:8080/webapi/foods
推荐阅读
- python-3.x - 播放器在屏幕上正确时闪烁,python和pygame
- c# - 上午 12 点至上午 6 点之间减少的负面结果
- sql-server - 更长的 SQL Server 作业历史
- android - 如何使用 OnNavigationItemSelectedListener 关闭片段以查看下面的活动
- javascript - 如何在身份验证期间更改 this.state 状态?Firebase + 反应路由器
- javascript - React MUI:持久+响应式抽屉
- spring-security - 缺少 Id_Token Spring Oauth2 身份验证服务器和 mod_auth_openidc
- amazon-web-services - Neo4j:服务不可用:Websocket 连接失败
- angular - 在 Angular 7 中检测到循环依赖
- python - 如何使用 Python 多进程 apply_async 获得精确的超时?