WEB核心【案例:用户登录(进阶-)】第五章

简介: 目录1,需求2,分析2.1:关键点2.2:步骤3,代码实现3.1:User3.2:login.html3.3:LoginServlet3.4:LoginService3.5:LoginDao1,需求若用户名和密码正确,判定为登录成功,则控制台输出登录成功;若用户名或密码错误,判定为登录失败,则控制台输出登录失败;2,分析2.1:关键点method="post"

 1,需求

       image.gif编辑

若用户名和密码正确,判定为登录成功,则控制台输出登录成功;

若用户名或密码错误,判定为登录失败,则控制台输出登录失败;

2,分析

2.1:关键点

    1. method="post" action="/项目名/资源名"
    2. <input type="hidden" name="method" value="方法名"/>
    3. 接收数据:JavaBean javaBean = toBean(JavaBean.class);
    4. 分包思想:Servlet:接收数据,展示结果;Service:判断用户登录是否成功;Dao:负责读取xml所有数据

    2.2:步骤

      • 依次创建JavaBean、dao、service、servlet
      • 先编写login.html,可以正常提交表单到Servlet
      • 编写LoginServlet,可以接收数据,可以把数据传递给service,打印service返回结果
      • 编写LoginService,获取用户列表,判断用户是否登录成功
      • 编写LoginDao,读取xml用户列表
      • image.gif编辑

      3,代码实现

      3.1:User

      public class User implements Serializable {
          private String id;
          private String username;
          private String password;
      @Override
       public String toString() {
              return "User{" +
                      "id='" + id + '\'' +
                      ", username='" + username + '\'' +
                      ", password='" + password + '\'' +
                      '}';
          }
          public User(String id, String username, String password) {
              this.id = id;
              this.username = username;
              this.password = password;
          }
          public User() {
          }
          public String getId() {
              return id;
          }
          public void setId(String id) {
              this.id = id;
          }
          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;
          }
      }

      image.gif

      image.gif编辑  

      3.2:login.html

      <form class="form-horizontal" method="post" action="/day03/login">
         <input type="hidden" name="method" value="login"/>

      image.gif

      3.3:LoginServlet

      public class LoginServlet extends BaseServlet {
          public String login(){
              //1、获取表单参数列表
              User user = toBean(User.class);
              //System.out.println(user);
              //2、调用service,校验登录是否成功
              LoginService loginService = new LoginService();
              boolean result = loginService.checkUsernameAndPassword(user);
              //3、根据service返回结果,展示结果
              if(result){
                  System.out.println("登录成功");
              }else{
                  System.out.println("登录失败");
              }
              return null;
          }
      }

      image.gif

      3.4:LoginService

      public boolean checkUsernameAndPassword(User user) {
          //1、通过Dao获取用户列表
          LoginDao loginDao = new LoginDao();
          List<User> ulist =  loginDao.searchUlist();
          //2、开关思想,判断用户是否登录成功。 true登录成功,false登录失败
          boolean f = false;
          //3、遍历用户列表,每遍历一个用户,判断 正确用户名和输入用户名是否一致,并且正确的密码和输入的密码是否一致
          for (User u : ulist) {
              if(u.getUsername().equals(user.getUsername())
                  && u.getPassword().equals(user.getPassword())){
                  //4、如果都一致,true,登录成功。 无需继续遍历
                  f = true;
                  break;
              }
          }
          //5、遍历结束,对开关进行返回。 true登录成功,false登录失败。
          return f;
      }

      image.gif

      3.5:LoginDao

      public class LoginDao {
          public List<User> searchUlist() {
              return XmlUtils.readAll("D:/data01.xml",User.class);
          }
      }

      image.gif


      相关文章
      |
      2月前
      ssm使用全注解实现增删改查案例——web.xml
      ssm使用全注解实现增删改查案例——web.xml
      10 0
      |
      5天前
      |
      前端开发 JavaScript Python
      使用Python读取本地行情csv文件,做出web网页画出K线图实现案例
      【5月更文挑战第4天】使用Python绘制K线图的步骤:1) 安装pandas, matplotlib和Flask;2) 用pandas读取CSV文件并处理数据;3) 创建Flask应用,渲染包含K线图数据的HTML;4) 编写HTML,使用ECharts库绘制K线图。
      23 0
      |
      8天前
      |
      存储 前端开发 搜索推荐
      13:Session机制实现用户登录与注销功能-Java Web
      13:Session机制实现用户登录与注销功能-Java Web
      24 3
      |
      8天前
      |
      安全 前端开发 Java
      10:基于Servlet模拟用户登录功能的实现与解析-Java Web
      10:基于Servlet模拟用户登录功能的实现与解析-Java Web
      22 3
      |
      16天前
      android-agent-web中js-bridge案例
      android-agent-web中js-bridge案例
      20 2
      |
      2月前
      |
      SQL 机器学习/深度学习 缓存
      Go语言Web应用实战与案例分析
      【2月更文挑战第21天】本文将通过实战案例的方式,深入探讨Go语言在Web应用开发中的应用。我们将分析一个实际项目的开发过程,展示Go语言在构建高性能、可扩展Web应用方面的优势,并分享在开发过程中遇到的问题和解决方案,为读者提供宝贵的实战经验。
      |
      2月前
      |
      前端开发 JavaScript Apache
      web前端-Echarts-5.3安装配置和案例
      web前端-Echarts-5.3安装配置和案例
      |
      3月前
      |
      前端开发 JavaScript Java
      利用Java Web技术实现实时通信系统的案例分析
      利用Java Web技术实现实时通信系统的案例分析
      |
      8月前
      |
      自然语言处理 安全
      Web3.0钱包系统开发(开发功能)/指南教程/步骤流程/方案设计/项目逻辑/规则玩法/案例源码
      Wallet type selection: Determine the type of wallet, which can be a browser plugin wallet, mobile application wallet, or online web wallet. The choice of wallet type should be based on the target user group and usage environment.
      |
      4月前
      Flutter笔记:使用Flutter构建响应式PC客户端/Web页面-案例
      Flutter笔记:使用Flutter构建响应式PC客户端/Web页面-案例
      60 0