浅谈什么是MVC设计模式
来源:互联网 发布:软件需求 功能需求 编辑:程序博客网 时间:2024/06/09 18:05
什么是MVC?
MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。
换句话说:
通常模型对象负责在数据库中存取数据。
通常视图是依据模型数据创建的。
通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。
Model:常用javabean去实现,通过各种类来对数据库的数据进行获取,并封装在对象当中。
View:常用JSP来实现,通过可直接观察的JSP页面来展示我们从数据库中获取的数据。
Controller:常用servlet来实现,通过servlet来获取经过javabean包装过的对象(已存入数据库中的数据),然后再发送数据传输到JSP界面。
这里可能有人会想知道,javabean是什么:
JavaBean 是一种JAVA语言写成的可重用组件。为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器。JavaBean 通过提供符合一致性设计模式的公共方法将内部域暴露成员属性,long和class方法获取。众所周知,属性名称符合这种模式,其他Java 类可以通过自省机制发现和操作这些JavaBean 的属性。
JavaBean一般由三部分组成:
1.属性
2.方法
3.事件
倒入项目的2种方法:
1.设置成maven工程,在pom.xml文件中倒入jar包的<dependency></dependency>
<!-- https://mvnrepository.com/artifact/javax.servlet/jstl --><dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version></dependency><!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --><dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.39</version></dependency>2.下载jar包,然后倒入到WebContent/WEB-INF/lib目录下(不要导错地方)
msyql-connector-java-5.1.39.jar:连接数据库使用的。
点击打开链接
jstl-1.2.jar:用于在jsp页面进行数据库的数据迭代输出。
点击打开链接
关于什么是jstl,还有它的用法,博主推荐一下这篇博文:
点击打开链接
Model(模型)
(创建两个包,一个model包用于建立连接数据库和获取数据,一个modelUser包用于建立存放数据的对象User)
MysqlConnection.java:
package com.ricky.model;import java.io.FileInputStream;import java.io.IOException;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;import java.util.Properties;public class MysqlConnection {/** * 连接MySQL数据库,返回一个连接 * @return */public static Connection getConnectiion() {Connection conn=null;Properties p=new Properties();try {p.load(new FileInputStream("E:/码神/mvc/src/jdbc.properties"));Class.forName("com.mysql.jdbc.Driver");conn=DriverManager.getConnection(p.getProperty("ip"), p.getProperty("username"), p.getProperty("password"));System.out.println(p.getProperty("ip"));} catch (IOException e) {e.printStackTrace();} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();}return conn;}}
GetUser.java:
package com.ricky.model;import java.sql.Connection;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.util.ArrayList;import java.util.List;import com.ricky.modelUser.User;public class GetUser {/** * 用于从数据库获取信息,然后把信息存放在一个一个User对象中 * @return 返回一个装User对象的链表 */public static List<User> getUserList() {List<User> userList=new ArrayList<User>();Connection conn=MysqlConnection.getConnectiion();Statement stat=null;ResultSet rs=null;try {stat=conn.createStatement();rs=stat.executeQuery("select * from user");while(rs.next()){String id=rs.getString("id");String username=rs.getString("username");String password=rs.getString("password");System.out.println(id+" "+username+" "+password);User user=new User(id,username,password);userList.add(user);}} catch (SQLException e) {e.printStackTrace();}finally{try {rs.close();stat.close();conn.close();} catch (SQLException e) {e.printStackTrace();}}return userList;}}
User.java:
package com.ricky.modelUser;public class User {private String id;private String username;private String password;public String getId() {return id;}public void setId(String id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public User(String id,String username,String password){this.id=id;this.username=username;this.password=password;}}
(创建一个简单的jsp页面来显示数据)
这里需要在jsp文件中引用jstl(上面有篇博文有详细介绍用法):
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
userList.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%><!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><table><tr><th>序号</th><th>id</th><th>username</th><th>password</th></tr><c:forEach items="${userList }" var="user" varStatus="st"><tr><td><c:out value="${st.index+1 }"></c:out></td><td><c:out value="${user.id }"></c:out></td><td><c:out value="${user.username }"></c:out></td><td><c:out value="${user.password }"></c:out></td></tr></c:forEach></table></body></html>
Controller(控制器)
(创建userServlet来接受数据库的数据对象User,控制数据对象输出到jsp页面)
userServlet.java:
package com.ricky.controller;import java.io.IOException;import java.util.List;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.ricky.model.GetUser;import com.ricky.modelUser.User;/** * Servlet implementation class userServlet */@WebServlet("/userServlet")public class userServlet extends HttpServlet {private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public userServlet() { super(); }/** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {List<User> userList=GetUser.getUserList();//设置一个userList属性传到下面的jsp页面request.setAttribute("userList", userList);request.getRequestDispatcher("/userList.jsp").forward(request, response);}/** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubdoGet(request, response);}}
- 浅谈什么是MVC设计模式
- 什么是MVC设计模式
- 什么是MVC设计模式
- 什么是MVC设计模式
- 什么是MVC设计模式
- 什么是MVC设计模式
- 什么是MVC设计模式
- 什么是MVC设计模式
- 什么是MVC设计模式???
- 浅谈MVC设计模式
- 浅谈MVC设计模式
- 什么是MVC设计模式,为什么使用MVC?
- 04(设计)什么是MVC模式
- 浅谈Spring Mvc的设计模式
- iOS设计模式之MVC浅谈
- 浅谈MVC架构模式分析与设计
- iOS设计模式之MVC设计模式浅谈
- 【设计模式之一】浅谈对MVC设计模式的理解
- A very hard Aoshu problem HDU-4403
- TCP在握手、挥手或连接已建立时,如果发生意外会怎样?
- W3C 不要再使用废弃的 HTML 标签
- Python HackerRank|The Minion Game
- html5+js拖拽上传
- 浅谈什么是MVC设计模式
- ACM 海贼王之伟大航路(深搜剪枝)
- ubuntu常用命令
- spring setter 方式注入
- 第一个Android程序
- PAT 1052
- 解除oacle锁住的表sql
- use vue vuex vue-router, not use webpack
- 为什么有栈内存与堆内存之分?