Servlet + metoda Monte Carlo

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.

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:

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).

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ć.

0

Zadanie fajne, a skad to?

1 użytkowników online, w tym zalogowanych: 0, gości: 1