• 我的第一个javaweb----模仿社区网站(二)


    项目分层

    在写后台之前我给分了四层,每一层负责不同的功能,如图

    . 前端页面层:也就是浏览器展示给人看的,直接与人交互的界面
    . servlet层:受理前端页面发来的数据,由它接受前端发来的请求(request)做出不同的处理,然后给出不同的响应(reponse)返回给前台,然后将需要查询的请求交给Dao层
    . Dao层:它的主要功能用于和数据库交互,执行增删改查的功能
    . 数据库层:很明显就是存储数据的

    建立各层

    首先在eclipse上建立一个动态web project,然后建立不同的层(就是package包)

    工具包

    一个重要的包就是连接jdbc的工具包,我的工具类叫DBUtils

    package com.utilDB;
    
    import java.io.IOException;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.Properties;
    
    public class DBUtils {
        private static DBUtils db;
        String driver;
        String url;
        String username;
        String password;
        //让这里的构造器为私有的,就是不让外界能直接new这个类,因为连接数据库本身就是一个比较慢的过程,只需要加载连接一次就可以了
        private DBUtils() {
        	Properties p=new Properties();
        	try {
        		//这里的连接数据库信息都放在一个properties文件中,方便我们修改
    			p.load(this.getClass().getClassLoader().getResourceAsStream("db.properties"));
    			driver=p.getProperty("driver");
    			url=p.getProperty("url");
    			username=p.getProperty("username");
    			password=p.getProperty("password");
    			System.out.println(password);
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
        }
        //这里就是单例模式(懒汉模式),外界只能通过这个公有的方法来访问这个类,注意:是静态方法
        public static DBUtils getIntstance() {
        	//这类永远只new一次
        	if(db==null) {
        		return new DBUtils();
        	}else {
        		return db;
        	}
        }
        
        //返回一个jdbc连接
        public Connection getConnection() throws SQLException, ClassNotFoundException {
        	Class.forName(driver);
        	Connection conn=DriverManager.getConnection(url,username,password);
        	
    		return conn;
        	
        }
        //关闭对应连接
        public void close(Connection conn) {
        	if(conn!=null) {
        		try {
        			conn.close();
        		} catch (SQLException e) {
        			// TODO Auto-generated catch block
        			e.printStackTrace();
        		}
        	}
        	
        }
        public void close(PreparedStatement ps) {
        	if(ps!=null) {
        		try {
    				ps.close();
    			} catch (SQLException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
        	}
        }
        public void close(ResultSet rs) {
        	if(rs!=null) {
        		try {
    				rs.close();
    			} catch (SQLException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
        	}
        }
        
        	
    }
    
    

    这是properties文件内容,其中#号部分是连接oracle数据库的信息,其他是连接mysql的信息

    # jdbc配置文件,配置驱动,url,username,password,采用key = value的形式配置信息
    # driver = oracle.jdbc.driver.OracleDriver
    # url = jdbc:oracle:thin:@localhost:1521:neuedu
    # username = scott
    # password = tiger
    
    driver = com.mysql.jdbc.Driver
    url = jdbc:mysql://localhost:3306/javaweb?useUnicode=true&characterEncoding=UTF-8
    username = root
    password = ******
    
    

    还有一个就是给我们密码加密的工具类,叫MD5,百度很多写法,这里就随便复制一个

    package com.utilDB;
    
    import java.security.MessageDigest;
    
    public class MD5 {
    
    	public static String MD5(String s) {
    	    try {
    	        MessageDigest md = MessageDigest.getInstance("MD5");
    	        byte[] bytes = md.digest(s.getBytes("utf-8"));
    	        return toHex(bytes);
    	    }
    	    catch (Exception e) {
    	        throw new RuntimeException(e);
    	    }
    	}
    
    	private static String toHex(byte[] bytes) {
    
    	    final char[] HEX_DIGITS = "0123456789ABCDEF".toCharArray();
    	    StringBuilder ret = new StringBuilder(bytes.length * 2);
    	    for (int i=0; i<bytes.length; i++) {
    	        ret.append(HEX_DIGITS[(bytes[i] >> 4) & 0x0f]);
    	        ret.append(HEX_DIGITS[bytes[i] & 0x0f]);
    	    }
    	    return ret.toString();
    	}
    }
    
    
    
  • 相关阅读:
    HTML DOM clearInterval() 方法
    clone() 方法
    Java EE 6体系结构的变革
    我们看人的眼光
    NetBeans 时事通讯(刊号 # 44 Feb 10, 2009)
    jBPM 与项目的适用性探讨
    Java EE 6体系结构的变革
    jBPM 与项目的适用性探讨
    系分又挂了 :)
    NetBeans 时事通讯(刊号 # 44 Feb 10, 2009)
  • 原文地址:https://www.cnblogs.com/liu-ya/p/9417817.html
Copyright © 2020-2023  润新知