我被赋予了在另一个开发人员制作的服务层中实现我的服务的任务,但我找不到正确的方法。
最初,我的班级在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 中指定的文件夹中,并在库中添加了 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
标签,它仍然有效。
真正的诀窍是在网络加载中添加我的类.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>
之间