繁体   English   中英

tomcat 7 - 带@ApplicationPath的@GET方法 - 状态404错误

[英]tomcat 7 - @GET method with @ApplicationPath - status 404 error

我想在tomcat上使用端点路径运行我的项目,这是我的两个java文件

这是我的app类

package app;

    import javax.ws.rs.ApplicationPath;
    import javax.ws.rs.core.Application;

    @ApplicationPath("/t")
    public class App extends Application{

    }

这是端点类

package controllers;

import java.util.List;

import javax.ws.rs.ApplicationPath;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

import dao.IEntityDAO;
import daoimpl.EntityDAOImpl;
import dto.Contacts;
import view.ContactView;

@ApplicationPath("/t1")
public class ContactController {

    @Path("/hi")
    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String getpassword()
    {
        return "Hiii";
    }

    @Path("/t2")
    @GET()
    @Produces(MediaType.APPLICATION_JSON)
    public List<ContactView> getallEntity(){

        IEntityDAO obj = new EntityDAOImpl();

        return obj.getallEntity();
    }       


}

我的tomcat 7正在运行但是当我通过跟踪路径在tomcat上运行它时

http://localhost:8006/ContactApp/t/t1/hi

它显示以下错误

HTTP Status 404 - /ContactApp/t/t1/hi


type Status report

message /ContactApp/t/t1/hi

description The requested resource is not available.


Apache Tomcat/7.0.47

谁都可以帮忙?

@ApplicationPath只能应用于Application的子类:

标识作为Path提供的所有资源URI的基URI的应用程序路径。 可能只适用于Application的子类。

对于这个:

@ApplicationPath("/t")
public class App extends Application{

}

没事。

但不应该使用@ApplicationPath声明的ContactController不是这样的:

@ApplicationPath("/t1")
public class ContactController {

但是使用@Path (没有前导斜杠):

@Path("t1")
public class ContactController {

Path javadoc的摘录:

标识资源类或类方法将为其请求的URI路径。 ....路径是相对的。 对于带注释的类,基URI是应用程序路径,请参阅ApplicationPath。

最后,您应该删除REST方法的@Path的前导斜杠: @Path("/t1")

它不是必需的,因为Path的规范说明了前导/被忽略,并且基本URI的处理就像添加了/

为了对基URI进行绝对路径绝对化,路径中的前导'/'被忽略,基URI被视为以'/'结尾

所以这些:

@Path("/hi")
...
@Path("/t2")

应该替换为:

@Path("hi")
...
@Path("t2")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM