zoukankan      html  css  js  c++  java
  • web开发模式

    Model1

    显示层,控制层,数据层,统一交给jsp或者javabean处理.

    处理流程

    客户端发送request 到 jsp jsp 执行javabean javabean读取databases

    返回 databases 返回给javabean 在返回给jsp 在response 给客户端

    问题

    代码杂乱
    即 jsp + dao 方式

    model - view - controller

    客户端发送request 到servlet 然后servlet 执行javabean javabean用于读取databases 控制器,获取到javabean读取的数据以后,再次返回给jsp,jso生成html文件,response 给客户端
    分为 显示层 控制层 模型层

    EJB 属于SUN提供的分布式组件服务 分为会话bean 实体bean 消息驱动bean

    实栗

    一个登录程序
    用户提交登录信息,发送给servlet servlet数据验证失败将会返回给登录页,同时servlet将会调用数据层操作dao,dao到数据库databases进行验证,结果返回给servlet 然后返回两个结果,登录成功,登录失败.

    代码如下

    创建数据库

    no 列名称 描述
    1 userid 保存用户的登录id
    2 name 用户真实姓名
    3 password 用户密码

    目录结构如下

    jdbc层

    package com.ming.dbc;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    
    public class DatabaseConnection {
        private static final String DBDRIVER = "com.mysql.cj.jdbc.Driver";
        private static final String DBURL = "jdbc:mysql://47.94.95.84:32786/test";
        private static final String DBUSER = "test";
        private static final String DBPASSWORD = "ABCcba20170607";
        private Connection connection = null;
        // 连接数据库
        public DatabaseConnection() throws Exception{
            try{
                Class.forName(DBDRIVER);
                connection = DriverManager.getConnection(DBURL, DBUSER, DBPASSWORD);
            }catch (Exception e){
                throw e;
            }
        }
        // 获得数据库连接
        public Connection getConnection(){
            return this.connection;
        }
        // 数据库关闭
        public void close() throws Exception{
            if(this.connection != null){
                try{
                    this.connection.close();
                }catch (Exception e){
                    throw  e;
                }
            }
        }
    }
    
    

    dao层

    定义接口

    package com.ming.dao;
    
    import com.ming.vo.User;
    
    public interface IUserDAO {
        /**
         * 用户登录验证
         * @param user 传入VO对象
         * @return 验证操作结果
         * @throws Exception 抛出错误
         */
        public boolean findLogin(User user) throws Exception;
    }
    
    

    实现类

    package com.ming.dao;
    
    import com.ming.vo.User;
    
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    
    public class UserDAOImpl implements IUserDAO {
        // 数据库连接对象
        private Connection connection = null;
        // 操作对象
        private PreparedStatement preparedStatement = null;
        // 数据库连接
        public UserDAOImpl(Connection _connection){
            this.connection = _connection;
        }
        /**
         * 用户登录验证
         *
         * @param user 传入VO对象
         * @return 验证操作结果
         * @throws Exception 抛出错误
         */
        @Override
        public boolean findLogin(User user) throws Exception {
            boolean flag = false;
            try{
                String sql = "SELECT name FROM user WHERE userid = ? AND password = ?";
                // 获得实例化对象
                this.preparedStatement = this.connection.prepareStatement(sql);
                // 设置id
                this.preparedStatement.setString(1, user.getUserid());
                this.preparedStatement.setString(2, user.getPassword());
                ResultSet resultset = this.preparedStatement.executeQuery();
                if(resultset.next()){
                    user.setName(resultset.getString(1));
                    flag = true;
                }
            }catch (Exception e){
                throw  e;
            }finally {
                if(this.preparedStatement != null){
                    try{
                        this.preparedStatement.close();
                    }catch (Exception e){
                        throw  e;
                    }
                }
            }
            return flag;
        }
    }
    
    

    代理类

    package com.ming.dao;
    
    import com.ming.dbc.DatabaseConnection;
    import com.ming.vo.User;
    
    public class UserDAOProxy implements IUserDAO {
        private DatabaseConnection databaseConnection = null;
        private IUserDAO dao = null;
        public UserDAOProxy(){
            try{
                this.databaseConnection = new DatabaseConnection();
            }catch (Exception e){
                e.printStackTrace();
            }
            this.dao = new UserDAOImpl(this.databaseConnection.getConnection());
        }
        /**
         * 用户登录验证
         *
         * @param user 传入VO对象
         * @return 验证操作结果
         * @throws Exception 抛出错误
         */
        @Override
        public boolean findLogin(User user) throws Exception {
            boolean flag = false;
            try{
                flag = this.dao.findLogin(user);
            }catch (Exception e){
                throw  e;
            }finally {
                this.databaseConnection.close();
            }
            return flag;
        }
    }
    
    

    定义代理工厂

    package com.ming.factory;
    
    import com.ming.dao.IUserDAO;
    import com.ming.dao.UserDAOProxy;
    
    public class DAOFactory {
        public static IUserDAO getIuserDAOInstance(){
            return new UserDAOProxy();
        }
    }
    
    

    实体关系映射

    package com.ming.vo;
    
    // 对user表进行映射
    public class User {
        private String userid;
        private String name;
        private String password;
    
        public String getUserid() {
            return userid;
        }
    
        public String getName() {
            return name;
        }
    
        public String getPassword() {
            return password;
        }
    
        public void setUserid(String userid) {
            this.userid = userid;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public void setPassword(String password) {
            this.password = password;
        }
    }
    
    

    视图层

    <%@ page import="java.util.List" %>
    <%@ page import="java.util.Iterator" %><%--
      Created by IntelliJ IDEA.
      User: ming
      Date: 19-3-16
      Time: 下午11:07
      To change this template use File | Settings | File Templates.
    --%>
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>Title</title>
    </head>
    <body>
    <h2>用户登录程序</h2>
    <%
        List<String> info = (List<String>)request.getAttribute("info");
        if(info != null){
            Iterator<String> iterator = info.iterator();
            while(iterator.hasNext()){
                %>
                    <h4><%=iterator.next()%></h4>
                <%
            }
        }
    %>
    <form action="loginServlet" method="post">
        用户id <input type="text" name="userid" id="uname"/>
        密码 <input type="password" name="userpass" id="password"/>
        <input type="submit" value="登录" id="submit"/>
        <input type="reset" value="重置"/>
    </form>
    <script>
        let submit = document.getElementById("submit");
        submit.onclick = (event) => {
            let uname = document.getElementById("uname").value;
            let password = document.getElementById("password").value;
            if(!(/^w{5,15}/.test(uname))){
                alert("用户id为5-15位");
                return false;
            }
    
            if(!(/^w{5,15}/.test(password))){
                alert("密码必须为5-15位");
                return false;
            }
            return true;
        }
    </script>
    </body>
    </html>
    
    

    配置文件

    <!DOCTYPE web-app PUBLIC
     "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
     "http://java.sun.com/dtd/web-app_2_3.dtd" >
    
    <web-app>
      <display-name>Archetype Created Web Application</display-name>
        <servlet>
            <servlet-name>login</servlet-name>
            <servlet-class>com.ming.servlrt.LoginServlet</servlet-class>
        </servlet>
        <servlet-mapping>
            <servlet-name>login</servlet-name>
            <url-pattern>/loginServlet</url-pattern>
        </servlet-mapping>
    </web-app>
    
    

    mvc运行流程

    表单提交到servlet,servlet调用dao进行表单验证,然后dao连接数据库进行验证,验证结果返回给业务层,即servlet,在业务层servlet中获取info等日志信息,然后服务器端跳转到运行结果页面即view层.

    在无知的道路上缓步前行
  • 相关阅读:
    LocalDate、LocalTime、LocalDateTime示例
    Instant时间戳示例
    Mybatis面试题
    SpringMVC面试题
    Spring面试题
    redis面试题
    计算机网络面试题
    java集合面试题
    java基础面试题
    MySQL面试题汇总
  • 原文地址:https://www.cnblogs.com/melovemingming/p/10549887.html
Copyright © 2011-2022 走看看