MVC设计模式

MVC框架

  • MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。

MVC 编程模式

MVC 是一种使用 MVC(Model View Controller 模型-视图-控制器)设计创建 Web 应用程序的模式

  • Model(模型)表示应用程序核心(比如数据库记录列表)。
  • View(视图)显示数据(数据库记录)。
  • Controller(控制器)处理输入(写入数据库记录)。



  • Model(模型)
    是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取数据。

  • View(视图)
    是应用程序中处理数据显示的部分。通常视图是依据模型数据创建的。

  • Controller(控制器)
    是应用程序中处理用户交互的部分。通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。


使用MVC模式实现从数据库获取数据显示到页面

准备工作:

    引用 jdbc 的jar包
    引用 jstl 的jar包

1




直接在Maven项目添加,自动下载jar包

<!-- 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>

Model(模型)



创建一个dao包,用来存放数据库操作的类

2




DataUtil类

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

/**
 * 数据访问对象
 * @author LingDu
 */
public class DataUtil {
    /**
     * 注:为了方便演示,这里就将所有的SQL相关配置放到代码里
     * 平时使用数据库的时候一定要把SQL相关配置放到配置文件中,然后使用properties类读取
     * @return 返回一个数据库连接
     */
    public static Connection getConnection(){
        Connection conn = null;
        try {
            Class.forName("com.mysql.jdbc.Driver");
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/lingdu?useSSL=false","root","123456");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return conn;
    }
}



UserDao.java

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.lingdu.model.User;

/**
 * DAO(Data Access Object)
 * @author LingDu
 * 2017-2-22
 */
public class UserDao {
    /**
     * 注:为了方便演示,这里就将所有的SQL相关配置放到代码里
     * 平时使用数据库的时候一定要把SQL相关配置放到配置文件中,然后使用properties类读取
     * @return 所有的用户信息对象集合
     */
    public static List<User>getUserList(){
        List<User> userList = new ArrayList<User>();
        Connection conn = DataUtil.getConnection();
        Statement stmt = null;
        ResultSet rs = null;
        try {
            stmt = conn.createStatement();
            rs = stmt.executeQuery("select * from tb_user");
            while(rs.next()){
                User user = new User(rs.getInt("ID"),rs.getString("username"),rs.getString("password"));
                userList.add(user);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }finally{
            try {
                stmt.close();
                rs.close();
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }

        }
        return userList;
    }
}



创建一个model包,用来存放数据库相关字段



3



User类

/**
 * MVC中的javabean,跟数据库表及字段一一对应
 * @author LingDu
 */
public class User {
    private int id;
    private String username;
    private String password;
    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 getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public User(int id, String username, String password) {
        super();
        this.id = id;
        this.username = username;
        this.password = password;
    }


}



View(视图)


6



引用jstl

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>


JSTL(JSP Standard Tag Library,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库



API:

http://docs.oracle.com/javaee/5/jstl/1.1/docs/tlddocs/



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>用户名</th>
            <th>密码</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(控制器)

4




UserServlet.java

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.lingdu.dao.UserDao;
import com.lingdu.model.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 = UserDao.getUserList();
        //设置一个属性
        request.setAttribute("userList", userList);
        //将请求转发到userList.jsp页面
        request.getRequestDispatcher("/userList.jsp").forward(request, response);
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {


        doGet(request, response);
    }

}



运行UserServlet 就可以将数据库查询好的信息显示到页面了

5

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值