【问题标题】:I am trying to do a simple jersey restful webservice hello world but its not working. Can anyone check where I am doing wrong?我正在尝试做一个简单的 jersey restful webservice hello world,但它不起作用。谁能检查我在哪里做错了?
【发布时间】:2017-06-17 12:29:55
【问题描述】:

我的 web.xml 文件: Web.xml 我正在尝试做一个简单的 jersey restful webservice hello world,但它不起作用。谁能检查我哪里做错了?

我正在使用以下网址:

http://localhost:8080/learning1/rest/firstRest/User1

    <?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">

  <servlet>
    <servlet-name>Learn</servlet-name>
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
     <!-- Register resources and providers under com.vogella.jersey.first package. -->
    <init-param>
        <param-name>jersey.config.server.provider.packages</param-name>
        <param-value>org.java.learning1</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>

  <servlet-mapping>
    <servlet-name>Learn</servlet-name>
    <url-pattern>/rest/*</url-pattern>
  </servlet-mapping>

</web-app>

我的 restfulwebservice java 文件:java 文件 服务器响应 HTTP 状态码 404:未找到

package org.java.learning1;

import javax.websocket.server.PathParam;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.HttpHeaders;

@Path("/firstRest")
public class firstRest {

    @GET
    @Produces("MediaType.TEXT_HTML")
    @Path("{name}")
    public String sendResponse(@Context HttpHeaders httpHeaders, @PathParam("name") String name){
        String greeting = "hello";
        return greeting;
    }
}

【问题讨论】:

  • @Produces 注释确实采用字符串,但使用 MediaType.TEXT_HTML 或“text/html”。你所拥有的不会被理解。我不确定这是您唯一的问题,但这是一个问题。

标签: java rest servlets


【解决方案1】:

您好 user7481861,欢迎使用 stackoverflow!

您的代码中有两个错误,我在下面更正了它们,并在每个错误中添加了注释,说明出了什么问题。

package org.java.learning1;

//import javax.websocket.server.PathParam; <-- incorrect import
import javax.ws.rs.PathParam;   // <<-- correct import
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.HttpHeaders;

@Path("/firstRest")
public class firstRest {

    @GET
    @Produces(MediaType.TEXT_HTML) // No quotes like stdunbar said in the comments 
    @Path("/{name}") // missing slash before name
    public String sendResponse(@Context HttpHeaders httpHeaders, @PathParam("name") String name){
        String greeting = "hello " + name; // concatenate the string with the variable name
        return greeting;
    }
}

【讨论】:

  • 附加信息斜杠“/”在这种情况下不是强制性的,尽管在参数之前。
  • @pabrantes,它现在工作正常。谢谢。如何打印通过 html URI 获得的值,即上述代码中的“名称”。
  • @user7481861 刚刚编辑了答案来做到这一点。基本上,您必须将字符串 hello 与您收到的变量连接(加入)。
  • @pabrantes,它不工作。我传递的参数没有显示在 UI 上。以下是我正在使用的网址。 localhost:8080/learning1/rest/firstRest/java
  • @user7481861 被复制粘贴 :-) 您的 PathParam 导入不正确。您不想要关于 websockets 的那个,而是关于 javax.ws 的那个......我已经编辑了答案以纠正这个问题
猜你喜欢
  • 1970-01-01
  • 2019-12-13
  • 1970-01-01
  • 2021-07-08
  • 1970-01-01
  • 2021-12-15
  • 1970-01-01
  • 1970-01-01
  • 2017-09-29
相关资源
最近更新 更多