一生一世 2013-11-29 05:45 采纳率: 0%
浏览 1115

怎样利用Java 中的struts2框架实现数据库中用户登录功能?

在Action中LoginAction怎样写?
配置文件中怎样写?
总体实现能够使数据库中已经存在的用户凭自己的密码与用户名登录成功呢?数据库是Oracle数据库。

  • 写回答

1条回答

  • ChatGPTᴼᴾᴱᴺᴬᴵ 2023-12-09 19:17
    关注

    所有内容均由人工智能模型输出,其内容的准确性和完整性无法保证,不代表我的态度或观点。
    (讯飞星火专栏,V3.0版本,2023.10.24)


    该回答引用讯飞星火认知大模型,仅提供参考,不保证完全正确
    要实现用户登录功能,首先需要在数据库中创建一个用户表,用于存储用户名和密码。然后,在Struts2框架中创建一个LoginAction类,用于处理登录请求。接下来,编写配置文件,配置数据库连接信息和登录页面。最后,编写JSP页面,显示登录表单并处理登录请求。

    1. 创建用户表:
    CREATE TABLE users (
        id NUMBER PRIMARY KEY,
        username VARCHAR2(50) NOT NULL,
        password VARCHAR2(50) NOT NULL
    );
    
    1. 在Struts2框架中创建LoginAction类:
    import com.opensymphony.xwork2.ActionSupport;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    
    public class LoginAction extends ActionSupport {
        private String username;
        private String password;
        private String message;
    
        public String execute() {
            if (validateForm()) {
                try {
                    Class.forName("oracle.jdbc.driver.OracleDriver");
                    Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "username", "password");
                    String sql = "SELECT * FROM users WHERE username = ? AND password = ?";
                    PreparedStatement pstmt = conn.prepareStatement(sql);
                    pstmt.setString(1, username);
                    pstmt.setString(2, password);
                    ResultSet rs = pstmt.executeQuery();
                    if (rs.next()) {
                        message = "登录成功";
                        addActionMessage(message);
                        return "success";
                    } else {
                        message = "用户名或密码错误";
                        addActionError(message);
                        return "failure";
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                    message = "数据库连接失败";
                    addActionError(message);
                    return "failure";
                }
            } else {
                return "input";
            }
        }
    
        public boolean validateForm() {
            if (username == null || username.trim().isEmpty()) {
                addActionError("用户名不能为空");
                return false;
            }
            if (password == null || password.trim().isEmpty()) {
                addActionError("密码不能为空");
                return false;
            }
            return true;
        }
    
        // getter和setter方法
    }
    
    1. 编写配置文件(struts.xml):
    <struts>
        <package name="com.example" extends="struts-default">
            <action name="login" class="com.example.LoginAction">
                <result name="success">/success.jsp</result>
                <result name="failure">/failure.jsp</result>
                <result name="input">/input.jsp</result>
            </action>
        </package>
    </struts>
    
    1. 编写JSP页面(input.jsp):
    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title>登录</title>
    </head>
    <body>
        <form action="login" method="post">
            <label for="username">用户名:</label>
            <input type="text" id="username" name="username" required>
            <br>
            <label for="password">密码:</label>
            <input type="password" id="password" name="password" required>
            <br>
            <input type="submit" value="登录">
        </form>
    </body>
    </html>
    
    1. 编写JSP页面(success.jsp和failure.jsp):
    <!-- success.jsp -->
    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title>登录成功</title>
    </head>
    <body>
        <h1>${message}</h1>
        <a href="index.jsp">返回首页</a>
    </body>
    </html>
    
    <!-- failure.jsp -->
    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title>登录失败</title>
    </head>
    <body>
        <h1>${message}</h1>
        <a href="input.jsp">重新登录</a>
    </body>
    </html>
    

    这样,当用户输入正确的用户名和密码后,就可以登录成功了。

    评论

报告相同问题?

悬赏问题

  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?