用户输入姓名、年龄等信息,另一个页面显示登陆结果

简单的用户登录系统
设计一个web应用,该web应用提供两个JSP页面,一个可以让用户输入姓名、年龄等信息,另一个页面显示登陆结果。web应用提供一个servlet对象用于负责数据的操作(姓名、年龄的合法性),web应用提供的javabean负责刻画登录用户,提供简单的数据获取和修改数据的方法。无需连接数据库

我写一个简单的示例:
简单的用户登录系统的设计,包括两个 JSP 页面、一个 Servlet 对象和一个 JavaBean。

  1. 输入信息页面(input.jsp)

该页面用于让用户输入姓名、年龄等信息,并提交表单内容。表单中包括以下字段:

  • 姓名(name)
  • 年龄(age)
  • 提交按钮(submit)

input.jsp 页面的代码如下:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>用户登录</title>
  </head>
  <body>
    <h1>用户登录</h1>
    <form action="login" method="post">
      <label for="name">姓名:</label>
      <input type="text" id="name" name="name" required><br>
      <label for="age">年龄:</label>
      <input type="number" id="age" name="age" required><br>
      <button type="submit">提交</button>
    </form>
  </body>
</html>
  1. 登录结果页面(result.jsp)

该页面用于显示用户登录结果,包括登录成功或失败的提示信息以及用户输入的姓名和年龄。如果登录失败,则会显示失败原因。

result.jsp 页面的代码如下:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>登录结果</title>
  </head>
  <body>
    <h1>登录结果</h1>
    <% if (bean.isValid()) { %>
      <p>欢迎您,<%= bean.getName() %>!您的年龄是 <%= bean.getAge() %>。</p>
    <% } else { %>
      <p>登录失败: <%= bean.getErrorMessage() %></p>
    <% } %>
  </body>
</html>
  1. Servlet 对象(LoginServlet)

该对象用于处理用户输入的数据,并将处理结果存储在 JavaBean 中。Servlet 对象的代码如下:

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class LoginServlet extends HttpServlet {
  private static final long serialVersionUID = 1L;

  protected void doPost(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
    String name = request.getParameter("name");
    int age = Integer.parseInt(request.getParameter("age"));

    LoginBean bean = new LoginBean(name, age);
    bean.validate();

    request.setAttribute("bean", bean);
    request.getRequestDispatcher("result.jsp").forward(request, response);
  }
}
  1. JavaBean(LoginBean)

该对象用于刻画登录用户,包括用户输入的姓名、年龄以及登录结果的状态和提示信息。JavaBean 的代码如下:

public class LoginBean {
  private String name;
  private int age;
  private boolean valid;
  private String errorMessage;

  public LoginBean(String name, int age) {
    this.name = name;
    this.age = age;
  }

  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }

  public int getAge() {
    return age;
  }

  public void setAge(int age) {
    this.age = age;
  }

  public boolean isValid() {
    return valid;
  }

  public String getErrorMessage() {
    return errorMessage;
  }

  public void validate() {
    if (name == null || name.trim().equals("")) {
      valid = false;
      errorMessage = "请输入姓名。";
    } else if (age < 18 || age > 60) {
      valid = false;
      errorMessage = "年龄必须在 18 岁到 60 岁之间。";
    } else {
      valid = true;
    }
  }
}

该系统可以让用户输入姓名、年龄等信息并提交表单,然后通过 Servlet 对象进行数据处理和验证,并将结果存储在 JavaBean 中。最后,结果页面根据 JavaBean 的状态和提示信息来显示登录结果。

  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/733223
  • 这篇博客你也可以参考下:【个人学习笔记】Java web 用简单的jsp页面实现计算一个整数的阶乘
  • 除此之外, 这篇博客: 基于javaweb jsp+servlet学生宿舍管理系统中的 学生缺勤模块:显示学生缺勤列表数据、以及添加学生缺勤和根据、宿舍楼 查询信息 以及修改删除操作 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 您还可以看一下 张中强老师的Java Web入门课程中的 详解JSP中的九大内置对象(一)小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    我可以使用Servlet、JSP和JavaBean来实现这个应用。

    1. 创建一个Servlet,用于处理用户输入的数据,校验姓名、年龄的合法性。在doPost()方法中获取请求参数,并校验参数是否合法。如果有非法参数,则跳转到错误页面;否则将参数封装到一个JavaBean对象中,将JavaBean对象保存到session中,并重定向到登录结果页面。示例代码如下:
    public class LoginServlet extends HttpServlet {
        @Override
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            // 获取请求参数
            String name = request.getParameter("name");
            String ageStr = request.getParameter("age");
            // 校验参数合法性
            if (StringUtils.isEmpty(name) || StringUtils.isEmpty(ageStr)) {
                // 跳转到错误页面
                request.getRequestDispatcher("/error.jsp").forward(request, response);
                return;
            }
            int age = Integer.parseInt(ageStr);
            if (age <= 0 || age >= 150) {
                // 跳转到错误页面
                request.getRequestDispatcher("/error.jsp").forward(request, response);
                return;
            }
            // 将参数封装到JavaBean对象中
            User user = new User(name, age);
            // 将JavaBean对象保存到session中
            request.getSession().setAttribute("user", user);
            // 重定向到登录结果页面
            response.sendRedirect(request.getContextPath() + "/result.jsp");
        }
    }
    
    1. 创建一个JSP页面用于用户输入姓名、年龄等信息,并提交到LoginServlet。示例代码如下:
    <form action="${pageContext.request.contextPath}/login" method="post">
        姓名:<input type="text" name="name"/><br/>
        年龄:<input type="text" name="age"/><br/>
        <input type="submit" value="登录"/>
    </form>
    
    1. 创建另一个JSP页面用于显示登录结果。在JSP页面中通过JavaBean的getter方法获取用户信息,并显示到页面上。示例代码如下:
    <%
        // 从session中获取JavaBean对象
        User user = (User) session.getAttribute("user");
    %>
    欢迎 <%=user.getName()%> 登录,您的年龄是 <%=user.getAge()%> 岁。
    
    1. 创建一个JavaBean,用于描述登录用户的属性,提供简单的数据访问和修改方法。示例代码如下:
    public class User {
        private String name;
        private int age;
    
        public User(String name, int age) {
            this.name = name;
            this.age = age;
        }
    
        public String getName() {
            return name;
        }
    
        public int getAge() {
            return age;
        }
    }
    
    1. 使用Servlet监听器,在Web应用启动时,建立一个数据库连接,以备给整个应用使用,当应用销毁时,关闭连接。在监听器中实现contextInitialized()和contextDestroyed()方法。示例代码如下:
    public class GetConnListener implements ServletContextListener {
        // 应该启动时,该方法被调用。
        public void contextInitialized(ServletContextEvent sce) {
            try {
                // 取得该应用的ServletContext实例
                ServletContext application = sce.getServletContext();
                // 从配置参数中获取驱动
                String driver = application.getInitParameter("driver");
                // 从配置参数中获取数据库url
                String url = application.getInitParameter("url");
                // 从配置参数中获取用户名
                String user = application.getInitParameter("user");
                // 从配置参数中获取密码
                String pass = application.getInitParameter("pass");
                // 注册驱动
                Class.forName(driver);
                // 获取数据库连接
                Connection conn = DriverManager.getConnection(url, user, pass);
                // 将数据库连接设置成application范围内的属性
                application.setAttribute("conn", conn);
            } catch (Exception ex) {
                System.out.println("Listener中获取数据库连接出现异常" + ex.getMessage());
            }
        }
    
        // 应该关闭时,该方法被调用。
        public void contextDestroyed(ServletContextEvent sce) {
            // 取得该应用的ServletContext实例
            ServletContext application = sce.getServletContext();
            Connection conn = (Connection) application.getAttribute("conn");
            // 关闭数据库连接
            if (conn != null) {
                try {
                    conn.close();
                } catch (SQLException ex) {
                    ex.printStackTrace();
                }
            }
        }
    }
    
    1. 在web.xml中配置Servlet、JSP和监听器。配置示例如下:
    <servlet>
        <servlet-name>LoginServlet</servlet-name>
        <servlet-class>com.example.LoginServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>LoginServlet</servlet-name>
        <url-pattern>/login</url-pattern>
    </servlet-mapping>
    
    <context-param>
        <param-name>driver</param-name>
        <param-value>com.mysql.jdbc.Driver</param-value>
    </context-param>
    <context-param>
        <param-name>url</param-name>
        <param-value>jdbc:mysql://localhost:3306/test</param-value>
    </context-param>
    <context-param>
        <param-name>user</param-name>
        <param-value>root</param-value>
    </context-param>
    <context-param>
        <param-name>pass</param-name>
        <param-value>root</param-value>
    </context-param>
    
    <listener>
        <listener-class>com.example.GetConnListener</listener-class>
    </listener>
    

    注意:这里只提供了一个简单的示例,实际开发中需要考虑更多的因素,例如数据校验、数据持久化、安全性等。