久久亚洲精品成人_国产精品欧美综合亚洲_亚洲va天堂va欧美ⅴa在线_91色视频在线观看_久久影院亚洲_一级黄色片播放_日韩av在线一区_精品一区二区在线看_老头吃奶性行交视频_日韩免费高清视频_天天操天天爽天天干_日本欧美在线视频

首頁 > 學院 > 開發設計 > 正文

程序開發:MVC設計模式與應用

2019-11-14 22:41:33
字體:
來源:轉載
供稿:網友
程序開發:MVC設計模式與應用

MVC全名是Model View Controller,是模型(model)-視圖(view)-控制器(controller)的縮寫,一種軟件設計典范,用一種業務邏輯、數據、界面顯示分離的方法組織代碼,將業務邏輯聚集到一個部件里面,在改進和個性化定制界面及用戶交互的同時,不需要重新編寫業務邏輯。MVC被獨特的發展起來用于映射傳統的輸入、處理和輸出功能在一個邏輯的圖形化用戶界面的結構中。

下面講解簡單的登錄操作:

程序流程圖:

在本程序中用戶輸入的登陸信息提交給Servlet進行接收,Servlet接收到請求內容后首先對其合法性進行檢驗(例如:輸入的內容是否為空或者長度是否滿足要求等),如果驗證失敗,則將錯誤信息傳遞給登陸頁顯示,如果數據合法,則調用DAO層完成數據庫的驗證,根據驗證的結構跳轉到“登陸成功”或登陸失敗的頁面,在本程序中,為了操作便捷,將登陸成功或失敗的顯示頁都統一設置成登陸頁。MVC登陸程序清單:

No.

頁面名稱

文件類型

描述

1

User

javaBean

用戶登陸的VO操作類

2

DatabaseConnection

JavaBean

負責數據庫的連接和關閉操作

3

IUserDAO

JavaBean

定義登陸操作的DAO接口

4

UserDAOImpl

JavaBean

DAO接口的真實實現類,完成具體的登陸驗證

5

UserDAOPRoxy

JavaBean

定義代理操作,負責數據庫的打開和關閉并且調用真實主題

6

DAOFactory

JavaBean

工廠類,取得DAO接口的實例

7

LoginServlet

Servlet

接收請求參數,進行參數驗證,調用DAO完成具體的登陸驗證,并根據DAO的驗證結果返回登陸信息

8

login.jsp

JSP

提供用戶輸入的表單、可以顯示用戶登陸成功或失敗的信息

用戶登陸表結構:

JSP的功能

通過本道MVC程序,讀者可以清楚的感覺到,與最初的JSP開發(例如:JSP + JDBC或者是JSP + DAO)相比,現在的JSP頁面中的代碼已經減少了很多,只是簡單的完成了輸出,實際上在開發中,讀者一定要記住JSP中最好只包含以下三種類型的代碼:接收屬性:接收從Servlet傳遞過來的屬性;判斷語句:判斷傳遞到JSP中的屬性是否存在;輸出內容:使用迭代或者是VO進行輸出。一定要記住一點,在JSP頁面中唯一允許導入的包只能是java.util包,只要能把握住這一點,就可以開發出一個簡潔、清晰的JSP頁面。理解了以上信息下面開始操作源代碼
 User.java文件
package com.mvc.oumyye.vo ;/** *  * @author 偶my耶 *    實體類 */public class User {    private String userid ;    private String name ;    private String 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 ;    }    public String getUserid(){        return this.userid ;    }    public String getName(){        return this.name ;    }    public String getPassword(){        return this.password ;    }}
DatabaseConnection.java
package com.mvc.oumyye.dbc ;import java.sql.* ;/** *  * @author 偶my耶 *    數據庫連接 */public class DatabaseConnection {    private static final String DBDRIVER = "org.gjt.mm.MySQL.Driver" ;     private static final String DBURL = "jdbc:mysql://localhost:3306/mytest" ;    private static final String DBUSER = "root" ;    private static final String DBPASSWORD = "root" ;    private Connection conn = null ;    public DatabaseConnection() throws Exception{        try{            Class.forName(DBDRIVER) ;            this.conn = DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD) ;        }catch(Exception e){            throw e ;        }    }    public Connection getConnection(){        return this.conn ;    }    public void close() throws Exception{        if(this.conn != null){            try{                this.conn.close() ;            }catch(Exception e){                throw e ;            }        }    }}

package com.mvc.oumyye.dao ;import com.mvc.oumyye.vo.User;public interface IUserDAO {        public boolean findLogin(User user) throws Exception ;} 
package com.mvc.oumyye.dao.impl ;import com.mvc.oumyye.dao.*;import com.mvc.oumyye.vo.User;import java.sql.* ;/** *  * @author 偶my耶 *    Dao實現類 */public class UserDAOImpl implements IUserDAO {    private Connection conn = null ;    private PreparedStatement pstmt = null ;    public UserDAOImpl(Connection conn){        this.conn = conn ;    }    public boolean findLogin(User user) throws Exception{        boolean flag = false ;        String sql = "SELECT name FROM user WHERE userid=? AND password=?" ;        this.pstmt = this.conn.prepareStatement(sql) ;        this.pstmt.setString(1,user.getUserid()) ;        this.pstmt.setString(2,user.getPassword()) ;        ResultSet rs = this.pstmt.executeQuery() ;        if(rs.next()){            user.setName(rs.getString(1)) ;                flag = true ;        }        this.pstmt.close() ;        return flag ;    }} 
DAOFactory.java
package com.mvc.oumyye.factory ;import com.mvc.oumyye.dao.*;import com.mvc.oumyye.dao.proxy.*;/** *  * @author 偶my耶 *    工廠接口 */public class DAOFactory {    public static IUserDAO getIUserDAOInstance(){        return new UserDAOProxy() ;    }}

UserDAOProxy.java
package com.mvc.oumyye.dao.proxy ;import com.mvc.oumyye.dbc.DatabaseConnection;import com.mvc.oumyye.dao.IUserDAO;import com.mvc.oumyye.dao.impl.UserDAOImpl;import com.mvc.oumyye.vo.User;/** *  * @author 偶my耶 *    工廠類 實現業務操作 */public class UserDAOProxy implements IUserDAO {    private DatabaseConnection dbc = null ;    private IUserDAO dao = null ;    public UserDAOProxy(){        try{            this.dbc = new DatabaseConnection() ;        }catch(Exception e){            e.printStackTrace() ;        }        this.dao = new UserDAOImpl(dbc.getConnection()) ;    }    public boolean findLogin(User user) throws Exception{        boolean flag = false ;        try{            flag = this.dao.findLogin(user) ;            }catch(Exception e){            throw e ;        }finally{            this.dbc.close() ;        }        return flag ;    }} 
LoginServlet.java
package com.mvc.oumyye.servlet ;import java.io.* ;import java.util.* ;import javax.servlet.* ;import javax.servlet.http.* ;import com.mvc.oumyye.factory.DAOFactory;import com.mvc.oumyye.vo.User;/** *  * @author 偶my耶 *    Servlet */public class LoginServlet extends HttpServlet {        private static final long serialVersionUID = 1L;    public void doGet(HttpServletRequest req,HttpServletResponse resp) throws ServletException,IOException{        String path = "login.jsp" ;        String userid = req.getParameter("userid") ;        String userpass = req.getParameter("userpass") ;        System.out.println(userid);        System.out.println(userpass);        List<String> info = new ArrayList<String>() ;            if(userid==null || "".equals(userid)){            info.add("用戶名不能為空!!!") ;        }        if(userpass==null || "".equals(userpass)){            info.add("密碼不能為空!!") ;        }        if(info.size()==0){                User user = new User() ;            user.setUserid(userid) ;            user.setPassword(userpass) ;            try{                if(DAOFactory.getIUserDAOInstance().findLogin(user)){                    info.add("歡迎" + user.getName() + "登陸") ;                } else {                    info.add("請重新登錄") ;                }            }catch(Exception e){                e.printStackTrace() ;            }        }        req.setAttribute("info",info) ;        req.getRequestDispatcher(path).forward(req,resp) ;    }    public void doPost(HttpServletRequest req,HttpServletResponse resp) throws ServletException,IOException{        this.doGet(req,resp) ;    }}

web.xml文件

<?xml version="1.0" encoding="ISO-8859-1"?><web-app xmlns="http://java.sun.com/xml/ns/javaee"   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"   version="2.5">  <display-name>Welcome to Tomcat</display-name>  <description>     Welcome to Tomcat  </description>    <servlet>        <servlet-name>login</servlet-name>        <servlet-class>            com.mvc.oumyye.servlet.LoginServlet        </servlet-class>    </servlet>    <servlet-mapping>        <servlet-name>login</servlet-name>        <url-pattern>/LoginServlet</url-pattern>    </servlet-mapping></web-app>

login.jsp文件

<%@ page contentType="text/html" pageEncoding="GBK"%><%@ page import="java.util.*"%><html><head><title></title></head><body><script language="Javascript">    function validate(f){        if(!(/^/w{5,15}$/.test(f.userid.value))){            alert("用戶ID必須是5~15位!") ;            f.userid.focus() ;            return false ;        }        if(!(/^/w{5,15}$/.test(f.userpass.value))){            alert("密碼必須是5~15位!") ;            f.userpass.focus() ;            return false ;        }    }</script><%    request.setCharacterEncoding("GBK") ;%><%    List<String> info = (List<String>) request.getAttribute("info") ;    if(info != null){    // 有信息返回        Iterator<String> iter = info.iterator() ;        while(iter.hasNext()){%>            <h4><%=iter.next()%></h4><%        }    }%><form action="LoginServlet" method="post" onSubmit="return validate(this)">    用戶ID:<input type="text" name="userid"><br>    密&nbsp;&nbsp;碼:<input type="password" name="userpass"><br>    <input type="submit" value="登陸">    <input type="reset" value="重置"></form></body></html>

數據庫文件.sql

/*======================= 創建user數據表 =======================*/CREATE TABLE user(    userid            VARCHAR(30)        PRIMARY KEY ,    name            VARCHAR(30)        NOT NULL ,    password        VARCHAR(32)        NOT NULL) ;/*======================= 插入測試數據 =======================*/INSERT INTO user (userid,name,password) VALUES ('admin','administrator','admin') ;

效果圖:

MVC設計模式的好處:

JSP只負責顯示DAO負責數據層操作Servlet連接JSP和DAO,并根據JavaBean的操作結果進行跳轉
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
看欧美ab黄色大片视频免费 | 尤物九九久久国产精品的特点 | 欧美一激情一区二区三区| 国产视频一区二区在线| 国产 欧美 自拍| 中文字幕自拍偷拍| 久久久久久久伊人| 精品少妇一区二区三区密爱| avtt香蕉久久| 日本精品一二三区| 国产精品久久久久久久99| 成人在线免费观看av| 欧美一级免费在线观看| 欧美福利精品| 国产精品久久久久久免费观看 | 精品一区二区三区免费播放| 国产高清在线观看视频| 在线免费观看高清视频| 黑人精品无码一区二区三区AV| 青娱乐国产视频| xxxx黄色片| 好男人香蕉影院| 又黄又爽又色的视频| 黄色片视频在线| 亚洲xxxx2d动漫1| 激情婷婷综合网| 成人精品视频一区二区| 欧美女人性生活视频| 国产专区在线视频| 国内少妇毛片视频| 8x8ⅹ国产精品一区二区二区| 亚洲视频导航| 处破女av一区二区| 国产精品白丝av| 琪琪一区二区三区| 久久精品123| 理论片中文字幕| 日本人妻丰满熟妇久久久久久| 国产精品高潮呻吟久久久| 在线视频免费观看一区| 国产模特av私拍大尺度| 99热这里只有精品在线观看| www.成人在线观看| 久久久久久亚洲精品杨幂换脸| 免费在线观看视频一区| 国产91丝袜在线播放| 99视频热这里只有精品免费| 国产日韩在线不卡| 亚洲麻豆国产自偷在线| 亚洲一区二区在线视频| 色综合天天综合狠狠| 欧美乱熟臀69xxxxxx| 亚洲国产精彩中文乱码av在线播放| 亚洲精品福利免费在线观看| 日韩中文在线中文网三级| 久久久久久久激情视频| 国产精品福利观看| 精品无码久久久久国产| 欧美一级黄色录像片| 春日野结衣av| 久久久精品高清| www在线观看免费视频| 草视频在线观看| 亚洲天堂视频在线| 久久国产日本精品| 成人av网址在线观看| 国产精品不卡一区二区三区| 一本大道综合伊人精品热热| 亚洲黄在线观看| 97久久久久久| 九色91视频| 国产91xxx| 久久国产精品无码一级毛片 | 浮妇高潮喷白浆视频| 1314成人网| 不卡的免费av| 久久精品人人做人人爽电影蜜月| 波多野结衣在线aⅴ中文字幕不卡| 国产精品另类一区| 欧美年轻男男videosbes| yw.139尤物在线精品视频| 成人激情在线播放| 黄色激情在线视频| 波多野结衣片子| 911美女片黄在线观看游戏| 国产一区二区不卡| 性欧美疯狂xxxxbbbb| 亚洲欧美制服另类日韩| 91精品国产自产在线观看永久| 9999在线观看| 在线免费观看成年人视频| 中文字幕在线观看欧美| 成人av影院在线| 欧美精品日韩一本| 午夜精品99久久免费| 亚洲成色www久久网站| 下面一进一出好爽视频| 91丝袜一区二区三区| 成人免费观看av| 欧美日韩精品欧美日韩精品| 欧美激情乱人伦一区| 一区二区三区的久久的视频| 欧美在线一级片| 国产黄色一级大片| 国产精品久久久久婷婷二区次| 欧美一二三四在线| 国产精品av在线| 亚洲色成人一区二区三区小说| 国产成人无码aa精品一区| 久久成人综合网| 欧洲在线/亚洲| 国产精品99免视看9| 国产l精品国产亚洲区久久| 波多野结衣不卡视频| 国产精品亚洲第一| 亚洲精品一区二区三区在线观看 | 日韩欧美国产另类| 国产亚洲精品免费| 亚洲日韩欧美视频| 亚洲欧洲精品在线| 亚洲精品天堂网| 韩国视频一区二区| 精品久久免费看| 成人在线观看91| 丰满大乳奶做爰ⅹxx视频| 人妻与黑人一区二区三区| 亚洲mv在线观看| 97精品一区二区三区| 成年人视频在线免费| 精品国产www| 亚洲午夜在线观看视频在线| 欧美中文字幕在线观看| 午夜免费高清视频| 国产三级小视频| 日韩欧美中文在线| 91麻豆国产语对白在线观看| 国产清纯白嫩初高中在线观看性色| 不卡视频在线播放| 欧美日韩在线播放三区| 国产区欧美区日韩区| 国产精品理论在线| 成人性色生活片| 日韩在线免费观看视频| 美女黄色免费看| 中文字幕日韩第一页| 天天爽夜夜爽夜夜爽精品视频| 国产91久久婷婷一区二区| 性猛交╳xxx乱大交| 紧缚捆绑精品一区二区| 国产亚洲a∨片在线观看| 久草视频这里只有精品| 国产欧美一级片| 欧美日韩成人高清| 色一情一乱一伦一区二区三区| 日本一级一片免费视频| 午夜视黄欧洲亚洲| 91传媒视频免费| 成人免费毛片东京热| 亚洲免费在线电影| 91久久精品国产91久久| 成人免费视频入口| 国产精品免费免费| 国产精品一区二区3区| 337人体粉嫩噜噜噜| 国产精品美女久久久久aⅴ国产馆| 热久久免费视频精品| 在线不卡av电影| 国产亚洲欧美激情| 国产精品xxx视频| 欧美18—19性高清hd4k| 国产视频在线观看一区二区三区| 日本欧美国产在线| 人妻视频一区二区| 一区二区三区四区不卡在线 | 久久精品99久久香蕉国产色戒| 久久久久免费精品| 国产精品一区二区在线观看网站| 久久久久久久久久婷婷| xxxxx在线观看| 综合色天天鬼久久鬼色| 久草精品电影| www.黄色av| 亚洲一区二区久久久| 又大又长粗又爽又黄少妇视频| k8久久久一区二区三区| 国产精品爽爽爽| 亚洲黄色小说图片| 亚洲国语精品自产拍在线观看| 日韩中文字幕二区| 高清成人免费视频| 成人欧美一区二区三区黑人孕妇| 欧美成人国产精品高潮| 欧美性视频一区二区三区| 996这里只有精品| 九九精品视频在线看| 国产999精品| 日韩黄色在线视频| 精品国产露脸精彩对白| 日本精品一区在线| 亚洲图片你懂的| 五月天国产一区| 日本免费新一区视频| 青青在线视频一区二区三区| 国产系列精品av| 精品久久99ma| 91亚洲一线产区二线产区| 亚洲黄色片在线观看| 高清无码一区二区在线观看吞精| 激情文学综合丁香| 91沈先生作品| 国产精品九九九九| 欧美伦理91i| www.av视频在线观看| 欧美精品一区二区三区蜜臀| www日本在线观看| 色综合欧美在线| 在线观看免费黄网站| 亚洲视频一区二区在线| 国产四区在线观看| 成人一级黄色片| 久久av免费观看| 麻豆成人av在线| 91文字幕巨乱亚洲香蕉| 亚洲美女综合网| 国产精品高潮在线| 99久久精品国产成人一区二区| 欧美日韩成人在线视频| 黄色在线免费观看| 大胆人体色综合| 探花视频在线观看| 蜜臀久久99精品久久久久久宅男 | 国产理论在线播放| 一区二区久久久| 99精品视频在线看| 一区二区日韩电影| 91欧美视频在线| 欧美性xxxxx极品娇小| 四季av一区二区三区| 欧美三级免费观看| 精品国产aⅴ一区二区三区东京热 久久久久99人妻一区二区三区 | 亚洲欧美久久久久| 午夜精品一区二区三区免费视频| 三年中国国语在线播放免费| 亚洲成人免费看| 超碰在线资源站| 欧美日韩国产一区| 91精品国自产在线| 在线视频一区二区| 欧美在线观看不卡| 日本视频久久久| 久久亚洲精品伦理| 免费成人深夜夜行视频| 91视频一区二区三区| 国产二区视频在线播放| 在线视频欧美精品| 欧洲性xxxx| 久久资源免费视频| 精品久久人妻av中文字幕| 99久久综合狠狠综合久久止| 成人一区二区三区中文字幕| 免费不卡av在线| 欧美性猛交xxxxx水多| 欧美日韩高清丝袜| www日韩中文字幕在线看| 又污又黄的网站| 91丝袜美腿美女视频网站| 国产在线不卡视频| 国产无限制自拍| 欧美在线播放高清精品| 五月天丁香激情| 国产精品久久久久久久久久东京| 久久精品999| 日韩精品一区二区在线视频| 天天亚洲美女在线视频| 91香蕉一区二区三区在线观看| 久久中文字幕国产| 免费成人在线影院| 无码人妻精品一区二区三区在线| 欧美色爱综合网| 五月天丁香激情| 国产乱肥老妇国产一区二| 丁香亚洲综合激情啪啪综合| 黄色一级免费大片| 亚洲精品国产品国语在线| 69视频免费看| 噜噜噜噜噜久久久久久91| 夜夜亚洲天天久久| 亚洲色图27p| 国产欧美日韩专区发布| 久久这里只有精品6| 扒开伸进免费视频| 久久久久久久久国产| 狠狠色丁香久久婷婷综合_中 | 7878成人国产在线观看| 自拍偷拍校园春色| 日韩久久久久久久| 欧美日韩一区二区三区高清| 波多野结衣电车痴汉| 欧美日韩日本网| 天天色综合天天| 国产成人愉拍精品久久| 国产日韩二区| 一本到三区不卡视频| 午夜一区二区三区四区| 一区高清视频| 777亚洲妇女| 亚洲奶汁xxxx哺乳期| 欧美视频第三页| 色小说视频一区| 国产传媒一区在线| 99久久免费看精品国产一区| 777777777亚洲妇女| 久久久久综合网| 国产福利在线导航| 高清av免费一区中文字幕| 欧美日韩国产色视频| 精品人妻一区二区三区潮喷在线 | 亚洲av成人精品一区二区三区| 欧美大片在线看| 99在线精品免费| 欧美熟妇激情一区二区三区| 7777精品伊久久久大香线蕉语言| 亚洲五月六月丁香激情| 无码人妻丰满熟妇奶水区码| 这里只有精品66| 日韩国产精品视频| 粉嫩aⅴ一区二区三区四区五区| 波多野结衣有码| 高清视频一区| 91精品久久久久久蜜臀| 日本在线不卡视频一二三区| 欧美图片自拍偷拍| 91精品久久久久| 欧美三级日韩在线| 欧美aaa级片| 国产精品香蕉视屏| 欧美一级生活片| 久久97超碰国产精品超碰| 女~淫辱の触手3d动漫| 不卡一卡2卡3卡4卡精品在| 欧美精品日韩一区| 国产在线精品一区二区| 国语对白在线播放| 精品一区二区三区毛片| 欧美wwwxxxx| 亚洲va韩国va欧美va| 日本精品久久久久久| 妖精视频一区二区| 狠狠久久综合婷婷不卡| 国产视频欧美视频| 国产精品亲子伦对白| 91激情在线观看| www.com久久久| 国产自产精品| 中文字幕无线精品亚洲乱码一区 | 精品视频导航| 日韩精品一区二区视频| 久久午夜免费电影| 亚洲天堂五月天| 人人爽人人爽av| 久久久国产精品一区二区三区| 夜夜嗨av一区二区三区免费区| 国产精品美女久久久久久久| 国产视频第一页| 粉嫩av蜜桃av蜜臀av| 一区不卡视频| 久久av在线看| 欧美视频精品在线观看| 国产黄色成人av| 亚洲精品国产精品国自产网站按摩| av免费网站观看| 亚洲一区二区三区在线视频| 日韩电影大片中文字幕| 亚洲素人一区二区| 欧美aaaaa成人免费观看视频| 国产美女福利视频| 国产精品v日韩精品v在线观看| 国产欧美日本在线| 伦理中文字幕亚洲| 欧美视频一区二区三区四区| 久久久亚洲精品石原莉奈| 国产又粗又长又黄| 天天操天天舔天天射| 37pao成人国产永久免费视频| 国产日韩欧美中文在线播放| 亚洲天堂av女优| 欧美日韩一区二区在线| 91在线看国产| 国产精品国产高清国产| 在线免费日韩av| 三上悠亚 电影| 国产自产在线视频| 国内一区在线| 欧美在线一区二区三区四| 精品性高朝久久久久久久| 天天综合网天天综合色 | 在线观看成人免费| 成人中心免费视频| 俺去亚洲欧洲欧美日韩| 日韩亚洲欧美综合| 亚洲18女电影在线观看| 91亚洲精华国产精华精华液| 婷婷在线免费视频| 亚洲成人第一网站| 国产精品国产三级国产传播| 久久久久亚洲av成人网人人软件| 波多野结衣与黑人| 久久久com| 亚洲一区二区三区乱码aⅴ| 欧美国产一区二区三区|