📜  Struts 2登录和注销示例(1)

📅  最后修改于: 2023-12-03 14:47:44.386000             🧑  作者: Mango

Struts 2登录和注销示例

本示例将介绍如何使用Struts 2框架实现一个简单的登录和注销功能。

准备工作

在开始之前,需要确保已经安装好Java和各种必要的开发工具。同时,还需安装Struts 2框架。

可以从官网(https://struts.apache.org/)下载最新版本的Struts 2,并安装它。安装完成后,还需要在项目中引入Struts 2的相关依赖。

实现登录功能
编写JSP页面

首先,我们需要编写一个JSP页面,用于输入用户的登录信息。例如,可以创建一个名为login.jsp的文件,内容如下:

<%@ page contentType="text/html; charset=UTF-8" language="java" %>
<!DOCTYPE html>
<html>
<head>
  <title>登录</title>
</head>
<body>
  <h2>登录</h2>
  <form action="login.action" method="post">
    用户名: <input type="text" name="username"/><br/>
    密码: <input type="password" name="password"/><br/>
    <input type="submit" value="登录"/>
  </form>
</body>
</html>

在这个页面中,我们使用了一个form表单来提交数据到login.action。这个action会在后面实现。

编写Action类

在Struts 2中,每个请求都需要对应一个Action类来处理。在本例中,我们需要编写一个LoginAction来处理用户的登录请求。

首先,我们需要定义一个登录页面中各个表单元素对应的属性。可以在LoginAction中定义这些属性,代码如下:

public class LoginAction {

  private String username;
  private String password;

  // getters and setters
}

紧接着,我们需要编写一个execute()方法,用于接收用户提交的表单数据。代码如下:

public class LoginAction extends ActionSupport {

  private String username;
  private String password;

  @Override
  public String execute() throws Exception {
    if ("admin".equals(username) && "123456".equals(password)) {
      return SUCCESS;
    } else {
      return INPUT;
    }
  }

  // getters and setters
}

在这个execute()方法中,我们根据输入的用户名和密码进行判断,如果验证通过,就返回SUCCESS,表示登录成功;否则返回INPUT,表示登录失败。

配置Struts 2

最后,我们需要告诉Struts 2如何处理这个请求。可以在struts.xml文件中添加如下配置:

<struts>
  <package name="default" extends="struts-default">
    <action name="login" class="com.example.LoginAction">
      <result name="success">welcome.jsp</result>
      <result name="input">login.jsp</result>
    </action>
  </package>
</struts>

在这个配置中,我们定义了一个名为login的action,并将其映射到LoginAction类上。我们还定义了两个结果,分别是登录成功和登录失败。如果登录成功,就跳转到welcome.jsp,否则跳转回login.jsp。

现在,我们就可以启动应用程序,访问login.jsp页面,输入正确的用户名和密码,就可以登录成功了。

实现注销功能

实现注销功能也非常简单。我们只需要在Struts 2中定义一个logout的action,然后在这个action中清除掉当前用户的登录状态即可。

编写JSP页面

首先,我们需要在登录后的页面中添加一个注销链接。例如,可以在welcome.jsp中添加如下内容:

<%@ page contentType="text/html; charset=UTF-8" language="java" %>
<!DOCTYPE html>
<html>
<head>
  <title>欢迎</title>
</head>
<body>
  <h2>欢迎!</h2>
  <a href="logout.action">注销</a>
</body>
</html>

在这个页面中,我们添加了一个注销链接,当用户点击这个链接时,就会跳转到logout.action。

编写Action类

在LoginAction类中,我们需要添加一个logout()方法,用于处理注销请求。代码如下:

public class LoginAction extends ActionSupport {

  private String username;
  private String password;

  @Override
  public String execute() throws Exception {
    if ("admin".equals(username) && "123456".equals(password)) {
      return SUCCESS;
    } else {
      return INPUT;
    }
  }

  public String logout() throws Exception {
    // 清除登录状态
    return SUCCESS;
  }

  // getters and setters
}

在这个方法中,我们可以清除掉当前用户的登录状态。在这里,我们并没有实现真正的注销功能,只是简单地返回了一个成功的结果。

配置Struts 2

最后,我们需要在struts.xml中添加一个logout的action的配置:

<struts>
  <package name="default" extends="struts-default">
    <action name="login" class="com.example.LoginAction">
      <result name="success">welcome.jsp</result>
      <result name="input">login.jsp</result>
    </action>
    <action name="logout" class="com.example.LoginAction" method="logout">
      <result name="success">login.jsp</result>
    </action>
  </package>
</struts>

在这个配置中,我们定义了一个名为logout的action,并将其映射到LogoutAction类上。我们还定义了一个结果,表示注销成功后跳转到login.jsp。

现在,我们就可以点击欢迎页面上的注销链接,实现注销功能。