【综合案例】javaweb实现简单登录注册页面(1)

登录页面业务逻辑分析

展示层(web层):

  • 浏览器输入账号密码提交登录信息给LoginSevlet
  • LoginSevlet获取用户名密码,封装成User类,传递给业务逻辑层的登录方法
  • 登入成功跳转到成功页面,登入出错请求转发到登录页面,提示错误信息

业务逻辑层(service层)

  • 调用dao层的数据查询功能

数据访问层(dao层)

  • 访问数据库匹配账号密码

业务实现

基于TDD测试驱动开发,保证业务逻辑完全正确,在基础上才有可能保证界面显示正常。
1. 编写测试逻辑

public class LoginServletTest {
    @Test
    public void test(){
        User user = new User();
        user.setUsername("zhang1san");
        user.setPassword("123");
        //创建一个登录的service,调用login实现登录
        LoginService loginService = new LoginService();
        boolean flag = loginService.login(user);
        if(flag){
            System.out.println("登入成功");
        }
        else{
            System.out.println("账号或密码错误");
        }
    }
}

2.然后通过逻辑在去实现类
编写LoginService 类

public class LoginService {
    public boolean login(User user) {
        //新建dao对象,查询数据库
        Dao dao = new Dao();
        //返回查询结果
        boolean count = dao.find(user);
        return count;
    }
}

编写Dao 类

public class Dao {
    public boolean find(User user) {
    //数据库查询语句,这里没有引入数据库,自己写的一个类当做数据库
        DB db = new DB();
        boolean res = db.select(user);
        return res;
    }
}
//模拟数据库
public class DB {
    static ArrayList<User> userList= new ArrayList<User>();
    static {
        User user1 = new User("zhangsan","123");
        userList.add(user1);
    }


    public boolean select(User user) {
        for(User u :userList){
                if((u.getUsername().equals(user.getUsername()))&&(u.getPassword().equals(user.getPassword())))
                    return true;
        }
        return false;
    }
    public boolean insert(User user) {
        for(User u :userList){
            if(u.getUsername().equals(user.getUsername()))
                return false;
        }
        userList.add(user);
        return true;
    }
}

测试类成功通过后编写LoginServelt()

@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    doGet(request,response);
    }
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        LoginService loginService = new LoginService();
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        User user = new User(username,password);
        boolean flag = loginService.login(user);
        if(flag){
            System.out.println(username+"登入成功");
            request.getRequestDispatcher("/SuccessLoginServlet").forward(request,response);
        }
        else{
            System.out.println("账号或密码错误");
            //密码错误就将提示信息转发到index.jsp
            request.setAttribute("error_msg","账号或密码错误");
            request.getRequestDispatcher("/index.jsp").forward(request,response);
        }
    }
}

登录界面index.jsp文件

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
  <form action="/LoginServlet" method="post">
    账号:<input type="text" name="username"><br>
    密码:<input type="password" name="password"><input type="checkbox" name="record">记住密码<br>
   <font color="red"> ${error_msg}</font>
    <a href="/register.jsp">注册账号</a>
  </form>

  </body>
</html>

效果:

  • 6
    点赞
  • 82
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值