Конфигурация / структура web.xml для Джерси с Bootstrap / REST - PullRequest
0 голосов
/ 25 августа 2018

Я использую следующие технологии: Glassfish, Джерси Я получил следующую структуру проекта в IntelliJ:

beat_api
  ->.idea
  ->lib
  ->out
  ->src
     ->ApplicationController.java
     ->Beat.java
  ->web
     ->WEB-INF
       web.xml
     ->index.jsp (want to convert that to HTML though, no idea how .jsp works)

У меня есть следующие вопросы:

  1. Правильна ли моя структура? Где я могу разместить файлы .html / .css для подключения в мой REST API? Как только основная разметка закончена, я хочу добавить Bootstrap, чтобы она выглядела красиво.
  2. Как мне настроить web.xml для структуры моего проекта? Я не понимаю, что бы я ни пытался, я не смогу отобразить index.jsp из структуры моего проекта, перейдя на localhost: 8080 / beat_api /
  3. Я хочу иметь возможность создавать "Beat" и искать "Удар", предпочтительно в файле JSON или XML (с использованием SAX-анализатора). Как я могу создать экземпляр Beat в моем ресурсе Beat.java? Всякий раз, когда я помещаю туда конструктор, я получаю следующее сообщение об ошибке: «java.lang.NoSuchMethodException: не удается найти подходящий конструктор в классе Beat».

Beat.java

import javax.ws.rs.*;
// The Java class will be hosted at the URI path "/beats"

@Path("/beats")
public class Beat {

    // The Java method will process HTTP GET requests
    // The Java method will produce content identified by the MIME Media type "text/plain"
    @GET
    @Produces("text/plain")
    @Path("/show")
    public String retrieveBeat() {
        return "hello";
    }

    // The Java method will process HTTP GET requests
    // The Java method will produce content identified by the MIME Media type "text/plain"
    @POST
    @Consumes("text/plain")
    @Path("create/{beatname}/{beatbpm}/{beatkey}")
    public void createBeat(@PathParam("beatname") String beatname,
                           @PathParam("beatbpm") int beatbpm,
                           @PathParam("beatkey") String beatkey) {
    }
}

ApplicationController.java

import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;
import java.util.HashSet;
import java.util.Set;

//Defines the base URI for all resource URIs.
@ApplicationPath("/")
//The java class declares root resource and provider classes
public class ApplicationController extends Application{
    //The method returns a non-empty collection with classes, 
    // that must be included in the published JAX-RS application
    @Override
    public Set<Class<?>> getClasses() {
        HashSet h = new HashSet<Class<?>>();
        h.add( Beat.class );
        return h;
    }
}

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">
</web-app>
...