使用javax.ws.rs表示法在项目中集成扩展HttpServlet的类

时间:2016-07-14 13:18:26

标签: java web-services tomcat servlets

我被赋予了在另一位开发人员制作的服务层中实现我的服务的任务,但我无法找到正确的方法。
最初我的班级在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环境和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>
    

    但我无法在地址后找到我的服务。 我读了很多答案,但无论如何都无法正常工作。我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

好吧,看起来我做到了。因此标签是向前迈出的一步:

for($i=1;$i<5;$i++){
    $active_id=''; 
    $count=0;
    $active_code=''; 
    $myarray = array();
    while ( $count < 12 ) {
        $random_digit = mt_rand(0, 9);
        $active_id .= $random_digit;
        $count++;
    }
    echo $active_id;
}

请注意,该方法仍然是一个doGet,但它不能@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; HttpServlet方法,因为它需要一个新参数。但是,由于@Override标记,它仍然有效 真正的诀窍是在加载web.xml时添加我的类:

@GET

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

之间