JavaEE 经典三层架构模拟方案

JavaWeb中常说的三层结构指的是web层、server层和DAO层。

web层的主要作用:面向用户,将从浏览器获取数据传递给server层或者从server层接收数据传递给浏览器。

server层的主要作用:是进行业务逻辑判断。

DAO层的主要作用:接收server层的数据,对数据库做增删改查等操作,并将结果返还给server层。

这里写图片描述


------登陆案例------

案例分析
在这里插入图片描述
准备数据

  1. jar包准备
    在这里插入图片描述
    点击下载jar包

  2. 网页准备

登陆页面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>登录页面</title>

    <link href="css/bootstrap.min.css" rel="stylesheet">
    <link href="css/login.css" rel="stylesheet">
    <script src="js/jquery.js"></script>
    <script src="js/bootstrap.js"></script>
</head>
<body>

    <div class="container text-center">
        <form class="form-signin" action="http://localhost:8080/loginServlet">
            <h2 class="form-signin-heading">登录页面</h2>
            <input type="text"  name="username" class="form-control" placeholder="用户名" required autofocus>
            <input type="password"  name="password" class="form-control" placeholder="密码" required>
            <button class="btn btn-lg btn-primary btn-block" type="submit">登录</button>
        </form>
    </div>

</body>
</html>

登陆成功

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>欢迎登陆!</h1>
</body>
</html>

登录失败

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h1>用户名或密码错误,请重新登录!</h1>
</body>
</html>

3.工具类准备

public class JdbcTemplateUtil {

    private static ComboPooledDataSource dataSource = null;
    private static JdbcTemplate jdbcTemplate = null;


    static  {
        dataSource = new ComboPooledDataSource();
    }


    /**
     * 获取jdbcTemplate
     * @return
     */
    public static JdbcTemplate getJdbcTemplate(){
        jdbcTemplate = new JdbcTemplate(dataSource);
        return  jdbcTemplate;
    }
}
  1. xml配置文件
<c3p0-config>
    <default-config>
        <property name="driverClass">com.mysql.jdbc.Driver</property>
        <property name="jdbcUrl">jdbc:mysql://localhost:3306/login</property>
        <property name="user">root</property>
        <property name="password">123456</property>
    </default-config>
</c3p0-config>

5.数据库准备
数据库名:login
表名:user
在这里插入图片描述
代码实现

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

web层

package cn.cosco.web;

import cn.cosco.service.UserService;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * @Author: ZhangYing
 * @Date: 2018/10/9 9:05
 */
@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 {
        //修正乱码问题
        request.setCharacterEncoding("utf-8");
        //获取页面数据
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        //对数据进行业务逻辑判断
        UserService userService = new UserService();
        Boolean result = userService.login(username,password);
        //对结果判断
        if(result){
            //登陆成功
            request.getRequestDispatcher("/success.html").forward(request,response);
        }else{
            //登陆失败
            request.getRequestDispatcher("/error.html").forward(request,response);
        }
    }
}

service层

package cn.cosco.service;

import cn.cosco.dao.UserDao;
import cn.cosco.domain.User;
import java.util.List;

/**
 * @Author: ZhangYing
 * @Date: 2018/10/9 9:17
 */
public class UserService {
    public Boolean login(String username, String password) {
        UserDao userDao = new UserDao();
        List<User> userList = userDao.login(username,password);
        if(userList == null || userList.size() == 0){
            return false;
        }else{
            return true;
        }
    }
}

Dao层

package cn.cosco.dao;

import cn.cosco.domain.User;
import cn.cosco.utils.JdbcTemplateUtil;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;

import java.util.List;

/**
 * @Author: ZhangYing
 * @Date: 2018/10/9 9:20
 */
public class UserDao {
    public List<User> login(String username, String password) {
        JdbcTemplate jdbcTemplate = JdbcTemplateUtil.getJdbcTemplate();
        String sql = "SELECT * FROM user WHERE username = ? and password = ?";
        return jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(User.class), username, password);
    }
}

domain层

package cn.cosco.domain;

/**
 * @Author: ZhangYing
 * @Date: 2018/10/9 8:59
 */
public class User {
    private int id;
    private String username;
    private String assword;

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", assword='" + assword + '\'' +
                '}';
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getAssword() {
        return assword;
    }

    public void setAssword(String assword) {
        this.assword = assword;
    }
}

猜你喜欢

转载自blog.csdn.net/zyrdfly/article/details/82731682