MVC原理及案例分析
生活随笔
收集整理的這篇文章主要介紹了
MVC原理及案例分析
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
MVC原理及案例分析
關于MVC
MVC全名是Model View Controller,是模型(model)-視圖(view)-控制器(controller)的縮寫,一種軟件設計典范,用一種業務邏輯、數據、界面顯示分離的方法組織代碼,將業務邏輯聚集到一個部件里面,在改進和個性化定制界面及用戶交互的同時,不需要重新編寫業務邏輯。MVC被獨特的發展起來用于映射傳統的輸入、處理和輸出功能在一個邏輯的圖形化用戶界面的結構中。MVC開始是存在于桌面程序中的,M是指業務模型,V是指用戶界面,C則是控制器,使用MVC的目的是將M和V的實現代碼分離,從而使同一個程序可以使用不同的表現形式。
以簡單的登錄功能為案例,簡單分析MVC的具體實現
項目執行的流程
項目文件中各個層次的作用
具體代碼實現:
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層的請求,并分發給Model處理 public class LoginServlet extends HttpServlet {protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//post請求方式設置編碼request.setCharacterEncoding("UTF-8");//接受用戶名和密碼String name = request.getParameter("uname");String pwd = request.getParameter("upwd");//封裝Login login = new Login(name,pwd);//將用戶名和密碼傳遞到登錄功能里面(LoginDao)//調用模型層的登錄功能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*模型層,用于處理登錄(查詢數據庫)*/ public class LoginDao {//用于登錄的login方法//在方法參數中傳入login類型public static int login(Login login) {//登錄成功與否的標識//boolean flag = false;int flag = -1; //-1系統異常 0:用戶名或密碼有誤 1:登陸成功int result = -1;Connection connection = null;PreparedStatement prepareStatement = null;ResultSet rs = null;try {//加載驅動Class.forName("com.mysql.jdbc.Driver");//獲取連接connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test1", "root", "root");//訪問數據庫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();//登陸失敗,系統異常return -1;} catch (SQLException e) {e.printStackTrace();//登陸失敗,系統異常return -1;} catch (Exception e) {e.printStackTrace();//登陸失敗,系統異常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;} }總結:
MVC模式的優點:
MVC模式的缺點:
總結
以上是生活随笔為你收集整理的MVC原理及案例分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java中Scanner类的使用
- 下一篇: MVC与三层架构的联系及三层架构实现学生