java - 使用 Java session 进行登录/注销

标签 java session struts

在我的 Java 应用程序中使 session 正常工作时遇到问题。

我的login.jsp页面调用此LoginAction页面。

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);
        }
    }
}

对应的LoginForm页面

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,登录时显示的页面

<%@ 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>

注销操作页面 包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);
    }
} 

对应的LogoutForm 封装 struts.form; 导入 org.apache.struts.action.*;

public class LogoutForm extends ActionForm{

    private static final long serialVersionUID = 1L;

}

因此, session 是在我的登录操作中创建的,并且它可以工作,就好像我使用 getAttribute() 并将其打印到控制台一样,用户名出现了。但是,用户名不会显示在我的 success.jsp 页面上。

有人可以帮忙吗?

最佳答案

您忘记输入=

<H1>Hello: <%= session.getAttribute("Username"); %></H1>

关于java - 使用 Java session 进行登录/注销,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16087037/

相关文章:

java - 如何处理更新 Google App Engine 上的 JDO 类定义

java - java中遍历Avl树

Go 的 session 中间件?

php - 显示最近从 $_FILES 上传的文件

java - Liferay - portlet 标题重新加载

java - 分配给通过 Java 调用的命令行程序的内存

javascript - 实现状态 - 何时将状态更改为离线

java - 将 Struts Tiles 属性插入 JavaScript 函数

java - 将表单参数从 JSP 发送到 Struts 操作类

java - 如何将变量从 try 传递到 action 事件?