# Fragen zum Bau von Custom Userpages



## Tarantoga (6. Jun 2011)

Guten Tag,
da bin ich schon wieder mit einer Frage. Der Grund warum ich das poste ist vielleicht nicht unbedingt der Mangel an Infos die Google ausspuckt, sondern eher die Tatsache, dass ich nicht wirklich weiß wie ich fragen soll. XD
Es wäre echt nett wenn ihr mir Anstöße in die richtige Richtung geben könntet, ab dann gehts eh selbstständig.
Vielleicht Links zu eurer Meinung nach empfehlenswerten Tutorials, Documentations, etc.


Meine Fragen gehen eig. alle in Richtung Social Network. Und zwar gibt es eine Seite auf der ich als User Messages posten kann. Ich möchte gerne das jeder User sozusagen seine eigene Pinnwand hat. (wie eig. in fast allen Social Networking Pages)
Ich dachte mir dass ich jedes Element der Pinnwand-Seite in Tags einhülle, die die Session des momentanen Users abrufen und somit jeder seinen Custom-Bereich hat.

Beim obligatorischen welcome ${user} im Header ist das ja noch schnell gemacht.
Ich dachte mir, dass ich nun eben beim posten von Messages, etc. abfrage welcher User gepostet hat und wohin und das in der DB speichere.
Und beim Aufruf der Seiten dann die spezifischen Infos ausgebe.

Meine Frage wäre nun: 
Ist der Ansatz den ich verfolge überhaupt ein richtiger? Ich finde dazu nichts und habe mir das nun einfach zusammengereimt. Ist das die gängige Methode für solche Projekte?
Bzw. gibt es dazu irgendwelche Guides?
Weil ich kann mir momentan noch nicht so ganz genau vorstellen wie ich zb. einen Link gestalten soll der zu einer Pinnwand eines Users führt.
Dass die angeforderte Seite auch die Infos des gewünschten Users ausgibt, etc.
Ein paar Tipps in diese Richtung wären echt nett.


Meine zweite Frage ist etwas spezifischer:
Momentan gebe ich gepostete Messages mit dem foreach JSTL-Tag wieder.
Das Problem ist nur das neue Nachrichten immer unten rangestellt werden, bzw. der foreach Tag recht blöd zu formatieren ist was die Ausgabe als einzelne Nachricht betrifft.
Weil alle Nachrichten dann ja eig. in einem "Klumpen" zusammenhängen.
Gäbe es da evtl. eine bessere Möglichkeit?

EDIT: 
Hab gerade gesehen, dass bei Facebook jedes Profil eine ID hat, von der ich annehme dass sie beim Erstellen des Profils erzeugt wird.
D.h. ich könnte einen User mit einer ID verknüpfen und wenn Nachrichten auf seiner Pinnwand erstellt werden, haben sie als Attribut diese ID dabei?


Ich wäre um jede hilfreiche Antwort sehr froh und dankbar.
LG
Tarantoga


----------



## Tarantoga (9. Jun 2011)

Ich befasse mich gerade etwas mit JMS. Das klingt eig. ganz gut, für die Zwecke die ich andenke.
Nach wie vor, habe ich noch keine genaue Vorstellung davon, wie ich den Aufruf eines Links dazu verwenden kann die Pinnwand eines bestimmten Users anzuzeigen.


----------



## F.S.WhiTeY (11. Jun 2011)

Dein gedanke mit der Datenbank ist richtig. Wie man das nun in der Tabelle/DB organisiert ist denke ich eine geschmacksfrage. Vieleicht schaust du mal in die Design Pattern? Da stehen solche Sachen ja drin. Für fast jedes IT-Problem gibt es ein Pattern das man als Richtwert nutzen kann. 

Was ich mich allerdings Frage und das häufiger auch bei anderen Usern:

Warum setzt ihr euch mit JSP und der JSTL auseinander? Der aktuelle Standard ist JSF 2.0 mit darauf ausgerichteten Frameworks. Die JSTL wird NUR zu Kompatibilitätszwecken aufrecht gehalten und sollte bei neuen Projekten nicht verwendet werden.
Auch deine "Designprobleme" im sinne der Formatierung lösen sich durch JSF mit Ajax evt. in Luft auf. 


Auch würde ich dir für deine Datenbankgeschäfte JPA und Hibernate ans herz legen. Das ist Objektrelazional die beste Variante und ist schön übersichtlich/Code spaarsam.


----------



## JanHH (13. Jun 2011)

In der Tat, wenn man da mit JSF 2.0/JPA rangeht, löst sich die ganze ursprüngliche Frage wie von selber..

sind dann nur noch ca. 10 Zeilen Code überhaupt ;-).

naja, etwas untertrieben, aber es reduziert sich weitgehend auf

```
public List getPinnwandListe() {
   Query q=entityManager.createQuery("select b from Pinnwanddaten b where b.user = :uid");
   q.setParameter("uid", user.getId());
   return q.getResultList();
}
```

und in der jsf-Seite


```
<h:dataTable value="#{pinnwandAction.pinnwandList}" var="eintrag">
   <h:column>
      <h:outputText value="#{eintrag.kram}" />
   </h:column>
</h:dataTable>
```


----------



## Tarantoga (15. Jun 2011)

Dankeschön, ich werds gleich mal ausprobieren.
Ich hatte früher mal etwas JSF benutzt, aber es hat mir dann nicht so zugesagt. Hatte in Verbindung mit Spring einige Probleme.
Du würdest es aber auf jeden Fall empfehlen?
Da muss ich ja dann auch ein faces servlet auf alle resourcen mappen, oder nicht?

Was die Datenbank betrifft verwende ich eh schon Hibernate.
Soll ich mich da eher an JPA halten, oder würdest du ohne Bedenken Hibernatespezifisches nutzen. (Im Bezug das später mal zu wechseln)

Und schließlich: Funktioniert "user.getId" auch in Verbindung mit SpringSecurity und welche imports brauche ich da.

LG


----------



## F.S.WhiTeY (15. Jun 2011)

Hibernate 3.X kann JPA bzw. ist JPA-Verifiziert. Ist also nix groß anderes und kann weiterhin verwendet werden. 

JSF 2.0 braucht keinen großen Aufwand und muss nicht gemappt werden. Dafür gibt es Annotationen und das Servelt geht automatisch. Ist bei JSP btw. nicht viel anders. 

JSF 2.0
JSFAtWork, JSF 2.0 und Apache MyFaces

Spring  security braucht neuerdings nur noch das Spring-Security-Framework, welches als Standalone laufen kann. log4j wäre noch ganz ratsam.

Spring Security 3.X
Spring Security


----------



## JanHH (15. Jun 2011)

Ich kenn mich eigentlich nur mit den JEE-Standardtechnologien (JSF, JPA, JEE6) aus, aber wüsste nicht, warum man die nicht empfehlen sollte. Ist ja sozusagen "der vorgesehen Weg", sowas zu implementieren.


----------



## Tarantoga (16. Jun 2011)

Naja, ein Negativbeispiel von JSF ist zum Beispiel, dass die URL immer "nachhinkt", wenn man keinen redirect in den Navigationrules angibt.
Sonst weiß der Browser nicht welche JSP den View rendert und gibt die vorherige wieder.

Es gibt zwar Lösungen dazu, aber ich habs dann lieber gleich gelassen.
Manche sagen auch JSF würde Apps unnötig verlangsamen, was ich persönlich zwar nicht bestätigen kann, dazu habe ich es nicht lange genug getestet.

Also dass meine ich damit ob man es empfehlen kann.

BTW. Kennt hier jemand ein gutes Tutorial um Hibernate als Datenbankanbindung für Spring Security 3 zu implementieren? bzw. welche Datenbank würdet ihr empfehlen?

LG


----------



## F.S.WhiTeY (17. Jun 2011)

Tarantoga hat gesagt.:


> Naja, ein Negativbeispiel von JSF ist zum Beispiel, dass die URL immer "nachhinkt", wenn man keinen redirect in den Navigationrules angibt.
> Sonst weiß der Browser nicht welche JSP den View rendert und gibt die vorherige wieder.
> 
> Es gibt zwar Lösungen dazu, aber ich habs dann lieber gleich gelassen.
> ...




Ähm ich glaub du hängst noch nach in der JSR3X haben wir JSF 2.0 und wir brauchen keine NavRules mehr..... ich sag ja setzt dich mit JSF 2.0 auseinander und nicht mit 1.2...


----------



## Tarantoga (18. Jun 2011)

Okay Danke,
ich werde mich damit auseinandersetzen.

Fürs Erste mache ich hier mal zu, hab momentan kaum Zeit.

LG


----------



## Tarantoga (21. Jun 2011)

Sry, aber wenn ich vielleicht doch noch eine Frage anhängen dürfte:

Wenn ich auf einen Usernamen Link klicke, wie löse ich es am besten, dass einfache alle Parameter einer Seite auf diesen abgestimmt werden.

Würde es etwas so passen:

Link schickt Id als query String in der Url; 
Controller übernimmt diesen und setzt alle Paramter der GET Methode auf diese ID, damit dann eben Avatar, Messages etc. richtig angezeigt werden.
?

Bzw. wenn ich als User auf der Page eines anderen bin und dann poste.
Wie kann ich der Message die ID des Users mitgeben auf dessen Page ich gerade bin?
Die eigene ID ist eh klar, aber der Controller speichert die ID des gedrückten Links doch nicht?
Die get doch nach ausführen des GET Requests verloren?
Brauch ich da ExtraBeans mit gewissen Scopes?

Vielen Dank euch allen.
LG
Tarantoga


----------

