Работа с Jetty Servlets Java

146
19 июня 2019, 22:50

Есть основная задача - добавить к основному проекту jetty default servlet, который бы парсил файлы markdown в html. Тк первый раз сталкиваюсь с сервлетами, то я записал свой SimplifiedJettyDefaultServlet, который по идее должен работать. Однако при его подключении в SetUpServlets ничего не происходит. Видимо напутал что-то с потоками, либо подключил неправильно сам сервлет. Прилагаю код сервлета:

public class SimplifiedJettyDefaultServlet extends DefaultServlet {
@Override
public Resource getResource(String pathInContext) {
    Resource real= super.getResource(pathInContext);
        if (!real.isDirectory() && pathInContext.endsWith(".md") ) {
            try {
                InputStream vhod = real.getInputStream();
                String s = vhod.toString();
                ByteArrayOutputStream convertedBytes = SimplifiedJettyDefaultServlet.convert(s);
                real.writeTo(convertedBytes,0,-1);
                return real;
            }
            catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    return real;
} 
public static ByteArrayOutputStream convert (String input) throws IOException {
    MutableDataHolder options = new MutableDataSet()
        .set(Parser.EXTENSIONS,
            Arrays.asList(AutolinkExtension.create(),
            StrikethroughExtension.create(), TaskListExtension.create(), TablesExtension.create(),
            DefinitionExtension.create(), FootnoteExtension.create(),GitLabExtension.create()))
            .set(Parser.LISTS_ITEM_INDENT, 1).set(Parser.BLANK_LINES_IN_AST, true)
            .set(HtmlRenderer.GENERATE_HEADER_ID, true).set(AnchorLinkExtension.ANCHORLINKS_SET_NAME, true)
            .set(AnchorLinkExtension.ANCHORLINKS_ANCHOR_CLASS, "header-anchor")
            .set(AnchorLinkExtension.ANCHORLINKS_TEXT_SUFFIX, "<i class='fa fa-link'></i>")
            .set(Parser.SPACE_IN_LINK_URLS, true).set(TablesExtension.WITH_CAPTION, false)
            .set(TablesExtension.COLUMN_SPANS, false).set(TablesExtension.MIN_HEADER_ROWS, 1)
            .set(TablesExtension.MAX_HEADER_ROWS, 1).set(TablesExtension.APPEND_MISSING_COLUMNS, true)
            .set(TablesExtension.DISCARD_EXTRA_COLUMNS, true)
            .set(TablesExtension.HEADER_SEPARATOR_COLUMN_MATCH, true);
    String dopstring ="<script type=\"text/x-mathjax-config\">  MathJax.Hub.Config({    extensions: [\"tex2jax.js\"],    jax: [\"input/TeX\", \"output/HTML-CSS\"],    tex2jax: {      inlineMath: [ ['$','$'], [\"\\(\",\"\\)\"] ],      displayMath: [ ['$$','$$'], [\"\\[\",\"\\]\"] ],      processEscapes: true    },    \"HTML-CSS\": { fonts: [\"TeX\"] }  }); </script> <script type=\"text/javascript\" src=\"/rwa-ui/src/main/resources/web/MathJax.js\"> </script>";
    String finalstr = dopstring + input;
    Parser parser = Parser.builder(options).build();
    Node document = parser.parse(new String(finalstr));
    HtmlRenderer renderer = HtmlRenderer.builder(options).build();
    String html = renderer.render(document);
    ByteArrayOutputStream output = new ByteArrayOutputStream((html.getBytes()).length);
    output.write(html.getBytes(), 0, html.getBytes().length);
    return output;
}}
READ ALSO
syncronized wait в цикле

syncronized wait в цикле

Каким образом возможно реализовать подобную архитектуру приложения:

140
Как записать данные в фаил?

Как записать данные в фаил?

Пишу простейшую конструкцию:

136
Почему появляется данная ошибка?

Почему появляется данная ошибка?

Появилась странная ошибка при загрузке tomcat

125
Ввод данных в ArrayList

Ввод данных в ArrayList

Встретил в учебнике запись:

91