Lotus Notes / Domino Sonstiges > Java und .NET mit Notes/Domino
Servlet: doGet und doPost
Mark³:
ich kann noch nicht überschauen welcher Weg für mich am Besten ist. Ich brauche einige der 50 Felder als explizite Werte (hartkodierter Name) wie z B Personalnummer. Alle anderen Werte kann ich unspezifisch als Wertepaare in ein grosses Textfeld schreiben.
Daher wäre mein Ansatz:
eine Map holen. Dann die spezifischen Werte mit map.get(Object key) holen und dann aus map löschen. Dann die verbleibende Map mit Iterator durchgehen und alle map.Entry() als Feld-Wert ins Textfeld schieben. Ist das so üblich?
flaite:
Ich find diesen Ansatz einfacher:
1. die Namen der benötigten Felder in einen java.util.Set schreiben (name hier: setRequiredFields). Am besten natürlich extern auslesbar. In web.xml, spring-config.xml (in meinem Fall ist es bei so was meist das) oder properties Datei.
Dann ungefähr so:
--- Code: --- Map mResOpenView = New HashMap ();
Enumeration allReqParamNames = request.getParameterNames();
while (allReqParamNames.hasMoreElements()) {
String reqParamName = allReqParamNames.nextElement().toString();
if (setRequiredFields.contains(reqParamName) {
String value = req.getParameter(reqParamName);
mResOpenView.put(reqParamName, value);
}
}
// mResOpenView irgendwie nach openView übergeben.
--- Ende Code ---
halte das für am einfachsten und transparentesten.
Gruß Axel
Mark³:
das sieht schon gleich Java-mäßig aus :D
Ich werde mal probieren ob ich das so hinbekomme. Beim Schreiben des Wortes hartkodiert hatten sich meine Finger eh schon gesträubt :-X
Mark³:
das java.util.Set möchte ich in eine properties-Datei auslagern. Schreibe ich die Klasse dafür manuell oder gibts sowas schon in Apache oder so? Ich habe bereits eine messages.properties, die mir Eclipse automatisch über 'Externalize Strings' generiert hat (inkl. der Klasse Messages.java). Soll ich das als Vorbild nehmen?
Ich habe bereits Java ist eine Insel und 80% des bekannten Internets durchforstet aber ich finde da nix passendes zu. Natürlich kann ich alles auch selbst schreiben aber ich habe keinen Bock das irgendwie super kompliziert zu machen wo jeder Javaprogrammierer sagt: Wieso machst du das nicht einfach so anstatt alles neu zu erfinden: .....
flaite:
du kannst z.B. die zu überprüfenden Parameter als komma-separierte Liste in einen Tag der web.xml schreiben.
https://wiki.imise.uni-leipzig.de/Themen/WebApp/WebXml#h686-7
In deinem Fall wäre das so ungefähr:
--- Code: ---<context-param>
<param-name>requiredFields</param-name>
<param-value>name,strasse, plz, ort</param-value>
<description>list of names of request Parameters to monitor.</description>
</context-param>
--- Ende Code ---
Dann die Liste als Property der Klasse.
--- Code: ---class MyServlet extends Servlet {
private Set setRequiredFields = new HashSet();
//@override von GenericServlet
public void init( ServletConfig config) {
ServletContext context = config.getServletContext(); // muss nicht sein.
String rawInitParameter = context.getInitParameter("requiredFields");
String[] initParametersAsArray = rawInitParameters.split(",");
for (int i=0; i <initParametersAsArray.length; i++) {
String param = initParametersAsArray[i].trim();
if ((param!=null) && (param.length() > 0))
setRequiredFields.add(initParametersAsArray[i].trim());
}
}
setRequiredFields = new HashSet()
public void doPost (HttpServletRequest req, HttpServletResponse res)
[...]
}
--- Ende Code ---
Das Servlet läuft ja Multithreaded. D.h. es bedient mehrere Requests (sogar quasi gleichzeitig). Die init-Methode wird aber nur genau einmal beim Start des Servlets aufgerufen.
Navigation
[0] Themen-Index
[*] Vorherige Sete
Zur normalen Ansicht wechseln