MVC原理及案例分析
生活随笔
收集整理的這篇文章主要介紹了
MVC原理及案例分析
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
MVC原理及案例分析
關(guān)于MVC
MVC全名是Model View Controller,是模型(model)-視圖(view)-控制器(controller)的縮寫(xiě),一種軟件設(shè)計(jì)典范,用一種業(yè)務(wù)邏輯、數(shù)據(jù)、界面顯示分離的方法組織代碼,將業(yè)務(wù)邏輯聚集到一個(gè)部件里面,在改進(jìn)和個(gè)性化定制界面及用戶交互的同時(shí),不需要重新編寫(xiě)業(yè)務(wù)邏輯。MVC被獨(dú)特的發(fā)展起來(lái)用于映射傳統(tǒng)的輸入、處理和輸出功能在一個(gè)邏輯的圖形化用戶界面的結(jié)構(gòu)中。MVC開(kāi)始是存在于桌面程序中的,M是指業(yè)務(wù)模型,V是指用戶界面,C則是控制器,使用MVC的目的是將M和V的實(shí)現(xiàn)代碼分離,從而使同一個(gè)程序可以使用不同的表現(xiàn)形式。
以簡(jiǎn)單的登錄功能為案例,簡(jiǎn)單分析MVC的具體實(shí)現(xiàn)
項(xiàng)目執(zhí)行的流程
項(xiàng)目文件中各個(gè)層次的作用
具體代碼實(shí)現(xiàn):
login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>登錄</title> </head> <body><form action="LoginServlet" method="post">用戶名:<input type="text" name="uname"><br/>密碼: <input type="password" name="upwd"><br/><input type="submit" value="登錄"></form> </body> </html>Welcome.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body>登陸成功!! </body> </html>LoginServlet.java
package org.zxm.servlet;import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;import org.zxm.Dao.LoginDao; import org.zxm.entity.Login;//控制器層,用于接收view層的請(qǐng)求,并分發(fā)給Model處理 public class LoginServlet extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//post請(qǐng)求方式設(shè)置編碼request.setCharacterEncoding("UTF-8");//接受用戶名和密碼String name = request.getParameter("uname");String pwd = request.getParameter("upwd");//封裝Login login = new Login(name,pwd);//將用戶名和密碼傳遞到登錄功能里面(LoginDao)//調(diào)用模型層的登錄功能int result = LoginDao.login(login);if(result > 0) {//重定向response.sendRedirect("Welcome.jsp");}else {response.sendRedirect("login.jsp");}}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}}LoginDao.java
/*** */ package org.zxm.Dao;import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException;import org.zxm.entity.Login;/*** @author 11441*模型層,用于處理登錄(查詢數(shù)據(jù)庫(kù))*/ public class LoginDao {//用于登錄的login方法//在方法參數(shù)中傳入login類型public static int login(Login login) {//登錄成功與否的標(biāo)識(shí)//boolean flag = false;int flag = -1; //-1系統(tǒng)異常 0:用戶名或密碼有誤 1:登陸成功int result = -1;Connection connection = null;PreparedStatement prepareStatement = null;ResultSet rs = null;try {//加載驅(qū)動(dòng)Class.forName("com.mysql.jdbc.Driver");//獲取連接connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test1", "root", "root");//訪問(wèn)數(shù)據(jù)庫(kù)String sql = "select count(*) from login where username = ? and pwd = ?";prepareStatement = connection.prepareStatement(sql);prepareStatement.setString(1, login.getUsername());prepareStatement.setString(2, login.getPwd());rs = prepareStatement.executeQuery();if(rs.next()) {result = rs.getInt(1);}if(result > 0) {//登陸成功return 1;}else {//登陸失敗,用戶名或密碼有誤return 0;}} catch (ClassNotFoundException e) {e.printStackTrace();//登陸失敗,系統(tǒng)異常return -1;} catch (SQLException e) {e.printStackTrace();//登陸失敗,系統(tǒng)異常return -1;} catch (Exception e) {e.printStackTrace();//登陸失敗,系統(tǒng)異常return -1;}finally {try {if(rs != null) rs.close();if(prepareStatement != null) prepareStatement.close();if(connection != null) connection.close();} catch (SQLException e) {e.printStackTrace();} catch (Exception e) {e.printStackTrace();}} } }Login.java
/*** */ package org.zxm.entity;/*** @author 11441**/ public class Login {private int id;private String username;private String pwd;public Login(String username, String pwd) {this.username = username;this.pwd = pwd;}public Login() {}public Login(int id, String username, String pwd) {this.id = id;this.username = username;this.pwd = pwd;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPwd() {return pwd;}public void setPwd(String pwd) {this.pwd = pwd;} }總結(jié):
MVC模式的優(yōu)點(diǎn):
MVC模式的缺點(diǎn):
總結(jié)
以上是生活随笔為你收集整理的MVC原理及案例分析的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: java中Scanner类的使用
- 下一篇: MVC与三层架构的联系及三层架构实现学生