Strus 2 mapping funktiert nicht

Player00

Grünschnabel
Hi ihr ich habe folgende Fragen bzw. Probleme.

Ich beschäftige mich seit kurzem mit dem Framework Struts 2.0 und anscheinend verstehe ich dort einige Dinge nicht, die mir
auch nach mehrmaligen lesen der Site apache.org/struts nicht klar werden wollen.

Deswegen dachte ich versuche mal bei euch mein Glück ob es mir vielleicht jemand erklären kann.

Es geht um folgendes: Ich habe eine Login.jsp welche wie der Name schon sagt eine Loginseite ist. Sie mach die Abfrage
ob in der Session schon ein bestimmtes Objekt vorhanden ist oder nicht. Falls NEIN, kommt ein normales Namensfeld und Passwortfeld
zum einloggen. Der Submitbutton leitet das ganze an die LoginAction genauer an die Methode addUser().
Die mache ich (in der jsp) wie folgt: <s:form action="Login_addUSER">

Die addUser schreibt falls es den User gibt diesen in die Session und returnt den String "HIHI"



und es funktioniert auch! es wird mir die index.jsp angezeigt.

Nun rufe ich wieder die Login.jsp auf und er erscheint sie sind bereits eingeloggt! Nun habe ich dort einen Button gemacht Logout
welcher in der Action die Mathode loescheUSER aufruft ( bzw. soll) aber genau dies Funktioniert nicht.

Ich komme anscheint nicht in die Methode denn es wird immer nur immer wieder die Login angezeigt.
Selbst ein System.out in der loescheUser wird nicht ausgegeben.


DESWEGEn NUN meine Fragen: Ersten wieso das? Wo liegt mein Fehler was amche ich vielleicht falsch.
Dann wie funktioniert das Wild-Mapping genau? #
Wann wird die execute() in einer Action aufgerufen? denn irgendwie habe ich das
gefühl das passiert immer mal zwischendurch


Ich danke euch schon mal falls mir einer helfen möchte denn ich komme dort echt nicht mehr weiter

THX G

Hier mal der komplette Code... da er zum testen für mich ist bitte ich von der sauberkeit und der art des kodierens abzusehen ...


Meine Action:

Code:
package net.rentnervz.action; 
import com.opensymphony.xwork2.ActionContext; 
import com.opensymphony.xwork2.ActionSupport; 
import java.util.Map; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpSession; 
import net.rentnervz.bean.User; 
import net.rentnervz.db.DataAccessObject; 
import net.rentnervz.util.RentnerVzConst; 
import org.apache.struts2.interceptor.ServletRequestAware; 


public class Login extends ActionSupport implements ServletRequestAware{ 
    
    public static final String MESSAGE = "Benutzername oder Passwort falsch"; 
    private DataAccessObject dao; 
    private HttpServletRequest request; 
    private String message; 
    HttpSession session; 
    private String username; 
    private String password; 
    public String execute() throws Exception { 
          
        setMessage(MESSAGE); 
//        if (isInvalid(getUsername())) return INPUT; 
//        if (isInvalid(getPassword())) return INPUT; 
        
     return SUCCESS;    
    } 
    
    private boolean isInvalid(String value) { 
        
        return (value == null || value.length() == 0); 
    } 
    public String addUSER() throws Exception { 
        
        System.out.println("Geschafft endlich hat das Mapping mal geklappt ADDD.............................................."); 
        return this.getUserFromDB(); 
    } 
     public String loescheUSER() throws Exception { 
        
        System.out.println("Geschafft endlich hat das Mapping mal geklappt REMOVE.............................................."); 
       return this.removeUser1(); 
        
    } 
      
   public String getUsername() { 
        return username; 
    } 
    public void setUsername(String username) { 
        this.username = username; 
    } 
      public void setServletRequest(HttpServletRequest request) { 
        this.request = request; 
    } 
    
    
    public String getPassword() { 
        return password; 
    } 
    public void setPassword(String password) { 
        this.password = password; 
    } 
    public void setMessage(String message){ 
        this.message = message; 
    } 
    
    public String getMessage() { 
        return message; 
    }    
    public String getUserFromDB(){ 

        if (dao == null) { 
            dao = DataAccessObject.getInstance(); 
        } 
        try{ 
            User user = (User)dao.validUser(username, password); 
            
            if(user == null){ 
                return INPUT; 
            } 
            
            request.getSession().setAttribute(RentnerVzConst.SESSION_USER, user); 

        }catch(Exception e){ 
            System.out.println("Fehler in LoginAction" +e.getMessage()); 
            return INPUT; 
        } 
        return "HIHI"; 
    } 

    private String removeUser1() { 
        System.out.println("Versuch zu removen "); 
        request.getSession().removeAttribute(RentnerVzConst.SESSION_USER); 
        System.out.println("removed"); 
        return "BLUBB"; 
    } 
}

HTML:
\sourceon HTML
<%@ taglib prefix="s" uri="/struts-tags" %> 
<html> 
    <head> 
        <title>Login</title> 
    </head> 
    <body> 
        
        <s:if test="#session.loggedInUser == null"> 
            
            <h1>Bitte geben Sie Ihre Benutzerdaten ein</h1> 
            <h2><s:property value="message"/></h2> 
            <s:form action="Login_addUSER"> 
                
                <s:textfield label="Benutzername" name="username" /> 
                <s:password label="Password" name="password" /> 
                
                <s:submit/> 
                
            </s:form> 
        </s:if> 
        <s:else> 
            
 
 
 
            <h1>Sie sind bereits eingeloggt Herr 
                <s:label label="%{#session.loggedInUser.lastName}"  />
 
                
                
                <s:form action="Login_loescheUSER"> 
                    <s:label label="%{#session.loggedInUser.lastName}"/>
            
                    <s:submit/> 
                </s:form> 
                <!-- Aus reiner Verzweiflung das ganze nochmal als normaler LINK--> 
                <li><a href="<s:url action="Login_loescheUSER"></s:url>">Raus</a></li> 
                
            </h1></ 
        </s:else> 
        
    </body> 
</html>


Mein Mapping dazu:

HTML:
<action name="Login_*" method="{1}" class="net.rentnervz.action.Login"> 
            <result name="addUSER">/jsp/result.jsp</result> 
            <result name="loescheUSER">/jsp/result.jsp</result> 
            <result name="success">/index.jsp</result> 
            <result name="input">/jsp/Login.jsp</result> 
            <result name="HIHI">/index.jsp</result> 
            <result name="BLUBB">/jsp/result.jsp</result> 
            
        </action>
 

Neue Beiträge

Zurück