有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java使用javax在项目中集成扩展HttpServlet的类。ws。rs符号

我的任务是在另一个开发人员开发的服务层中实现我的服务,但我找不到正确的方法
最初,我的班级在Tomcat服务器上独立工作,这里有一个小提示:

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class fileServlet extends HttpServlet {

   @Override
   public void doGet(@Context HttpServletRequest request,@Context HttpServletResponse response)
               throws IOException, ServletException {
       OutputStream output = response.getOutputStream();
       String  queryString = request.getQueryString();
//etcetera....

下面是另一个人制作的课程片段:

import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;

@Path("/CustomerService")
public class SolrService {

@GET
@Path("/customers")
@Produces(MediaType.APPLICATION_JSON)
public List<Map<String,Object>> getCustomers(@QueryParam("mode") String mode,@QueryParam("query") String query,@QueryParam("fields") String fields){
    return get(mode,query,fields);
}

我对servlet环境和JavaWeb开发都是相当陌生的,所以我正在寻找一种简单的方法来实现这一点

  • 导入javax。ws。然后在我的课堂上写上记号,就像这样:

    @Path("/FileManager")
     public class fileServlet extends HttpServlet {
    
    @GET
    @Path("/fileGetter")
    @Override
    public void doGet(@Context HttpServletRequest request,@Context HttpServletResponse response)
    
    
               throws IOException, ServletException {
       OutputStream output = response.getOutputStream();
       String  queryString = request.getQueryString();
    
  • 编译并放置。在web中指定的文件夹中初始化文件。TomCat中的信息,并添加了servlet。jar在库中。网络。信息

       <servlet>
       <servlet-name>CustomerServlet</servlet-name>
        <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
    <init-param>
      <param-name>jersey.config.server.provider.packages</param-name>
      <param-value>company.rest</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
    

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

    但我无法通过地址找到我的服务。 我读了很多答案,但无论如何都不能让它工作。我怎么做呢


共 (1) 个答案

  1. # 1 楼答案

    看来我成功了。因此,标签是向前迈出的正确一步:

    @Path("/FileManager")
    public class fileServlet extends HttpServlet {
    
        @GET
        @Path("/fileGetter/{fileString}")
       public void doGet(@Context HttpServletRequest request,@Context HttpServletResponse response,@PathParam("fileString") String fileName)
                   throws IOException, ServletException {
           OutputStream output = response.getOutputStream();
           //Get the fileID.png
           String fileString = fileName;
    

    请注意,该方法仍然是一个doGet,但它不能@OverrideHttpServlet方法,因为它接受一个新参数。不过,多亏了@GET标记,它仍然可以工作
    真正的诀窍是在加载web时添加我的类。xml:

        <init-param>
    
      <param-name>javax.ws.rs.core.Application</param-name>
    
      <param-value>gft.rest.FileServlet</param-value>
    
    </init-param>
    
    <load-on-startup>1</load-on-startup>
    

    <servlet>之间