Struts2 实现登录

385 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第2天,点击查看活动详情

前言

  Struts2 是一个基于MVC设计模式的[Web应用框架,它本质上相当于一个 servlet,在MVC设计模式中,Struts2 作为控制器来建立模型与视图的数据交互。

  Struts 2是 Struts 的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的 Struts 2框架。其全新的 Struts 2的体系结构与Struts 1的体系结构差别巨大。Struts 2 以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与 ServletAPI 完全脱离开,所以Struts 2可以理解为WebWork的更新产品。

  本文是适合小白学习 Struts2 框架的教程,基与 Struts2 实现登录功能。

1、实现思路

  • 1.首先创建一个项目,名为 StrutsTest
  • 2.创建一个包存放 Struts,创建类,命名为 LoginAction.java
  • 3.在该包下,创建一个 xml 文件,名为 struts.xml
  • 4.把 jar 包导入 lib 目录下
  • 5.在 web.xml 中配置过滤器
  • 6.创建一个实体类 User,其中的属性值与 form 表单提交的数据保持一致
  • 7.关键代码如下:

2、实现过程

目录结构如下:

ce300bc28f818e1136ac7fba5ff8634b.png

1、LoginAction.java action 类

  这里主要是对登录逻辑的判断,重写 execute() 方法。

package sqgxy.xmp.action;
​
import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionContext;
import sqgxy.xmp.entity.User;
​
import java.util.Map;
​
​
public class LoginAction implements Action {        //ActionSupport类
​
    private User user;      //entity实体层的User
​
    public String execute() throws Exception {      //每次访问Action,默认执行execute()方法。
​
        System.out.println("用户名:" + user.getUserName());
        System.out.println("密码:" + user.getPassword());
​
        /**
         * 简单的登录判断
         */
        if ("熊民普".equals(user.getUserName()) && "xmp".equals(user.getPassword())) {
            // 将user对象保存在session中
            Map<String, Object> session = null;
            session = ActionContext.getContext().getSession();
            session.put("CURRENT_USER", user);
            return Action.SUCCESS;      //返回字符串SUCCESS,为struts.xml跳转做准备。
        } else {
            return Action.ERROR;
        }
    }
​
    public User getUser() {
        return user;
    }
​
    public void setUser(User user) {
        this.user = user;
    }
}
​
​

2、User.java 实体类

  封装User对象,Get、Set 方法的编写。

package sqgxy.xmp.entity;
​
public class User {
    private String userName;
    private String password;
​
    public User() {
    }
​
    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;
    }
}
​

3、struts.xml 配置文件

  这里主要是Struts2的配置,命名只能为struts.xml,且只能放在 src 根目录下,当 action 返回 success 时跳转至登录成功页面,否则跳转至登录失败页面。

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN""http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
    <package name="default" namespace="/default" extends="struts-default">
    
    <action name="login" class="sqgxy.xmp.action.LoginAction" method="execute">
        
        <!--结果为字符串"success"时,跳转至登录成功页面-->            
        <result name="success">/success.jsp</result>
        
        <!--结果为字符串"error"时,跳转至登录失败页面-->            
        <result name="error">/error.jsp</result>
        
    </action>
    
    </package>
</struts>

页面代码如下:

4、登录页面

<%--Created by IntelliJ IDEA.
    User: xmpDate: 2022/9/13
    Time: 9:04
    To change this template use File | Settings | File Templates.
    --%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
    <head>
        <title>登录</title>
    </head>
<body>
    <form action="default/login" method="post">
        用户名:<input type="text" name="user.userName" /><br />
        密 码: <input type="password" name="user.password"/><br />
               <input type="submit" />
    </form>
</body>
</html>

5、Error 页面

<%--
  Created by IntelliJ IDEA.
  User: xmp
  Date: 2022/9/13
  Time: 9:05
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>登录失败</title>
</head>
<body>
    <h2 style="color: red">用户名或密码不匹配。</h2>
</body>
</html>
​
​

6、Success 页面

<%--
  Created by IntelliJ IDEA.
  User: xmp
  Date: 2022/9/13
  Time: 9:04
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java"%>
<html>
<head>
    <title>登录成功</title>
</head><body>
    欢迎您,${sessionScope.get("CURRENT_USER").userName}
</body>
</html>

3、实验结果

1.登录界面:

30057d85d6b41b31131363400fcdfc36.png

2.登录失败界面:

3f6db53c3410310986e0c4f7d034ec5b.png

3.登录成功界面:

5790f42008fa062d2aa802d85735162c.png

总结

  以上就是 Stuts2 实现登录的全部内容,仅供大家参考学习,通过该 demo 可以学习到 Struts2 框架的核心思想, 希望可以帮到小白学习进阶 Struts2 框架,后续我还会继续持续输出。