• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Wyslanie wartosci elementu do metody w Java

VPS Starter Arubacloud
0 głosów
347 wizyt
pytanie zadane 9 lipca 2020 w JavaScript przez Szyszka Gaduła (3,510 p.)

Witam. W jaki sposób mogę wysłać wartość elementu z JavaScript do metody w Java? Kod w js wygląda tak:

function getLogin() {
    return document.getElementById("loginField").value;
}

A tak wygląda w Java:

package pl.Szyszka;

public class Main {
    public static void saveLogin(String login){

    }
}

Liczę na szybą odpowiedź :|. Z góry dzięki.

komentarz 9 lipca 2020 przez Wiciorny Ekspert (276,740 p.)
zmień temat na javę.

3 odpowiedzi

0 głosów
odpowiedź 9 lipca 2020 przez Lewo Gaduła (3,000 p.)
wybrane 11 lipca 2020 przez Szyszka
 
Najlepsza

Musisz zrozumieć co chcesz zrobić trochę dokładniej.

Masz frontend - stronkę, chcę w którymś momencie wartość pola login (uzyskaną przez metodę getLogin()) wysłać w żądaniu do serwera, aby zapisał login.

Serwery są różne, ale najczęściej serwer jest HTTP (który ma kilka podstawowych operacji - GET, POST gdzie mówisz co chcesz - np. pobrać kod strony GETem, zapisać utworzone konto POSTem itd. Masz tez kody odpowiedzi - serwer odpowiada, aby żądający wiedział czy udało się to zrobić - możesz dostać np. 404 jak próbujesz zrobić żądanie do serwera gdzie pomyliłeś adres).

Jak zrozumiesz żądania http i wiesz, że potrzebujesz serwer który będziesz te żądania przyjmował powinieneś się zastanowić - jak w danym momencie (np. na stronie ktoś kliknie utwórz konto) z wartości pola loginField utworzyć poprawne żądanie HTTP -> najprościej to popatrz na AJAX ( http://kursjs.pl/kurs/ajax/ajax.php - tylko tutaj jest pokazany też sewer w JS, możesz zrobić w Java, ktoś już podał link do samouczka )

Ogólnie nowoczesne frameworki zajmują się tworzeniem zapytań za Ciebie od strony frontendu, nie musisz wtedy wchodzić w szczegóły ale musisz znać frameworki :D

Czyli potrzebujesz:

  • na froncie zrobić żądanie http do serwera i w jakiś sposób przekazać wartość loginField (zobacz jak wygląda http i payload takiego żądania)
  • mieć serwer który poprawnie zinterpretuje żądanie http i wyciągnie sobie tą wartość


Wydaje się skomplikowane, ale trzeba przebrnąć przez to jak chcesz pisać jakiekolwiek aplikacje internetowe.


 

komentarz 10 lipca 2020 przez ScriptyChris Mędrzec (190,190 p.)

Nie znam Javy, ale szukałbym query stringa w zmiennej z argumentu req (typu HttpServletRequest). Może metoda req.getQueryString Ci zwróci wartość zmiennej przekazanej z JS.

komentarz 10 lipca 2020 przez Szyszka Gaduła (3,510 p.)
Okej, dzięki, to prawdopodobnie będzie to. Teraz zostało ostatnie - czy możliwe jest, aby wywołać metodę Java w JavaScript?
komentarz 10 lipca 2020 przez ScriptyChris Mędrzec (190,190 p.)

Bezpośrednio Javy w kodzie JavaScriptu nie wykonasz. Można by kombinować czymś pokroju GWT, ale nigdy się w to nie bawiłem.

komentarz 10 lipca 2020 przez Szyszka Gaduła (3,510 p.)
edycja 10 lipca 2020 przez Szyszka

Mhm, to zrobi się inaczej. Wie ktoś, dlaczego nie mogę nic zapisać do pliku db.txt?

    public static String saveLogin(String login){
        File file = new File("pl/Szyszka/db.txt");
        if(file.canWrite()){
            login = "tak";
        }
        else
        {
            login = "nie";
        }
        return login;
    }

Zawsze na stronie pojawia się "nie", dlaczego? :/

Edit: Dobra, samo się naprawiło. To teraz ostatnie pytanie. Metoda:

    public static void getLoginFromQueryString(HttpServletRequest req) throws IOException {
        saveLogin(req.getQueryString());
    }

ma parametr HttpServletRequest, co mam wpisać jako argument aby wywołać tę metodę w pliku JSP?:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="pl.Szyszka.RegisterSystem"%>
<html>
<head>
    <title>Home Page</title>
</head>
<body>
<%=RegisterSystem.getLoginFromQueryString(CO_MAM_TU_PODAC_?)%>
</body>
</html>

 

komentarz 11 lipca 2020 przez Szyszka Gaduła (3,510 p.)

Dobra, udało się, dzięki Wam! Nawet nie wiecie, jak bardzo jestem Wam wdzięczny! ;D Dzięki wszystkim jeszcze raz <3

Home.jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="pl.Szyszka.RegisterSystem"%>
<html>
<head>
    <title>Home Page</title>
</head>
<body>
<%=RegisterSystem.saveLogin(request.getParameter("name"), "")%>
</body>
</html>

RegisterSystem.java:

package pl.Szyszka;

import javax.servlet.http.HttpServlet;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

public class RegisterSystem extends HttpServlet {
    public static String saveLogin(String login, String response) throws IOException {
        File file = new File("C:/Users/Windows/Desktop/JavaEE/IntelliJ Projects/WebApp1/src/main/resources/db.txt");
        if(file.canWrite() && file.exists()){
            response = "Pomyślnie zarejestrowano Cię w naszej bazie danych!";
            FileWriter fileWriter = new FileWriter(file, true);
            fileWriter.write(login+"\n");
            fileWriter.close();
        }
        else{
            response = "Zapisywanie Cię do naszej bazy nie powiodło się! Spróbuj ponownie później!";
        }
        return response;
    }
}

Dzięki wielkie raz jeszcze! <3

0 głosów
odpowiedź 9 lipca 2020 przez Paweł Nąckiewicz Nałogowiec (48,990 p.)

Musisz jakoś skomunikować te aplikacje najprościej poprzez API

 

1. Stówrz API w javie, przy pomocy Java EE lub Springa. 

2. Poczytaj o protokole HTTP

3. W kodzie JS dodaj metody do komunikowania się z API - https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch

komentarz 9 lipca 2020 przez Szyszka Gaduła (3,510 p.)
Jak takie API stworzyć? Dopiero zaczynam przygodę z Java EE.
komentarz 9 lipca 2020 przez Paweł Nąckiewicz Nałogowiec (48,990 p.)

Musisz stworzyć jakiś endpoint i odpalić aplikacje na serwerze.

https://www.samouczekprogramisty.pl/rest-web-service-z-java-ee-czesc-1/

komentarz 9 lipca 2020 przez Szyszka Gaduła (3,510 p.)
A jeśli stronę pragnę tworzyć z Maven i Tomcatem w wersji 9? Jak to wtedy zrobić? A może jest też jakaś klasa w Java która ma metode getElementById?
komentarz 9 lipca 2020 przez Paweł Nąckiewicz Nałogowiec (48,990 p.)
Trochę mylisz pojęcia

Maven to narzędzie do budowania projektu, którego używasz aby stworzyć projek javowy z wykorzystaniem np zewnętrznych bibliotek i zależności.

Tomcat to mini serwer do odpalenia aplikacji tak abyś mógł się z nią komunikować np poprzez localhost.  

Co da Ci javowa klasa z metodą getElementById?

Poczytaj dobrze źródła które Ci podesłałem.
komentarz 9 lipca 2020 przez Szyszka Gaduła (3,510 p.)
Meh, teraz przeszedłem na TomEE, próbowalem najnowszych wersji, najstarszych, cały projekt od nowa robiłem, a tu: error during artifact deployment. see server log for details. Meh, odpuszczę sobię tą jave i za asp.net core się wezmę. Dzięki za pomoc.
komentarz 9 lipca 2020 przez Paweł Nąckiewicz Nałogowiec (48,990 p.)
Żle do tego podchodzisz. W asp.net też będą różne problemy i trzeba będzie stawić im czoła.

Jak chcesz się bawić Java, to polecam Spring-boota. Tworzysz projekt ze strony i całą konfiguracje masz z głowy, możesz szybko zacząć kodować.
komentarz 9 lipca 2020 przez Szyszka Gaduła (3,510 p.)
Jeszcze zostało mi troche nadziei, i chyba dobrze, zostawie jeszcze dla przyszłych pokoleń, że ten błąd: error during artifact deployment. see server log for details udało mi się naprawić używając OpenJDK w wersji 8.
komentarz 9 lipca 2020 przez Wiciorny Ekspert (276,740 p.)

@Szyszka, to nie jest jEE 

komentarz 9 lipca 2020 przez Paweł Nąckiewicz Nałogowiec (48,990 p.)

Zrób sobie projekt w spring boocie - https://start.spring.io/

I popatrz na jakieś poradniki jak zrobić API - https://www.youtube.com/watch?v=-T_3qhBaflA&list=PLUtcRmGoaP27ypMB5aokWbf9KWuWv3UDC&index=1

–1 głos
odpowiedź 9 lipca 2020 przez mibdbz Gaduła (4,300 p.)
Od siebie polecę dobry kurs, z którego się aktualnie uczę.

https://www.udemy.com/course/spring-hibernate-tutorial/

Niestety płatny. Ale jest wart tych 42 pln
komentarz 9 lipca 2020 przez Wiciorny Ekspert (276,740 p.)

Chad Darby :D no nie nie nie. ...

komentarz 9 lipca 2020 przez ScriptyChris Mędrzec (190,190 p.)

@Wiciorny, podasz jakieś argumenty, dlaczego negujesz tego instruktora/nauczyciela?

komentarz 10 lipca 2020 przez mibdbz Gaduła (4,300 p.)

@Wiciorny, właśnie. Jakie są argumenty przeciw temu kursowi? Może powinienem go zmienić? Na jaki lepszy? 

Podobne pytania

0 głosów
1 odpowiedź 1,872 wizyt
pytanie zadane 18 marca 2019 w Java przez Roman1212 Początkujący (460 p.)
0 głosów
1 odpowiedź 274 wizyt
0 głosów
1 odpowiedź 227 wizyt

92,947 zapytań

141,899 odpowiedzi

321,118 komentarzy

62,283 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...