📅  最后修改于: 2023-12-03 14:47:44.386000             🧑  作者: Mango
本示例将介绍如何使用Struts 2框架实现一个简单的登录和注销功能。
在开始之前,需要确保已经安装好Java和各种必要的开发工具。同时,还需安装Struts 2框架。
可以从官网(https://struts.apache.org/)下载最新版本的Struts 2,并安装它。安装完成后,还需要在项目中引入Struts 2的相关依赖。
首先,我们需要编写一个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会在后面实现。
在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.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中清除掉当前用户的登录状态即可。
首先,我们需要在登录后的页面中添加一个注销链接。例如,可以在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。
在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.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。
现在,我们就可以点击欢迎页面上的注销链接,实现注销功能。