Deploy aplikacji na Tomcat

Deploy aplikacji na Tomcat
K8
  • Rejestracja:ponad 5 lat
  • Ostatnio:prawie 4 lata
  • Postów:13
0

** Witam, podczas wdrażania mojej aplikacji na Tomcat wszystko się kompiluje, po uruchomieniu serwera zostaję domyślnie przekierowany do przeglądarki, gdzie od razu jest wysłane żądanie: http://localhost:8080/demo2_war_exploded/ i tutaj pojawia się komunikat: **

HTTP Status 404 – Not Found
Type Status Report
Message The requested resource [/demo2_war_exploded/] is not available
Description The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.
Apache Tomcat/9.0.39

** Gdy wpiszę localhost:8080 pojawia się błąd: **

HTTP Status 404 – Not Found
Type Status Report
Description The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.
Apache Tomcat/9.0.39

** W pliku pom.xml dodałem paczkę wynikową jako war, po czym wykonałem Maven clean i compile, następnie w Edit Configurations wybrałem paczkę exploded.
Poniżej zamieszczam obie klasy, plik pom.xml oraz logi serwera **

** pom.xml: **

Kopiuj
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.4.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>demo2</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>war</packaging>
    <name>demo2</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>11</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

** Demo2Application.java: **

Kopiuj
package com.example.demo2;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Demo2Application {

    public static void main(String[] args) {
        SpringApplication.run(Demo2Application.class, args);
    }
}

** HomeController.java **

Kopiuj
 package com.example.demo2;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class HomeController {

    @RequestMapping("/")
    @ResponseBody
    public String home() {
        return "Application deployed";
    }
}

** logi: **

Kopiuj
C:\Users\Karol\Downloads\apache-tomcat-9.0.39-windows-x64\apache-tomcat-9.0.39\bin\catalina.bat run
[2020-10-29 01:23:58,456] Artifact demo2:war exploded: Waiting for server connection to start artifact deployment...
Using CATALINA_BASE:   "C:\Users\Karol\AppData\Local\JetBrains\IntelliJIdea2020.2\tomcat\Unnamed_demo2_3"
Using CATALINA_HOME:   "C:\Users\Karol\Downloads\apache-tomcat-9.0.39-windows-x64\apache-tomcat-9.0.39"
Using CATALINA_TMPDIR: "C:\Users\Karol\Downloads\apache-tomcat-9.0.39-windows-x64\apache-tomcat-9.0.39\temp"
Using JRE_HOME:        "C:\Program Files\Java\jdk-14.0.1"
Using CLASSPATH:       "C:\Users\Karol\Downloads\apache-tomcat-9.0.39-windows-x64\apache-tomcat-9.0.39\bin\bootstrap.jar;C:\Users\Karol\Downloads\apache-tomcat-9.0.39-windows-x64\apache-tomcat-9.0.39\bin\tomcat-juli.jar"
Using CATALINA_OPTS:   ""
NOTE: Picked up JDK_JAVA_OPTIONS:  --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
29-Oct-2020 13:23:59.240 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version name:   Apache Tomcat/9.0.39
29-Oct-2020 13:23:59.242 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server built:          Oct 6 2020 14:11:46 UTC
29-Oct-2020 13:23:59.242 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version number: 9.0.39.0
29-Oct-2020 13:23:59.242 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name:               Windows 10
29-Oct-2020 13:23:59.242 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Version:            10.0
29-Oct-2020 13:23:59.242 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Architecture:          amd64
29-Oct-2020 13:23:59.243 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Java Home:             C:\Program Files\Java\jdk-14.0.1
29-Oct-2020 13:23:59.243 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Version:           14.0.1+7
29-Oct-2020 13:23:59.243 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Vendor:            Oracle Corporation
29-Oct-2020 13:23:59.243 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE:         C:\Users\Karol\AppData\Local\JetBrains\IntelliJIdea2020.2\tomcat\Unnamed_demo2_3
29-Oct-2020 13:23:59.243 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME:         C:\Users\Karol\Downloads\apache-tomcat-9.0.39-windows-x64\apache-tomcat-9.0.39
29-Oct-2020 13:23:59.244 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.lang=ALL-UNNAMED
29-Oct-2020 13:23:59.244 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.io=ALL-UNNAMED
29-Oct-2020 13:23:59.245 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
29-Oct-2020 13:23:59.245 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.config.file=C:\Users\Karol\AppData\Local\JetBrains\IntelliJIdea2020.2\tomcat\Unnamed_demo2_3\conf\logging.properties
29-Oct-2020 13:23:59.245 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
29-Oct-2020 13:23:59.245 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcom.sun.management.jmxremote=
29-Oct-2020 13:23:59.245 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcom.sun.management.jmxremote.port=1099
29-Oct-2020 13:23:59.245 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcom.sun.management.jmxremote.ssl=false
29-Oct-2020 13:23:59.245 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcom.sun.management.jmxremote.password.file=C:\Users\Karol\AppData\Local\JetBrains\IntelliJIdea2020.2\tomcat\Unnamed_demo2_3\jmxremote.password
29-Oct-2020 13:23:59.245 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcom.sun.management.jmxremote.access.file=C:\Users\Karol\AppData\Local\JetBrains\IntelliJIdea2020.2\tomcat\Unnamed_demo2_3\jmxremote.access
29-Oct-2020 13:23:59.246 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.rmi.server.hostname=127.0.0.1
29-Oct-2020 13:23:59.246 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djdk.tls.ephemeralDHKeySize=2048
29-Oct-2020 13:23:59.246 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.protocol.handler.pkgs=org.apache.catalina.webresources
29-Oct-2020 13:23:59.246 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dignore.endorsed.dirs=
29-Oct-2020 13:23:59.246 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.base=C:\Users\Karol\AppData\Local\JetBrains\IntelliJIdea2020.2\tomcat\Unnamed_demo2_3
29-Oct-2020 13:23:59.246 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.home=C:\Users\Karol\Downloads\apache-tomcat-9.0.39-windows-x64\apache-tomcat-9.0.39
29-Oct-2020 13:23:59.246 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.io.tmpdir=C:\Users\Karol\Downloads\apache-tomcat-9.0.39-windows-x64\apache-tomcat-9.0.39\temp
29-Oct-2020 13:23:59.251 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent Loaded Apache Tomcat Native library [1.2.25] using APR version [1.7.0].
29-Oct-2020 13:23:59.251 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true].
29-Oct-2020 13:23:59.251 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR/OpenSSL configuration: useAprConnector [false], useOpenSSL [true]
29-Oct-2020 13:23:59.255 INFO [main] org.apache.catalina.core.AprLifecycleListener.initializeSSL OpenSSL successfully initialized [OpenSSL 1.1.1g  21 Apr 2020]
29-Oct-2020 13:23:59.432 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio-8080"]
29-Oct-2020 13:23:59.471 INFO [main] org.apache.catalina.startup.Catalina.load Server initialization in [405] milliseconds
29-Oct-2020 13:23:59.514 INFO [main] org.apache.catalina.core.StandardService.startInternal Starting service [Catalina]
29-Oct-2020 13:23:59.514 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet engine: [Apache Tomcat/9.0.39]
29-Oct-2020 13:23:59.525 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"]
29-Oct-2020 13:23:59.535 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in [64] milliseconds
Connected to server
[2020-10-29 01:23:59,567] Artifact demo2:war exploded: Artifact is being deployed, please wait...
29-Oct-2020 13:24:02.120 INFO [RMI TCP Connection(3)-127.0.0.1] org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
[2020-10-29 01:24:02,375] Artifact demo2:war exploded: Artifact is deployed successfully
[2020-10-29 01:24:02,375] Artifact demo2:war exploded: Deploy took 2,808 milliseconds
29-Oct-2020 13:24:09.544 INFO [Catalina-utility-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [C:\Users\Karol\Downloads\apache-tomcat-9.0.39-windows-x64\apache-tomcat-9.0.39\webapps\manager]
29-Oct-2020 13:24:09.652 INFO [Catalina-utility-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [C:\Users\Karol\Downloads\apache-tomcat-9.0.39-windows-x64\apache-tomcat-9.0.39\webapps\manager] has finished in [107] ms
edytowany 1x, ostatnio: Karol8650
K8
To samo co przy localhost:8080, zmieniałem też parametr w @RequestMapping i wpisywałem odpowiednie żądanie, ale nie działa
PI
  • Rejestracja:ponad 9 lat
  • Ostatnio:4 miesiące
  • Postów:2787
0

Nie jestem pewien, ale spróbuj ten controller dać o pakiet niżej niż główna klasa uruchomieniowa, czyli np na package com.example.demo2.controller;

K8
niestety nadal nie działa
MrMadMatt
  • Rejestracja:ponad 9 lat
  • Ostatnio:8 dni
  • Postów:373
0

Zmień @RequestMapping("/") na @RequestMapping("/hello") i odpal localhost:8080/hello no i @Controller zmieniłym na @RestController

edytowany 1x, ostatnio: MrMadMatt
K8
  • Rejestracja:ponad 5 lat
  • Ostatnio:prawie 4 lata
  • Postów:13
0
MrMadMatt napisał(a):

Zmień @RequestMapping("/") na @RequestMapping("/hello") i odpal localhost:8080/hello

Nie działa, już próbowałem tego wcześniej

MrMadMatt
A adnotację? Sprawdzałeś folder tomcata czy masz tam wypakowanego wara? Jak deployujesz wara na Tomcata?
K8
A gdzie jest ten folder Tomcata żeby to sprawdzić? Wara na Tomcata deplouje poprzez Edit Configurations -> Tomcat -> local -> Deployment i dodaję, wcześniej dodałem <packaging>war</packaging> do pom.xml
AK
Zgadzam się z Shaolomem, gdybacie sobie poza obszarem problemu
MrMadMatt
@AnyKtokolwiek: dokładnie tak, swoim komentarzem bawiłem się w zgadywanki, w czym problem?
PI
  • Rejestracja:ponad 9 lat
  • Ostatnio:4 miesiące
  • Postów:2787
1

Czekaj czekaj, bo jest tutaj lekki zgrzyt - czemu Twój projekt buduje się do wara zamiast do jara? Przecież Spring Boot by default powinien zbudować jara, wewnątrz którego ma wbudowany Tomcat... Więc w Twoim pom.xml zamień war na jar, potem mvn package, i java -jar demo2-0.0.1-SNAPSHOT.jar

K8
Konieczne jest dodawanie <packaging>jar</packaging> do pom.xml? Jeżeli Spring Boot domyślnie buduje jara i podczas tworzenia projektu wybrałem jara, to po co informacja o tym w pom.xml? Czytałem, że Maven się tym zajmuje, więc konieczne jest też dodawanie artefaktu? (Jestem początkujący w tym temacie, więc nie do końca jasno mogę się wyrażać) I te obie komendy wywołać z konsoli?
PI
Tzn to czy to będzie jar czy war definiujesz Ty, w pom.xml. Natomiast zgodnie ze "standardem" używania Spring Boota, powinieneś wybrać jara.
K8
jeżeli nie dodam informacji o tym w pom.xml, to domyślnie będzie jar? I muszę wtedy dodawać ten artifact?
Shalom
  • Rejestracja:około 21 lat
  • Ostatnio:prawie 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
4

Ech, aż się smutno robi jak czytam te posty. Same jakieś pomysły z serii permutation driven development i zero zrozumienia co w ogóle robicie. Dramat.

@Karol8650 Spring Boot buduje ci jara który nie jest zgodny z javowym standardem jarów/warów. Wrzucanie go do tomcata to strata czasu, chyba ze dodasz sobie specjalne parametry do tego mavenowego plugina ( https://docs.spring.io/spring-boot/docs/1.5.x/maven-plugin/examples/repackage-classifier.html ), żeby wygenerował ci też "klasycznego" jara. Niemniej to nadal nie wystarczy dla tomcata, bo on potrzebuje jednak wara z tymi wszystkimi WEB-INF i innymi katalogami.
Nie kombinuj z tomcatem tylko odpal tego bootowego jara (java -jar cośtam.jar) i będzie działać, albo jak odpalasz z IDE to odpal po prostu maina z tej klasy Demo2Application

A kolegom z pomysłami w stylu zmień pakiet albo zmień Controller na RestCotroller to ...


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
edytowany 4x, ostatnio: Shalom
Charles_Ray
Gimby warów nie znajo ;)
PI
@Shalom: Panie przemądrzały - widzę często pojawiający się problem - to od razu w myśli mam potencjalne rozwiązanie. Nie analizuję od deski do deski każdego wątku tutaj na forum, bo bym nic innego nie robił. Dopiero potem obczaiłem że on tutaj coś kombinuje z własnym Tomcatem. Poza tym propozycja zmiany pakietu jest słuszna, bo domyślnie Spring Boot nie widzi adnotacji, które nie są poniżej głównej klasy uruchomieniowej.
K8
@Shalom: szczerze mówiąc niezbyt rozumiem. Czyli co po kolei mam zrobić? Napisałeś, że tomcat potrzebuje wara, czyli w pom.xml mam dodać <packaging>war</packaging>, a następnie stworzyć artifact poprzez edit configurations? I o co chodzi z odpaleniem maina?
Shalom
@Karol8650: nah, nic z tego, bo projekt spring bootowy po prostu nie pasuje do wara i tyle. Olej tego tomkata i już. Odpal po prostu maina którego masz w kodzie i spring boot sobie postawi swojego tomcata/jetty :) @Pinek to prawda z tym skanowaniem pakietów przez springa, ale u niego akurat widać ze klasa z mainem jest w dobrym miejscu ;) Narzekam tak, bo wielu ludzi tak właśnie próbuje pracować ze springiem :D dodając losowe adnotacje albo odprawiając jakieś czary, zamiast spróbować zrozumieć jak to w ogóle działa.
K8
@Shalom: dzięki, działa. A co jeśli coś takiego chciałbym uruchomić w Springu, bez Spring Boota?
Shalom
Hmm no cóż, możesz popatrzeć na https://github.com/Pharisaeus/SpringScaffoldApplication nie updatowałem tego od kilku lat, ale masz tam pokazane jak zrobić "samemu" coś takiego co automatycznie daje ci boot.
K8
@Shalom dzięki, popatrzę. Jeszcze mam ostatnie pytanie: spring boot domyślnie uruchamia tą apkę na tomcacie? Pewnie można wybrać odpowiedni serwer w ustawieniach?
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)