niedziela, 19 marca 2017

IWillDoApp: Jeszcze trochę konfiguracji

Dzisiaj chcę Wam pokazać ogólny zarys schematu bazy danych. Zanim jednak o tym, dopowiem jeszcze kilka słów do perypetii ze Springiem, o których pisałam ostatnio.
Wspominałam o problemie z wersją Dynamic Web Module. Projekt wprawdzie budował się bez problemu, mimo tego błędu, ale moje programistyczne sumienie nie pozwoliło mi tego tak zostawić. A nuż gdzieś coś kiedyś się zemści za takie olewactwo.

Z jakiegoś powodu Maven uparcie zmieniał tę wersję na 3.0, podczas gdy Eclipse'owi się to nie podobało i chciał mieć 3.1. Wersja, której należy użyć zależy m.in. od wersji Javy - ja używam Javy 8, zdecydowałam się więc na najnowszą wersję Dynamic Web Module, czyli 3.1.
Po małym dochodzeniu, dzięki wpisowi na Crunchify, znalazłam winnego - w jednym z plików ustawień Eclipse'a ustawiona była niewłaściwa wersja Dynamic Web Module. Po zmianie wersji jst.web na 3.1., odświeżeniu projektu i zbudowaniu na nowo, problem zniknął.
Listing prawidłowego pliku ./settings/org.eclipse.wst.common.project.facet.core.xml:

<?xml version="1.0" encoding="UTF-8"?>
<faceted-project>
  <runtime name="Apache Tomcat v8.5"/>
  <fixed facet="wst.jsdt.web"/>
  <installed facet="wst.jsdt.web" version="1.0"/>
  <installed facet="jst.web" version="3.1"/>
  <installed facet="java" version="1.8"/>
</faceted-project>

Kolejnym problemem - który nauczył mnie, że bezmyślne kopiowanie kodu z internetu to zdecydowanie kiepska praktyka :D - było zmuszenie Springa do wyświetlenia jakiejś innej strony niż index.jsp i /welcome. Te dwie działały śpiewająco, ale z jakiegoś powodu mapping nie działał na żadną inną (tak, tak, trochę oszukałam, pisząc, że tak szybciutko mogłam się cieszyć stroną logowania). Okazało się, że tutorial na Crunchify, z którego korzystałam, wprowadził mapowanie tylko konkretnych adresów (co oznacza, że Spring "nie widział" stron, które nie pasowały do wpisanego wzorca):

    <servlet-mapping>
        <servlet-name>iwilldo</servlet-name>
        <url-pattern>/welcome.jsp</url-pattern>
        <url-pattern>/welcome.html</url-pattern>
        <url-pattern>*.html</url-pattern>
    </servlet-mapping>

Powyższy zapis oznacza, że Spring zmapuje tylko adresy /welcome.jsp, /welcome.html oraz wszystkie strony z rozszerzeniem .html. Ponieważ moja strona logowania - /login - nie wpisywała się we wzorzec, nie została obsłużona przez Springa.
Zmiana wzorca na:

    <servlet-mapping>
        <servlet-name>iwilldo</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

i już wszystko działa.
Prawdopodobnie mapowanie wszystkiego jak leci nie jest dobrą praktyką, zwłaszcza w dużych projektach (choćby dlatego, że takie mapowanie odnosi się do konkretnego serwletu, a tych może być więcej), ale na moje obecne potrzeby wystarcza.

No i tak jak mówiłam - jeszcze kilka słów na temat bazy danych. Silnika jeszcze nie wybrałam, ale zarysował się w mojej głowie schemat.
Na razie bardzo prosty - tabelka z użytkownikami, każdy z nich może mieć przypisane kalendarze, każdy kalendarz ma wpisy, które mówią, czy danego dnia postanowienie było wypełnione, czy też nie. Być może w przyszłości wyewoluuje to w coś większego.

To tyle na dziś. Wracam do kodowania, co by było się czym pochwalić w przyszłym tygodniu. :) Ciao!

Brak komentarzy:

Prześlij komentarz