摘要:顯示層控制層數據層統一交給或者處理處理流程客戶端發送到執行讀取返回返回給在返回給在給客戶端問題代碼雜亂即方式客戶端發送到然后執行用于讀取控制器獲取到讀取的數據以后再次返回給生成文件給客戶端分為顯示層控制層模型層屬于提供的分布式組件服務分
Model1
顯示層,控制層,數據層,統一交給jsp或者javabean處理.
處理流程客戶端發送request 到 jsp jsp 執行javabean javabean讀取databases
返回 databases 返回給javabean 在返回給jsp 在response 給客戶端
問題代碼雜亂
即 jsp + dao 方式
客戶端發送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-125387...
)
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" %>配置文件Title 用戶登錄程序
<% Listinfo = (List )request.getAttribute("info"); if(info != null){ Iterator iterator = info.iterator(); while(iterator.hasNext()){ %> <%=iterator.next()%>
<% } } %>
mvc運行流程Archetype Created Web Application login com.ming.servlrt.LoginServlet login /loginServlet
表單提交到servlet,servlet調用dao進行表單驗證,然后dao連接數據庫進行驗證,驗證結果返回給業務層,即servlet,在業務層servlet中獲取info等日志信息,然后服務器端跳轉到運行結果頁面即view層.
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/73749.html
摘要:基于此,一種新一開發模式誕生了框架是市面上獨一無二的多主體共存的靈活混合型開發模型。在這個時候,框架將會為他們帶來便利。規范化框架符合標準,重新實現了等特性。開發者只需要把對應的類注冊到中即可,代碼量不超過行便可使用框架 kerkee showImg(https://segmentfault.com/img/remote/1460000006785286); kerkee框架的誕生...
摘要:基于此,一種新一開發模式誕生了框架是市面上獨一無二的多主體共存的靈活混合型開發模型。在這個時候,框架將會為他們帶來便利。規范化框架符合標準,重新實現了等特性。開發者只需要把對應的類注冊到中即可,代碼量不超過行便可使用框架 kerkee showImg(https://segmentfault.com/img/remote/1460000006785286); kerkee框架的誕生...
摘要:面向對象三大特征繼承性多態性封裝性接口。第五階段封裝一個屬于自己的框架框架封裝基礎事件流冒泡捕獲事件對象事件框架選擇框架。核心模塊和對象全局對象,,,事件驅動,事件發射器加密解密,路徑操作,序列化和反序列化文件流操作服務端與客戶端。 第一階段: HTML+CSS:HTML進階、CSS進階、div+css布局、HTML+css整站開發、 JavaScript基礎:Js基礎教程、js內置對...
摘要:面向對象三大特征繼承性多態性封裝性接口。第五階段封裝一個屬于自己的框架框架封裝基礎事件流冒泡捕獲事件對象事件框架選擇框架。核心模塊和對象全局對象,,,事件驅動,事件發射器加密解密,路徑操作,序列化和反序列化文件流操作服務端與客戶端。 第一階段: HTML+CSS:HTML進階、CSS進階、div+css布局、HTML+css整站開發、 JavaScript基礎:Js基礎教程、js內置對...
閱讀 2135·2021-10-14 09:43
閱讀 2197·2019-08-30 15:55
閱讀 726·2019-08-30 14:23
閱讀 2019·2019-08-30 13:21
閱讀 1235·2019-08-30 12:50
閱讀 2199·2019-08-29 18:46
閱讀 2280·2019-08-29 17:28
閱讀 2359·2019-08-29 17:21