Day02JavaWeb【Servlet & ServletContext】新的开发方式-综合案例

综合案例-登录分析

在这里插入图片描述
过程分析完之后,从哪里开始编写比较好,我个人的方法是从业务逻辑开发,只要业务逻辑正确,并通过测试,后面只需要添加web层部分

综合案例-准备工作

(1)创建模块
(2)分包
(3)编写业务逻辑
(4)实现Service
(5)实现Dao
(6)实现DB User
(7)实现Servlet
(8)实现login.html
在这里插入图片描述

综合案例-代码实现

(1) UserServiceTest

先业务逻辑

test\java\com\wzx\service\UserServiceTest.java

public class UserServiceTest {
    //1:添加Junit测试
    @Test
    public void test01Login(){
        //2:业务逻辑
        UserService userService = new UserService();
        //3:登录业务
        String username="jack";
        String password="1235";
        //3.1登录就是拿着账号,密码去数据库判断,存在就返回true,否则就返回false
        boolean result =  userService.login(username,password);
        //3.2根返回结果提示用户
        if(result){
            System.out.println("登录成功");
        }else{
            System.out.println("账号或者密码出错");
        }
    }
}

(2) UserService

逻辑清晰了,再编写各种未实现的类与方法

src\com\wzx\service\UserService.java

//用户业务类
public class UserService {

    //登录方法
    public boolean login(String username, String password) {
        //1:当前是业务类方法,按三层架构,要去调Dao

        //1.1创建UserDao对象
        UserDao userDao = new UserDao();

        //1.2创建User对象
        User user = new User(username,password);

        boolean flag =  userDao.find(user);

        //1.3返回
        return  flag;
    }
}

(3) User

src\com\wzx\bean\User.java

//用户实体类
public class User {
    public User() {
    }

    public User(String username, String password) {
        this.username = username;
        this.password = password;
    }

    private Long id;
    private String username;
    private String password;
    //get/set

(4) UserDao

src\com\wzx\dao\UserDao.java

//当前是数据访问层
public class UserDao {
    //查找方法
    public boolean find(User user) {
        //按照三层架构,应该查找数据库
        return DB.query(user);
    }
}

src\com\wzx\db\DB.java

//当前这个DB类用集合来模拟数据库
public class DB {
    private static List<User> list = new ArrayList<>();

    static {
        //静态代码块,当前的类被加载时,执行static代码,只执行一次
        User user = new User("jack", "1234");
        list.add(user);

        User user1 = new User("rose", "1234");
        list.add(user1);

        User user2 = new User("tony", "1234");
        list.add(user2);
    }

    public static boolean query(User user) {
        User result = null;
        for (User u : list) {
            //遍历每个用户,判断哪个用户的账号密码符合条件
            if (u.getUsername().equals(user.getUsername()) && u.getPassword().equals(user.getPassword())) {
                result = u;
            }
        }
        //遍历完数据库
        if(result==null){
            return false;
        }else{
            return true;
        }
    }
}

(5) 运行@Test方法

结果正常表示 除web层,其他层都开发完成,并且没有bug存在,接下来再准备一个web层的页面与Servlet
在这里插入图片描述

(6) index.html

web\index.html

扫描二维码关注公众号,回复: 11636388 查看本文章
<body>
        <form method="post" action="/web02_login_war_exploded/login">
            账号:<input type="text" name="username"> <br/>
            密码:<input type="password" name="password"> <br/>
            <input type="submit" value="登录"> <br/>
        </form>
</body>

(7) LoginServlet

src\com\wzx\web\LoginServlet.java

@WebServlet("/login")
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 {
        //1:获取参数

        String username=request.getParameter("username");
        String password=request.getParameter("password");
        //2:处理参数
        UserService userService = new UserService();

        //2.1登录就是拿着账号,密码去数据库判断,存在就返回true,否则就返回false
        boolean result =  userService.login(username,password);
        response.setCharacterEncoding("utf-8");
        //2.2根返回结果提示用户
        if(result){
            
            //3:响应给浏览器
            response.getWriter().println("登录成功");


        }else{
            response.getWriter().println("账号或者密码出错");

        }



    }
}

(8)查看访问效果

在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/u013621398/article/details/108472810