# Name eines Attributes aus einem festen String und einer Variablen generieren



## Nico80 (9. Jan 2017)

Hallo Spezialisten,
ich hab mal wieder ein Problem. 
Ich möchte in einer Java-Web-Anwendung (Servlet) bestimmte Attributnamen aus einem String+(einer Variablen) generieren. 
Also beispielsweise soll ein Quiz erstellt werden. Es erhält jeder Benutzer des Quiz eine Benutzernummer und seine Antworten soll unter dem Namen"quiz-NummerDerFrage-Benutzernummer" im ServletContext abgelegt und von dort aus vom Quizmaster über ein weiteres Servlet abgefragt und in einer Datenbank gespeichert werden.
Wie kann ich den Bezeichner des Attributes für jeden Benutzer mit einer anderen Benutzernummer generieren?

Ich hoffe, ich hab mich verständlich ausgedrückt.
Danke für eure Mühe!
Nico


----------



## VfL_Freak (10. Jan 2017)

Moin,

vermutlich suchst Du sowas:
http://www.java-forum.org/java-faq-beitraege/62032-fragen-variablennamen.html

Gruß Klaus


----------



## stg (10. Jan 2017)

@VfL_Freak Im ServletContext werden Key-Value Paare <String, Object> hinterlegt. Das wäre also schon möglich. 

@Nico80 
Neuer Benutzername? Oder bist du ein anderer Nico? 

Wie auch immer. Der ServletContext ist dafür meiner Meinung nach der falsche Ort. Dieser sollte eher für etwa allgemeine Konfigurationen vorbehalten bleiben. Du willst die Antworten eines Spielers an ein anderes Servlet übergeben, welches die Daten in eine Datenbank schreibt. Das kannst du doch in einem einzigen Request machen. Transportier die Daten doch einfach da. Und statt einem zusammengesetzten Wert übergibst du dem "Schreiber" einfach alle nötigen Informationen separat.


----------



## Nico80 (11. Jan 2017)

Erst einmal vielen Dank ... euch beiden ...
Ich habe es jetzt so gelöst ...

```
...
protected synchronized void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      
    response.setContentType("text/html");
    PrintWriter out = response.getWriter();  
    final String spNr =    request.getParameter("id");
    String antwort_q1 = request.getParameter("q1");
    ...
        ServletContext quiz = getServletContext();  

       if(antwort_q1.equals("ja")){
      
        quiz.setAttribute("quiz-q1-" + spNr, Boolean.TRUE);
      
    }
    if(antwort_q1.equals("nein"))
    {
        quiz.setAttribute("quiz-q1-" + spNr, Boolean.FALSE);
      
    }
...
```

Ich bin der Nico, der ich immer war  ... Ich bin erst seit kurzem hier. Nico's gibt es, glaube ich, ein paar.


----------



## stg (11. Jan 2017)

Sicherlich gibt's da ein paar. Aber Fragen zu Java EE sind hier relativ selten, und davon habe ich schon etliche von einem anderem Nico gestellten hier beantwortet. War daher nur eine Vermutung  Wie auch immer: Dann herzlich willkommen hier im Forum!

Deine Lösung finde ich nicht gut. Du müllst dir den ServletContext mit Informationen, die dort nicht hingehören, zu. Es wird auch schwierig, diesen zuverlässig wieder von den nicht mehr benötigten Informationen aufzuräumen. Der ServletContext entspricht quasi dem "Application Scope", universell gültig für alle Servlets in der gesamten Application. Was stört dich an meinem Vorschlag, dass du es unbedingt mit der Brechstange machen willst?


----------



## Nico80 (11. Jan 2017)

Mich stört im Grunde gar nichts daran.
Das Problem ist nur, dass es sich beim meinem Quiz um eine Aufgabenstellung aus meinem Fernstudium handelt. Wir sollen verschiedene Sachen ausprobieren und die Bildung des Variablenname ist durch den Prof vorgegeben. Ich habe hier und da schon mal programmiert, bin aber kein Spezialist und Java EE ist absolutes Neuland.
So soll zunächst ein Html-Formular erzeugt werden, der Nutzer gibt dort eine Nummer zu seiner Identifikation ein und beantwortet die Fragen über einen Radio-Button mit ja oder nein. Wenn er auf Eingabe drückt, wird das Ganze an ein Servlet weitergegeben. Die Attribute müssen sodann im ServletContext unter besagtem Attributnamen, der die Nutzernummer enthält und einem entsprechenden Boolean abgelegt werden. Das ist nur der erste Teil der fünfteiligen Aufgabe ...  , die letztendlich ein Softwarebewertungssystem durchläuft und nur, wenn dieses System sein ok gibt, kann ich am Praktikum teilnehmen.  Dieses System ist sehr intolerant und verträgt eigene Ideen schlecht ...
Grüße
Nico

Ps. Vielleicht erklärt das auch, warum hier plötzlich Java EE -Fragen auftauchen ... Wenn man mehr oder weniger allein vor sich hin wurschtelt, bleibt einem manchmal nur das Forum ...


----------

