Java web

JavaWeb MVC设计模式

2018-12-30  本文已影响0人  dawsonenjoy

开发模式

1.C/S

客户端/服务器,需要安装客户端软件,称为胖客户端

2.B/S

浏览器/服务器,只要有浏览器即可,称为瘦客户端

MVC设计模式

即Model+View+Controller,在JavaWeb中分别对应:JavaBean/JSP/Servlet
注:
JavaBean:一个带有无参构造方法、属性私有,并带有公共的getter和setter方法的类

常用目录分层

1.Bean:用于存放JavaBean对象
2.DAO:Data Access Object,定义数据访问接口
3.DAO.IMPL:DAO接口的实现类
4.Service:定义业务逻辑操作接口
5.Service.IMPL:Service接口的实现类
6.Servlet:用于处理网络业务
7.Util:用于存放数据库等配置,配置信息一般从.properties文件中读取

MVC示例

1.xxx.properties

主要存放一些数据库的配置信息

driverClass=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost/database
username=xxx
password=xxx
2.Util

主要读取资源文件和进行数据库参数配置,并向外提供连接和关闭数据库方法

public class DBUtil {
    private static String driver;
    private static String url;
    private static String username;
    private static String password;

    static {
        ResourceBundle rb = ResourceBundle.getBundle("xxx");  //读取资源文件,不用加后缀
        driver = rb.getString("driverClass");  //设置基本配置信息
        url = rb.getString("url");
        username = rb.getString("username");
        password = rb.getString("password");
        try {
            Class.forName(driver);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static Connection open() {  //提供连接数据库方法
        return DriverManager.getConnection(url, username, password);
    }

    public static void close(ResultSet rs, Statement stmt, Connection conn) {  //提供关闭连接方法
        if (rs != null) {
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            rs = null;
        }
        if (stmt != null) {
            try {
                stmt.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
            stmt = null;
        if (conn != null) {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
            conn = null;
    }
}

3.Bean

主要定义一些JavaBean对象

public class User {
    private int id;
    private String name;
    private String password;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
}
4.DAO

定义一些数据操作的接口

public interface UserDao {
    public void addUser(User user);  //添加用户接口
    public void selectUser(String name, String password);
}
5.DAO.IMPL

实现数据操作接口的类

public class UserDaoImpl implements UserDao {

    public void addUser(Stu stu) {
        Connection conn = null;
        PreparedStatement p = null;
        ResultSet rs = null;
        try {
            conn = DBUtil.open();
            p = conn.prepareStatement("xxx");
            rs = p.executeQuery();
            ...
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            DBUtil.close(rs, p, conn);
        }
    }

    public void selectUser(String name, String password) {
        sql操作...
    }
}
6.Service

定义具体的逻辑操作接口

public interface UserService {
    public void regist(String name, String password);  //注册功能接口
    public void login(String name, String password);
}
7.Service.IMPL

实现逻辑操作接口类

public class UserServiceImpl implements UserService{
    UserDao userDao = new UserDaoImpl();

    public void regist(String name, String password) {  //具体注册功能操作
        User user = new User();
        user.setName(name);
        user.setPassword(password);
        userDao.addUser(user);
        ...
    }

    public void login(String name, String password) {
        userDao.selectUser(name, password);
        ...
    }
}
8.Servlet

实现一些网络请求处理

public class UserServlet extends HttpServlet {  //处理注册请求Servlet

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        Stu stu = new Stu();
        String name = (String) request.getParameter("name");
        String password = (String) request.getParameter("password");
        UserServiceImpl usi = new UserServiceImpl();
        usi.regist(name, password);
        ...
    }
    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doGet(request, response);
    }
}
上一篇 下一篇

猜你喜欢

热点阅读