MVC设计模式简单来说就是想我们的项目抽象层3个模块来进行设计项目架构,
M:模型层,模型层就是我们具体处理功能的java单元,例如dao,jdbc,service,utils。entity,这些统称javaBean
V:视图层,负责进行数据展示和用户进行数据交互,他之和控制层进行数据交互,和其他业务层不能有业务往来。例如jsp,html,jsf,ios,andorid
C:控制层,控制层负责协调视图层和业务逻辑层的关系。C负责吧视图层和模型串联起来。例如servlet、struts1、struts2,webwork,springmvc
,所以我们未来在设计代码的时候就一定要满足这个设计模式,这样可以让我们模块与模块之间形成高类聚,低耦合
我们mvc将项目分成3个模块化方案来编写,
同时我们在后台要对代码进行层次划分,一共分三层
1、控制层controller :负责业务逻辑
2、服务层service:负责为业务逻辑提供额外服务
3、功能层dao :负责具体的功能实现
所有写法必须按照接口定义功能,实现类实现具体操作的方式编写,未来我们就每次替换一层,然后逐步想框架进阶。
jsp页面
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String path = request.getContextPath() + "/";
%>
<!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=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<form action="<%=path %>/servlet/AdminLogin" method="post">
账号:<input type="text" name="account"><br>
密码:<input type="password" name="pwd"><br>
<input type="submit" value="登陆"/>
</form>
</body>
</html>
servlet代码:
package com.xingxue.controller.admin;
import java.io.IOException;
import java.util.HashMap;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.xingxue.dao.AdminDao;
import com.xingxue.dao.impl.AdminDaoImpl;
/**
* Servlet implementation class AdminLogin
*/
public class AdminLogin extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public AdminLogin() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String account = request.getParameter("account");
String pwd = request.getParameter("pwd");
HashMap<String, Object> param = new HashMap<String, Object>();
param.put("account",account);
param.put("pwd",pwd);
AdminDao dao = new AdminDaoImpl();
boolean isLogin = dao.adminLogin(param);
System.out.println("===========" + isLogin);
}
}
dao代码:
package com.xingxue.dao;
import java.util.HashMap;
/**
* 用户操作
* @author Administrator
* 接口的方法都是public abstract
* 接口的属性都是public static final
*/
public interface AdminDao {
int num = 10;
/**
* 用户登陆的方法
* @param param map包含账号和密码
* @return 登陆成功或者失败
*/
boolean adminLogin(HashMap<String, Object> param);
}
dao实现类代码:
package com.xingxue.dao.impl;
import java.sql.Connection;
import java.util.HashMap;
import java.util.Map;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.MapHandler;
import org.apache.commons.dbutils.handlers.MapListHandler;
import com.xingxue.dao.AdminDao;
import com.xingxue.utils.DBUtils;
import com.xingxue.utils.OracleDBUtils;
public class AdminDaoImpl implements AdminDao{
QueryRunner runner = new QueryRunner();
public boolean adminLogin(HashMap<String, Object> param) {
boolean isFlag = false;
Map<String, Object> result = new HashMap<String, Object>();
String sql = "select * from admin where account=? and p = ?";
Connection conn = OracleDBUtils.getConn();
try {
result = runner.query(conn, sql, new MapHandler(), param.get("account"),param.get("pwd"));
// new MapListHandler()
} catch (Exception e) {
e.printStackTrace();
} finally {
OracleDBUtils.closeDB(conn, null, null);
}
return result.size() > 0;
}
}
数据库工具类:
package com.xingxue.utils;
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 OracleDBUtils {
public static String url="jdbc:oracle:thin:@127.0.0.1:1521:orcl";
public static String driver="oracle.jdbc.driver.OracleDriver";
public static String user="scott";
public static String pwd="tiger";
public static void main(String[] args) {
System.out.println(OracleDBUtils.getConn());
}
/**
* 获取数据库链接
* @return
*/
public static Connection getConn() {
Connection conn = null;
try {
//加载驱动
Class.forName(driver);
//获取链接
conn = DriverManager.getConnection(url, user, pwd);
} catch (Exception e) {
e.printStackTrace();
}
return conn;
}
/**
* 关闭数据库资源
* @param conn
* @param pre
* @param rs
*/
public static void closeDB(Connection conn, Statement pre, ResultSet rs) {
try {
if(rs != null) {
rs.close();
}
if(pre != null) {
pre.close();
}
if(conn != null) {
conn.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
service代码: 服务层
package com.xingxue.service;
import java.util.HashMap;
public interface AdminService {
boolean adminLogin(HashMap<String, Object> param);
}
package com.xingxue.service.impl;
import java.sql.SQLException;
import java.util.HashMap;
import com.xingxue.dao.AdminDao;
import com.xingxue.dao.impl.AdminDaoImpl;
import com.xingxue.service.AdminService;
public class AdminServiceImpl implements AdminService{
AdminDao dao = new AdminDaoImpl();
public boolean adminLogin(HashMap<String, Object> param) {
return dao.adminLogin(param);
}
}