2016-07-14 32 views
0

我已經被賦予了在另一個開發者所做的服務層中實現我的服務的任務,但是我找不到正確的方法來完成它。
最初我班上一個Tomcat服務器上獨立工作,這裏是一個剪斷:在一個項目中使用javax.ws.rs符號集成一個擴展HttpServlet的類

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環境和Java Web開發也是如此,因此尋找一種簡單的方法來做到這一點,我

  • 進口javax.ws.rs,把符號在我的班級,像這樣:

    @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(); 
    
  • 編譯並把.class文件在Tomcat中的web.info指定的文件夾中,加在lib添加的servlet.jar。該web.info

    <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> 
    

    ,但我不能達到我的服務地址如下。 我正在閱讀很多答案,但無法使其正常工作。我怎麼能這樣做?

回答

0

好吧,它看起來像我做的。所以標籤是提前正確的一步:

@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,但它不能@Override的HttpServlet的方法,因爲它需要一個新的參數。它仍然有效,但感謝@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>

相關問題