前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >web开发模式

web开发模式

原创
作者头像
mySoul
发布2019-03-18 00:40:29
6360
发布2019-03-18 00:40:29
举报
文章被收录于专栏:mySoul

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

用户密码

目录结构如下

![](https://melovemingming-1253878077.cos.ap-chengdu.myqcloud.com/blog-image/2019/03/2019-03-17%2002-08-04%E5%B1%8F%E5%B9%95%E6%88%AA%E5%9B%BE.png

)

jdbc层

代码语言:txt
复制
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层

定义接口
代码语言:txt
复制
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;
}
实现类
代码语言:txt
复制
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;
    }
}
代理类
代码语言:txt
复制
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;
    }
}
定义代理工厂
代码语言:txt
复制
package com.ming.factory;

import com.ming.dao.IUserDAO;
import com.ming.dao.UserDAOProxy;

public class DAOFactory {
    public static IUserDAO getIuserDAOInstance(){
        return new UserDAOProxy();
    }
}

实体关系映射

代码语言:txt
复制
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;
    }
}

视图层

代码语言:txt
复制
<%@ 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>

配置文件

代码语言:txt
复制
<!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层.

qrcode_for_gh_9901b36b3b0e_258.jpg
qrcode_for_gh_9901b36b3b0e_258.jpg

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Model1
    • 处理流程
      • 问题
      • model - view - controller
        • 代码如下
          • 创建数据库
          • jdbc层
          • dao层
          • 实体关系映射
          • 视图层
          • 配置文件
      • mvc运行流程
      相关产品与服务
      数据库
      云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档