一、 什么是MVC框架?
MVC三个字母分别是单个单词的缩写,Model(模型)、View(视图)、Controller(控制),如同字面意思,它将对象按功能划分为这三个层,降低对象之间的耦合度,从而使系统更灵活,扩展性更好。MVC可以分割页面和数据库的访问,三个模块相互独立,改变某一个也不会影响其他两个,构建了更加良好的耦合性组件。通过Controller控制器,增加系统的灵活性,使代码更加健壮,可复用性更高了。
二、MVC的实现过程:
1、浏览器发送请求,JSP页面响应到浏览器页面;
2、点击JSP页面上的内容,提交请求;
3、请求到Controller控制器模块,也就是Servlet服务器中,Servlet服务器通过分析请求,判断客户的需求;
4、调用相应的Model模型,用Service层处理数据库的增删改查,用Dao层提供接口支持;
5、Servlet将数据反馈到View视图层也就是JSP页面中;
6、将JSP页面响应给浏览器,展示动态的内容。
在这个过程中,最典型的的MVC模型就是 JavaBean + JSP + Servlet的模式,各司其职,分工合作;这种设计理念可以把html代码块和业务逻辑代码块分开,让代码更清晰,便于开发。
三、MVC框架结构:
四、操作步骤:
1、在计算机管理的服务中打开数据库的监听,我安装的是oracle10g,在这里无法打开,于是在cmd当中打开:
C:\user\admin> lsnrctl start
2、下载一个JDBC驱动
3、将驱动复制到当前项目
4、挂载驱动:
右键项目--->properties--->resource--->Java build path--->libraries--->add JAR resource
5、创建以下包:javaBean,jdbc,dao,service,control,view,test
6、在各个包下创建class,完成操作
DBC程序访问数据库的步骤:
Ⅰ、加载并注册驱动程序
Ⅱ、创建一个connection连接
Ⅲ、创建一个statment对象
Ⅳ、执行查询或更新
Ⅴ、结果处理
Ⅵ、关闭连接
五、自定义jdbc类
自己写了一个封装工具类,以后方便使用jdbc
代码实现如下:
package com.oracle.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class JDBCutil {
private static Connection conn=null;
private PreparedStatement pst=null;
private String driver="oracle.jdbc.driver.OracleDriver";
private String url="jdbc:oracle:thin:@10.25.43.157:1521:orcl";
private String userName="scott";
private String pwd="tiger";
/*mySQL连接
private String driver="com.mysql.jdbc.Driver";
//private String url="jdbc:mysql://localhost:3306/test?useSSL=false";
private String url="jdbc:mysql://localhost:3306/test2?
useUnicode=true&characterEncoding=UTF-8&useSSL=false";
private String userName="root";
private String pwd="root";*/
public Connection getConnection(){
try {
Class.forName(driver);
System.out.println("加载驱动成功");
if(conn==null){
conn = DriverManager.getConnection(url,userName,pwd);
}
System.out.println("创建Connection连接成功");
} catch (ClassNotFoundException e) {
System.out.println("加载驱动失败");
e.printStackTrace();
} catch (SQLException e) {
System.out.println("创建Connection连接失败");
e.printStackTrace();
}
return conn;
}
public int executeUpdate(String sql) throws SQLException {
int count=0;
try {
pst=conn.prepareStatement(sql);
count=pst.executeUpdate();
System.out.println("执行更新操作成功,有"+count+"条记录更新");
} catch (SQLException e) {
System.out.println("执行更新操作失败");
e.printStackTrace();
throw new SQLException();
}
return count;
}
public int executeUpdate(String sql,Object[] obj)throws SQLException{
int count=0;
try {
pst=conn.prepareStatement(sql);
for(int i=0;i<obj.length;i++){
pst.setObject(i+1, obj[i]);
}
count=pst.executeUpdate();
System.out.println("执行更新操作成功,有"+count+"条记录更新");
} catch (SQLException e) {
System.out.println("执行更新操作失败");
e.printStackTrace();
throw new SQLException();
}
return count;
}
public ResultSet executeQuery(String sql)throws SQLException{
ResultSet rs=null;
try {
pst=conn.prepareStatement(sql);
rs=pst.executeQuery();
System.out.println("执行查询操作成功");
} catch (SQLException e) {
System.out.println("执行查询操作失败");
e.printStackTrace();
throw new SQLException();
}
return rs;
}
public ResultSet executeQuery(String sql,Object[] obj)throws SQLException{
ResultSet rs=null;
try {
pst=conn.prepareStatement(sql);
for(int i=0;i<obj.length;i++){
pst.setObject(i+1, obj[i]);
}
rs=pst.executeQuery();
System.out.println("执行查询操作成功");
} catch (SQLException e) {
System.out.println("执行查询操作失败");
e.printStackTrace();
throw new SQLException();
}
return rs;
}
public void beginTranaction(){
try {
conn.setAutoCommit(false);
System.out.println("开始事务");
} catch (SQLException e) {
System.out.println("开始事务出现异常");
e.printStackTrace();
}
}
public void commit(){
try {
conn.commit();
System.out.println("事务提交成功");
} catch (SQLException e) {
System.out.println("事务提交异常");
e.printStackTrace();
}
}
public void rollback(){
try {
conn.rollback();;
System.out.println("事务回滚成功");
} catch (SQLException e) {
System.out.println("事务回滚异常");
e.printStackTrace();
}
}
public void close(){
try {
if(pst!=null){
pst.close();
pst=null;
System.out.println("关闭PreparedStatement对象");
}
if(conn!=null){
conn.close();
conn=null;
System.out.println("关闭Connection对象");
}
} catch (SQLException e) {
System.out.println("关闭PreparedStatement,Connection对象异常");
e.printStackTrace();
}
}
public static void main(String[] args) {
JDBCutil db=new JDBCutil();
db.getConnection();
db.close();
System.out.println("over");
}
}