美文网首页Java web
JavaWeb MVC设计模式

JavaWeb MVC设计模式

作者: dawsonenjoy | 来源:发表于2018-12-30 11:55 被阅读0次

    开发模式

    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);
        }
    }
    

    相关文章

      网友评论

        本文标题:JavaWeb MVC设计模式

        本文链接:https://www.haomeiwen.com/subject/nglulqtx.html