Почему ошибка 404, даже если ресурс существует (джерси)?

#javascript #java #html #rest #post

Вопрос:

Я хочу настроить свой Raspberry Pi в качестве веб-сервера. Используя ngrok и node.js Я настроил серверную часть и могу получить доступ к веб-страницам, которые я там написал (интерфейс).

Однако внутренняя часть доставляет мне много хлопот. Я очень новичок в этом, и, основываясь на некоторых уроках, которые я прошел, я использую джерси для бэкэнда. Я создал простой тест, чтобы проверить, работает ли моя реализация — отправьте имя пользователя по почтовому запросу и проверьте, не превышает ли длина 0.

Мой JSP-

 lt;htmlgt; lt;headgt; lt;script type=text/javascriptgt;  function verify()  {  var xhr = new XMLHttpRequest();  var u = document.getElementById("uname").value;  //alert(u);  xhr.open('POST', 'http://localhost:8080/webapi/myresource');  xhr.setRequestHeader('Content-Type', 'text/plain');  xhr.setRequestHeader("Accept", "text/plain");  xhr.onreadystatechange = function () {  if (xhr.readyState === 4) {  alert(xhr.response);  }  }  xhr.send(u);  }  lt;/scriptgt; lt;/headgt;  lt;bodygt;  lt;h3gt;User Login/Registerlt;/h3gt;  lt;labelgt;Username: lt;/labelgt;  lt;input type="text" placeholder="Enter username" name="uname" id="uname" requiredgt;  lt;button onclick="verify()" id="v" gt;Check/Verifylt;/buttongt;  lt;brgt;lt;labelgt;Password: lt;/labelgt;  lt;input type="password" placeholder="Enter password" name="pwd" requiredgt;  lt;brgt;lt;button type="submit"gt;Login/Registerlt;/buttongt; lt;/bodygt; lt;/htmlgt;  

Мой MyResource.java файл —

 package com.X.X;  @Path("myresource") public class MyResource {    @POST  @Consumes(MediaType.TEXT_PLAIN)  @Produces(MediaType.TEXT_PLAIN)  public String verify(String uname)  {  if (uname.length()gt;0)  return "Verified";    return "Unverified";  } }  

Мой web.xml —

 lt;welcome-file-listgt;  lt;welcome-filegt;index.jsplt;/welcome-filegt;  lt;/welcome-file-listgt;    lt;servletgt;  lt;servlet-namegt;Jersey Web Applicationlt;/servlet-namegt;  lt;servlet-classgt;org.glassfish.jersey.servlet.ServletContainerlt;/servlet-classgt;  lt;init-paramgt;  lt;param-namegt;jersey.config.server.provider.packageslt;/param-namegt;  lt;param-valuegt;com.resttest.resttestlt;/param-valuegt;  lt;/init-paramgt;  lt;load-on-startupgt;1lt;/load-on-startupgt;  lt;/servletgt;  lt;servlet-mappinggt;  lt;servlet-namegt;Jersey Web Applicationlt;/servlet-namegt;  lt;url-patterngt;/webapi/*lt;/url-patterngt;  lt;/servlet-mappinggt;  

Когда я ввожу имя пользователя и нажимаю «Подтвердить», я получаю ошибку 404 «ресурс не найден».

веб-страница ошибка

Что я делаю не так? Пожалуйста, помогите мне понять, что не так в моей реализации.

Ответ №1:

После недели разочарований, пытаясь определить свою проблему, я наконец понял, в чем дело.

В моем файле pom существует следующее —

 lt;groupIdgt;com.resttestlt;/groupIdgt;  lt;artifactIdgt;resttestlt;/artifactIdgt;  lt;packaginggt;warlt;/packaginggt;  lt;versiongt;0.0.1-SNAPSHOTlt;/versiongt;  lt;namegt;resttestlt;/namegt;  

Поэтому для каждого нового ресурса мне нужно перейти на локальный хост:8080/resttest/webapi* Я опустил «/resttest» и сосредоточился только на web.xml шаблон URL-адреса файла.

К сожалению, я определил это после публикации своего вопроса. Поскольку я видел здесь довольно много вопросов, подобных этому, я оставлю это здесь с этим ответом. Я надеюсь, что это кому-нибудь поможет в будущем.