Using Java sessions for login/logout

19,184

You forgot to put =

<H1>Hello: <%= session.getAttribute("Username"); %></H1>
Share:
19,184
Admin
Author by

Admin

Updated on June 04, 2022

Comments

  • Admin
    Admin almost 2 years

    Having trouble getting session to work in my Java application.

    My login.jsp page calls this LoginAction page.

    package struts.action;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionForward;
    import org.apache.struts.action.ActionMapping;
    
    import struts.form.LoginForm;
    
    public class LoginAction extends org.apache.struts.action.Action {
    private final static String SUCCESS = "success";
    private final static String FAILURE = "failure";
    
        public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
            LoginForm lf = (LoginForm) form;
            HttpSession session = request.getSession(true);
            if (lf.getUsername().equals(lf.getPassword())) {
    
                session.setAttribute("Username", lf.getUsername());
                System.out.println(session.getAttribute("Username"));
                return mapping.findForward(SUCCESS);
    
            } else {
                return mapping.findForward(FAILURE);
            }
        }
    }
    

    Corresponding LoginForm page

    package struts.form;
    import org.apache.struts.action.*;
    
    public class LoginForm extends ActionForm{
    
        private String username;
        private String password;
    
        public LoginForm() {
            super();
        }
        private static final long serialVersionUID = 104092268304152302L;
    
        public String getUsername() {
        return username;
        }
    
        public void setUsername(String username) {
        this.username = username;   
    }
    
        public String getPassword() {
            return password;
            }
    
            public void setPassword(String password) {
            this.password = password;   
        }
    }
    

    success.jsp, the page shown when logged in

    <%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
    <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
    <%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>
    <%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><%@page
        language="java" contentType="text/html; charset=ISO-8859-1"
        pageEncoding="ISO-8859-1"%>
    <html>
    <head>
    <title>success</title>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    </head>
    <body>
    <H1>Hello: <% session.getAttribute("Username"); %></H1>
    
     <html:form action="/LogoutAction" >
            <html:submit value="Logout" />
     </html:form>
    
    </body>
    </html>
    

    Logout Action page package struts.action;

    import javax.servlet.http.HttpSession;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionForward;
    import org.apache.struts.action.ActionMapping;
    
    public class LogoutAction extends org.apache.struts.action.Action {
    
        private final static String SUCCESS = "success";
        private final static String FAILURE = "failure";
    
        @Override
        public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)
        throws Exception {
            HttpSession session = request.getSession(true);
            System.out.println(session.getAttribute("Username"));
    
            try{
                session.removeAttribute("Username");
                session.invalidate();
                return mapping.findForward(SUCCESS);
            }catch(Exception ex){
                System.out.println("Error");
            }
        return mapping.findForward(FAILURE);
        }
    } 
    

    Corresponding LogoutForm package struts.form; import org.apache.struts.action.*;

    public class LogoutForm extends ActionForm{
    
        private static final long serialVersionUID = 1L;
    
    }
    

    So the session is created in my Login action, and it works, as if I use the getAttribute() and print it to the console, the username comes up. However, the username won't show up on my success.jsp page.

    Can anyone help?