gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 22:51:34 25 4
gpt4 key购买 nike

我被赋予了在另一个开发人员制作的服务层中实现我的服务的任务,但我找不到正确的方法来完成它。
最初我的类(class)在 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....

这是其他人制作的类(class)片段:

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>

    但我无法按照地址访问我的服务。我正在阅读很多答案,但无论如何都无法正常工作。我该怎么做?

最佳答案

嗯,看来我做到了。所以标签是向前迈出的正确一步:

@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> 之间

关于java - 使用 javax.ws.rs 符号在项目中集成扩展 HttpServlet 的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38375370/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com