MVC简介

MVC(ModelViewController)是一种软件设计模式,它将应用程序分为三个互相交互的部分:模型(Model)、视图(View)和控制器(Controller),这种设计模式有助于将业务逻辑、数据和用户界面分离,使得代码更加模块化、易于维护和扩展。

从零开始MVCOracle配置指南从零开始MVCOracle配置指南

(图片来源网络,侵删)

Oracle简介

Oracle是一款关系型数据库管理系统,具有高性能、高可用性和高安全性等特点,在Web应用中,我们通常使用Oracle数据库来存储和管理数据。

从零开始MVC Oracle配置指南

1、环境准备

我们需要准备以下环境:

操作系统:Windows 7或更高版本、Linux或Unix

开发工具:Eclipse或IntelliJ IDEA

服务器:Tomcat 7或更高版本

数据库:Oracle 11g或更高版本

JDBC驱动:ojdbc6.jar(Oracle官方提供的JDBC驱动)

2、创建项目

在Eclipse或IntelliJ IDEA中创建一个Java Web项目,并添加以下依赖:

Servlet API

JSP API

JavaServer Pages Standard Tag Library(JSTL)

ojdbc6.jar(将ojdbc6.jar复制到项目的lib目录下)

3、配置web.xml

在项目的WEBINF目录下创建一个名为web.xml的文件,并添加以下内容:

<?xml version="1.0" encoding="UTF8"?>
<webapp xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                             http://xmlns.jcp.org/xml/ns/javaee/webapp_3_1.xsd"
         version="3.1">
    <servlet>
        <servletname>MyServlet</servletname>
        <servletclass>com.example.MyServlet</servletclass>
    </servlet>
    <servletmapping>
        <servletname>MyServlet</servletname>
        <urlpattern>/myServlet</urlpattern>
    </servletmapping>
</webapp>

<servletclass>标签的值为自定义的Servlet类名,我们将创建一个名为MyServlet的Servlet类。

4、创建数据库连接池

为了提高性能,我们可以使用数据库连接池来管理数据库连接,这里我们使用Apache Commons DBCP库来实现数据库连接池,将commonsdbcp1.4.jar和commonspool1.6.jar复制到项目的lib目录下,创建一个名为DBConnectionPool的类,并添加以下代码:

import org.apache.commons.dbcp2.BasicDataSource;
import java.sql.Connection;
import java.sql.SQLException;
public class DBConnectionPool {
    private static BasicDataSource dataSource = new BasicDataSource();
    static {
        dataSource.setDriverClassName("oracle.jdbc.driver.OracleDriver");
        dataSource.setUrl("jdbc:oracle:thin:@localhost:1521:orcl");
        dataSource.setUsername("username");
        dataSource.setPassword("password");
        dataSource.setInitialSize(5);
        dataSource.setMaxTotal(10);
        dataSource.setMinIdle(2);
        dataSource.setMaxIdle(5);
    }
    public static Connection getConnection() throws SQLException {
        return dataSource.getConnection();
    }
}

5、创建实体类和DAO层接口及实现类

实体类用于表示数据库中的表结构,DAO层负责与数据库进行交互,创建一个名为User的实体类:

public class User {
    private int id;
    private String name;
    private String email;
    // getter和setter方法省略...
}

创建一个名为UserDao的接口:

import java.sql.*;
import java.util.List;
public interface UserDao {
    List<User> findAll(); // 查询所有用户
    User findById(int id); // 根据ID查询用户
    void addUser(User user); // 添加用户
    void updateUser(User user); // 更新用户信息
    void deleteUser(int id); // 删除用户
}

接下来,创建一个名为UserDaoImpl的实现类:

import java.sql.*;
import java.util.ArrayList;
import java.util.List;
public class UserDaoImpl implements UserDao {
    private static final String SQL_FIND_ALL = "SELECT * FROM users"; // 查询所有用户的SQL语句,根据实际情况修改表名和字段名即可,其他SQL语句类似。																																																   private static final String SQL_FIND_BY_ID = "SELECT * FROM users WHERE id = ?";   private static final String SQL_ADD_USER = "INSERT INTO users (name, email) VALUES (?, ?)";   private static final String SQL_UPDATE_USER = "UPDATE users SET name = ?, email = ? WHERE id = ?";   private static final String SQL_DELETE_USER = "DELETE FROM users WHERE id = ?";   // 获取数据库连接的方法   public List<User> findAll() {     Connection connection = null;     PreparedStatement preparedStatement = null;     ResultSet resultSet = null;     Users users = new Users();     try {       connection = DBConnectionPool.getConnection();       preparedStatement = connection.prepareStatement(SQL_FIND_ALL);       resultSet = preparedStatement.executeQuery();       while (resultSet.next()) {         User user = new User();         user.setId(resultSet.getInt("id"));         user.setName(resultSet.getString("name"));         user.setEmail(resultSet.getString("email"));         users.add(user);       }     } catch (SQLException e) {       e.printStackTrace();     } finally { // 关闭资源 }     return users; // 返回查询结果   }   // 其他方法类似,省略... }```
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。