項目分層(分包)
view層:視圖層,項目中的界面;
controller層:控制層,獲取界面上的數據;將要實現的功能交給業務層處理;
service層作用: 業務層, 功能的實現, 與controller控制層和數據訪問層DAO交互, 將對數據庫的操作交給DAO數據訪問層來處理
dao層作用: 數據訪問層, 用來操作數據庫表的數據
db數據庫: 這里指MySQL
domain 實體包: 存放JavaBean
tools工具包:存放項目中使用到的工具類
test測試包: 存放項目功能測試的代碼

各舉一個例子:
view層:
package com.oracle.view;
import java.util.List;
import java.util.Scanner;
import com.oracle.controller.Sortcontroller;
import com.oracle.controller.UserController;
import com.oracle.domain.Sort;
public class Mainview {
private UserController userController = new UserController();
private Sortcontroller sortcontroller = new Sortcontroller();
public void mainShow(){
System.out.println("--------歡迎進入商城--------");
System.out.println("1、登陸");
System.out.println("2、注冊");
System.out.println("3、退出");
System.out.println("請輸入你的選擇");
}
public void IndexShow(){
System.out.println("-------------首頁-------------");
System.out.println("1、新增分類");
System.out.println("2、修改分類");
System.out.println("3、刪除分類");
System.out.println("4、查詢所有分類");
System.out.println("5、返回上級菜單");
System.out.println("請輸入你的選擇");
}
//登錄頁面
public void login(){
System.out.println("-----------登陸頁面-------------");
System.out.println("請輸入用戶名:");
Scanner sc = new Scanner(System.in);
String username = sc.next();
System.out.println("請輸入密碼:");
String password = sc.next();
//調用Controller 層的登陸方法
int count = userController.login(username, password);
if(count > 0){
System.out.println("登陸成功!!");
run2();
}else{
System.out.println("登陸失敗");
}
}
//注冊頁面
public void register(){
System.out.println("-----------注冊頁面-------------");
System.out.println("請輸入用戶名:");
Scanner sc = new Scanner(System.in);
String username = sc.next();
System.out.println("請輸入密碼:");
String password = sc.next();
//調用Controller 層的注冊方法
System.out.println(userController.registerUser(username, password));
}
//一級菜單
public void run(){
Scanner sc = new Scanner(System.in);
while(true){
mainShow();
int choose = sc.nextInt();
switch(choose){
case 1:
//登陸
login();
break;
case 2:
register();
break;
case 3:
return;
}
}
}
//二級菜單
public void run2(){
Scanner sc = new Scanner(System.in);
while(true){
IndexShow();
int choose = sc.nextInt();
switch(choose){
case 1:
add();
break;
case 2:
update();
break;
case 3:
break;
case 4:
getAll();
break;
case 5:
return;
}
}
}
//新增分類頁面
public void add(){
Scanner sc = new Scanner(System.in);
System.out.println("--------------新增頁面------------");
System.out.println("請輸入你要新增的分類名稱");
String sname = sc.next();
//調用controller新增的方法
System.out.println(sortcontroller.addSort(sname));
}
//查詢所有分類頁面
public void getAll(){
System.out.println("-------------查詢所有分類-------------");
//調用controller的查詢方法
List<Sort> list = sortcontroller.getAll();
System.out.println("分類編號\t分類名稱\t");
for(Sort s:list){
System.out.println(s.getSid()+"\t"+s.getSname());
}
}
//修改分類頁面
public void update(){
getAll();
System.out.println("請輸入要您要修改的分類編號");
Scanner sc = new Scanner(System.in);
int id = sc.nextInt();
System.out.println("請輸入你要修改的分類名稱");
String sname = sc.next();
//調用Controller的修改方法
String mes = sortcontroller.updateSort(id, sname);
System.out.println(mes);
}
}
controller層:
package com.oracle.controller;
import com.oracle.domain.User;
import com.oracle.service.UserService;
public class UserController {
//封裝前台數據傳給后台
//接收后台數據傳給后台
private UserService userService = new UserService();
public int login(String username,String password){
return userService.login(username, password);
}
public String registerUser(String username,String password){
return userService.registerUser(username, password);
}
/*public String register(String uname,String pwd){
User user = new User();
}*/
}
service層:
package com.oracle.service;
import java.sql.SQLException;
import com.oracle.dao.Userdao;
import com.oracle.domain.User;
public class UserService {
//UserService層只能調用Dao層方法(相對)
//view層調用controller層調用service層調用dao層
private Userdao userDao = new Userdao();
public int login(String username,String password){
int count = 0;
try {
count = userDao.login(username, password);
} catch (SQLException e) {
e.printStackTrace();
}
return count;
}
//注冊方法
public String register(User user){
int row = 0;
String mes = "";
try {
row = userDao.register(user);
} catch (SQLException e) {
e.printStackTrace();
}
if(row > 0){
mes = "注冊成功";
}else{
mes = "注冊失敗";
}
return mes;
}
//-----------
public String registerUser(String username,String password){
int count = 0;
String mes ="";
try {
count = userDao.registerUser(username, password);
} catch (SQLException e) {
e.printStackTrace();
}
if(count == 0){
int row = 0;
try {
row =userDao.updateUser(username, password);
} catch (SQLException e) {
e.printStackTrace();
}
if(row > 0){
mes = "注冊成功!";
}else{
mes = "注冊失敗!";
}
}else{
mes = "用戶名已存在!";
}
return mes;
}
}
dao層:
package com.oracle.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.oracle.domain.User;
import com.oracle.tools.JDBCUtils;
public class Userdao {
//登陸驗證用戶名或密碼是否正確
public int login(String username,String password) throws SQLException{
Connection conn = JDBCUtils.get();
String sql = "select count(*) from user where uname = ? and pwd = ?";
PreparedStatement pst = conn.prepareStatement(sql);
pst.setString(1, username);
pst.setString(2, password);
ResultSet rs = pst.executeQuery();
int count = 0;
while(rs.next()){
count=rs.getInt(1);
}
return count;
}
//注冊方法
//1注冊用戶
public int registerUser(String username,String password) throws SQLException{
Connection conn = JDBCUtils.get();
String sql = "select count(*) from user where uname = ? ";
PreparedStatement pst = conn.prepareStatement(sql);
pst.setString(1, username);
ResultSet rs = pst.executeQuery();
int count = 0;
while(rs.next()){
count=rs.getInt(1);
}
JDBCUtils.close(conn, pst, rs);
return count;
}
//2添加用戶
public int updateUser(String username,String password) throws SQLException{
Connection conn = JDBCUtils.get();
String sql = "insert into user (uname,pwd) values (?,?)";
PreparedStatement pst = conn.prepareStatement(sql);
pst.setString(1, username);
pst.setString(2, password);
int row = pst.executeUpdate();
JDBCUtils.close(conn, pst);
return row;
}
public int register(User user) throws SQLException{
Connection conn = JDBCUtils.get();
String sql = "insert into user(uname,pwd) values(?,?)";
PreparedStatement pst = conn.prepareStatement(sql);
pst.setString(1, user.getUsername());
pst.setString(2, user.getPassword());
int row = pst.executeUpdate();
JDBCUtils.close(conn, pst);
return row;
}
}
domain層:
package com.oracle.domain;
public class User {
private int uid;
private String username;
private String password;
public int getUid() {
return uid;
}
public void setUid(int uid) {
this.uid = uid;
}
public String toString() {
return "User [uid=" + uid + ", username=" + username + ", password=" + password + "]";
}
public User() {
super();
}
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;
}
}
tools層:
package com.oracle.tools;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class JDBCUtils {
public static Connection get() {
//1、注冊驅動
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
//2、獲得連接
String url = "jdbc:mysql://localhost:3306/ceshi?characterEncoding=gbk";
String root = "root";
String pwd = "123";
Connection conn = null;
try {
conn = DriverManager.getConnection(url,root,pwd);
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
public static void close(Connection conn,PreparedStatement pst){
if(pst != null){
try {
pst.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(conn != null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static void close(Connection conn,PreparedStatement pst,ResultSet rs){
if(rs != null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(pst != null){
try {
pst.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(conn != null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
test層:
package com.oracle.test;
import com.oracle.view.Mainview;
public class test {
public static void main(String[] args) {
new Mainview().run();
}
}
