Servlet + metoda Monte Carlo

Servlet + metoda Monte Carlo
RE
  • Rejestracja:około 9 lat
  • Ostatnio:około 9 lat
  • Postów:2
0

Witam wszystkich, jestem nowy na tym forum i mam problem ze zrozumieniem poniższego zadania:

Należy stworzyć (zaimplementować) z wykorzystaniem technologii servletów komponent (servlet) o nazwie Cube. Servlet otrzymuje jako dane wejściowe parametr o nazwie a, który przekazywany jest w żądaniu (url). Parametr (przyjmujący wartość rzeczywistą) określa długość boku sześcianu położonego w początku układu współrzędnych (powstałego z przeskalowania kostki jednostkowej przez a) wyrażoną w metrach [m]. Kostka zbudowana jest z materiału o gęstości właściwej c wyrażonej w [kg]/[m3]. W materiale występują defekty, które mają charakter przestrzeni o kształcie kulistym i gęstości materiału g.
Wyniki badania struktury materiału zawierające opis defektów – z których każdy zapisywany jest w postaci równania kuli o środku
w punkcie (x, y, z) oraz promieniu r przekazywane są do servletu w postaci kolejnych żądań typu GET. Kolejność parametrów x, y, z i r w żądaniu (url) jest dowolna. Otrzymanie żądania typu POST z parametrami : a określającym długość boku kostki, c charakteryzującym gęstość materiału z którego kostka została wykonana oraz g charakteryzującym gęstość materiału w obszarach defektów oznacza, że przekazano komplet danych. Otrzymanie przez servlet żądania typu POST oznacza przejście do fazy analizy danych i wyznaczania wyniku. Żądanie POST protokołu http winno zwrócić wyznaczoną przez komponent masę rzeczywistą analizowanego bloku materiału. Dla rozwiązania zadania wykorzystać należy metodę Monte Carlo, przy czym otrzymany wynik wyznaczony winien być z dokładnością nie mniejszą niż 10^(-2).

Nie mam tutaj żadnego połączenia do DB, w jaki sposób mam przekazywać defekty (liczba mnoga) w GET'cie skoro mam tylko mieć 3 parametry w tym żądaniu. Ma ktoś jakiś pomysł na to rozwiązanie? Nie proszę o gotowca tylko o jakieś porady(!) :) Dodam na koniec, że wszystko ma się znaleźć w jednym pliku Cube.java.

edytowany 1x, ostatnio: redpike
RE
  • Rejestracja:ponad 9 lat
  • Ostatnio:około 9 lat
  • Postów:34
0

Tworzysz klase Cube.java rozszerzająca HttpServlet i zmienne globalne: a, c, g typu double, prywatną klasę wewnętrzną Sphere, (coś takiego- ponizej) i listę zawierająca obiekty Sphere:

Kopiuj
private class Sphere{
		private final double x, y, z, r;

		
		public Sphere(double x, double y, double z, double r) {
			this.x = x;
			this.y = y;
			this.z = z;
			this.r = r;
		}

		//gettery
	}

Implementujesz metody doPost() i doGet(). W metodzie doGet(HttpServletRequest request, HttpServletResponse response) sprawdzasz czy w requeście znajdują się wszystkie 4 parametry (x, y, z, r). Pomocne metody znajdziesz pod tym linkiem http://docs.oracle.com/javaee/6/api/javax/servlet/http/HttpServletRequest.html. Jeśli znajdują sie to tworzysz obiekt Sphere i dodajesz do globalnej listy. W metodzie doPost sprawdzasz czy są parametry a, c, g, jeśli tak to przypisujesz je do zmiennych globalnych. Mając już wszystkie dane, obliczasz wagę tej kostki po odliczeniu wszystkich części kul zawierających się w przestrzeni tego sześcianu (Ty pewnie wiesz lepiej ode mnie jak to zrobić). I jak już to jakimś magicznym sposobem obliczysz to na strumień wyjsciowy response wypisujesz wynik z komentarzem).

RE
  • Rejestracja:około 9 lat
  • Ostatnio:około 9 lat
  • Postów:2
0

Dziękuję Ci bardzo za odpowiedź na moje pytanie, sprawdziłem też, że Servlet sam w sobie przechowuje stany wszystkich pól i obiektów. Każde wywołanie GET dodaje mi kolejne obiekty, na których mogę wykonywać metody. Jeżeli miałbym jeszcze jakieś pytania, to proszę o niezamykanie tego wątku. Jak wszystko się uda to dam znać.

RE
@redpike Co masz na myśli, pisząc że Servlet sam dodaje stany pól i obiektów? Servlet sam w sobie nie przetrzymuje danych wszystkich parametrów z każdego żądania. Parametry są tylko dostępne w ramach przetwarzania danego requestu, a później przepadają i aby je zachować między requestami trzeba utworzyć sesję i przetrzymywać je w sesji albo tak jak zasugerowałem stworzyć globalne zmienne dla serwletu. Zmienne a, c i g możesz nawet pominąć, bo i tak je procedujesz tylko w ramach jednego requestu, ale jeśli nie zapisywałbyś danych każdej kuli to one by "przepadały" między req
RE
@rekrut - miałem na myśli to, że dodając sobie obiekty sfer kulistych do jakiejś struktury danych to są one zapisywane w obrębie sesji aplikacji. Mam pytanie z innej beczki, w jaki sposób przy pomocy URL przekazywać parametry do doPost()?
RE
z pozycji html'a robisz formularz, w atrybucie action ustawiasz pełną ścieżkę do serwletu, atrybut method ustawiasz na "post", dodajesz odpowiednie kontrolki wewnątrz formularza (znacznik input htmla)
RE
ma być bez formularza :) to akurat znam
0

Zadanie fajne, a skad to?

RE
do ogarnięcia na uczelnię

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.