close

Java

Java

JAVA-TOMCAT下载、安装与配置

tomcat

接上一篇文章地址:JAVA-JDK下载、安装、使用

第一步:首先下载TOMCAT安装包

http://tomcat.apache.org/download-70.cgi



选择适合你电脑的安装包即可、解压到自己相对应的文件夹里面

第二步:进行环境变量配置

在运行「Tomcat」之前还需要对JDK进行安装、此前已经安装过了、若不清楚请查看上一篇文章。
环境变量配置:计算机-右键属性-高级系统设置-环境变量-系统变量-新建

完成后还需要增加用户变量、命名为CLASS_PATH、
变量为;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar

然后可以一路点击确定即可

第三步:测试配置是否成功

打开「Tomcat」安装目录bin、双击start、启动「Tomcat」测试是否能正常运行

出现「Tomcat」日志信息、打开浏览器输入http://127.0.0.1:8080 (Tomcat默认端口8080)

read more
Java

JAVA–JDK下载、安装、使用

JAVA

小编最近也是疯狂迷恋「JAVA」、誓死一定要搞会「JAVA」、下面我就分享一下JAVA的一些内容和我的学习之路!

JAVA初学者会需要一些安装环境、那么我们这次就来介绍一下这些环境如何安装、一步步的实施!

并且后续也会持续更新「JAVA」「JSP」内容!

下载「JAVA」的SDK 如图一所示

地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

下载完直接双击exe文件进行安装

这一步需要安装很久、耐心等待即可、出现安装「JRE」可以更改安装位置、在点击下一步、然后会安装「JRE」安装界面。

当「JRE」安装成功后、界面消失、重新回到「JDK」安装窗口、提示安装成功

进行环境变量的配置
在「JDK」安装完成后、要有环境变量的配置、才能对程序进行编译和运行
找到计算机图标-右键属性-高级系统设置-环境变量-path所在的行

直接点击编辑、然后复制你刚刚安装的「JAVA」目录、建议找到这个文件复制粘贴进去不容易出错
小编的安装是默认地址:C:\Program Files\Java\jdk1.8.0_191\bin 
此处请注意一下在加这个路径前「;」符号要英文输入下

然后就可以一路确定了、看看是不是有安装成功「JAVA」直接就是在CMD下输入

JAVA -version
就可以查看自己地Java版本了!

至此「JAVA」的一些基础安装完成了、下一篇文章写TOMCAT

read more
Java

JDBC工具类-配置文件获取数据库连接

【IThome.com】13

1.使用properties配置文件

开发中获得连接的4个参数(驱动、URL、用户名、密码)通常都存在配置文件中,方便后期维护,程序如果需要更换数据库,只需要修改配置文件即可。
通常情况下,我们习惯使用properties文件,此文件我们将做如下要求:
1. 文件位置:任意,建议src下
2. 文件名称:任意,扩展名为properties
3. 文件内容:一行一组数据,格式是“key=value”.
a) key命名自定义,如果是多个单词,习惯使用点分隔。例如:jdbc.driver
b) value值不支持中文,如果需要使用非英文字符,将进行unicode转换。

2.创建配置文件

在项目跟目录下,创建文件,输入“db.properties”文件名。

文件中的内容

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mydb
user=root
password=root

3.加载配置文件:Properties对象

对应properties文件处理,开发中也使用Properties对象进行。我们将采用加载properties文件获得流,然后使用Properties对象进行处理。

JDBCUtils.java中编写代码

package cn.hiluna.jdbcutil;
/*
 * 编写JDBC的工具类,获取数据库的连接
 * 采用读取配置文件的方式
 * 读取配置文件,获取连接,执行一次,static{}
 */


import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;

import com.mysql.jdbc.Statement;

public class JDBCUtilsConfig {

    private static Connection connection;
    private static String driverClass;
    private static String url;
    private static String username;
    private static String password;

    static {
        try {
            readConfig();
            Class.forName(driverClass);
            connection = DriverManager.getConnection(url, username, password);
        } catch (Exception e) {
            throw new RuntimeException("数据库连接失败");
        }
    }

    private static void readConfig() throws Exception{
        InputStream inputStream = JDBCUtilsConfig.class.getClassLoader().getResourceAsStream("database.properties");
        Properties properties = new Properties();
        properties.load(inputStream);
        driverClass = properties.getProperty("driverClass");
        url = properties.getProperty("url");
        username = properties.getProperty("username");
        password = properties.getProperty("password");
    }
    /*关闭数据库连接*/
    public static void close(Connection connection,PreparedStatement preparedStatement,ResultSet resultSet) {
        if (resultSet != null) {
            try {
                resultSet.close();
            } catch (SQLException e) {
                // TODO: handle exception
            }
        }
        if (preparedStatement != null) {
            try {
                preparedStatement.close();
            } catch (SQLException e) {
                // TODO: handle exception
            }
        }
        if (connection != null) {
            try {
                connection.close();
            } catch (SQLException e) {
                // TODO: handle exception
            }
        }
    }
    public static void close(Connection connection,Statement statement,ResultSet resultSet) {
        if (resultSet != null) {
            try {
                resultSet.close();
            } catch (SQLException e) {
                // TODO: handle exception
            }
        }
        if (statement != null) {
            try {
                statement.close();
            } catch (SQLException e) {
                // TODO: handle exception
            }
        }
        if (connection != null) {
            try {
                connection.close();
            } catch (SQLException e) {
                // TODO: handle exception
            }
        }
    }
    //关闭
    public static void close(Connection connection,PreparedStatement preparedStatement) {
        if (preparedStatement != null) {
            try {
                preparedStatement.close();
            } catch (SQLException e) {
                // TODO: handle exception
            }
        }
        if (connection != null) {
            try {
                connection.close();
            } catch (SQLException e) {
                // TODO: handle exception
            }
        }
    }
    public static void close(Connection connection,Statement statement) {
        if (statement != null) {
            try {
                statement.close();
            } catch (SQLException e) {
                // TODO: handle exception
            }
        }
        if (connection != null) {
            try {
                connection.close();
            } catch (SQLException e) {
                // TODO: handle exception
            }
        }
    }
    public static Connection getConnection() {
        return connection;
    }

}

read more
Java

面向对象基本特征:继承

【IThome.com】3

1 继承的实现

1.1 继承的基本概念:扩展父类功能

1.2 Java中使用extends关键字完成继承;实现过程clas 子类 extends 父类{}

package com.jikexueyuan.extendsDemo;
class Person{
    private int age;
    private String name;
    public int getAge() {
        return age;
    }
    public String getName() {
        return name;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public void setName(String name) {
        this.name = name;
    }
    //public void tell(){
    //   System.out.println("姓名:"+getName()+"   年龄:"+getAge());
    //}
}
class Student extends Person{
    //private int age;
    //private String name;
    private int score;
    public int getScore() {
        return score;
    }
    public void setScore(int score) {
        this.score = score;
    }
    public void say(){
        System.out.println("成绩:"+getScore()+getName()+getAge());
    }
}
public class ExtendsDemo01 {
    public static void main(String[] args){
        Student s = new Student();
        s.setAge(20);
        s.setName("张三");
        s.setScore(100);
        //s.tell();
        s.say();
    }
}

PersonStudent都属于人,所以Student类可以继承Person,这样Student就可以使用Person的属性,这样可以去掉很多冗余代码如上例中的所有注销的代码。

2 继承的限制

2.1 在Java中只允许单继承

这样属于单继承:

class People{
    private int age;
}
class Worker extends People{
}
class PetWorker extends Worker{
}

而这个样子就不属于单继承,在Java中是不被允许的。

class People{
    private int age;
}
class Worker extends People{
}
class PetWorker extends Worker,People{
}

2.2 子类不能直接访问父类的私有成员,同样需要实现其getset方法来实现。

3 子类对象实例化过程

3.1 在子类对象实例化之前,必须先调用父类中的构造方法,之后调用子类构造方法

实例化子类对象→(先调用父类构造)调用父类构造→(在调用子类构造)调用子类构造

可以通过一段简单代码的执行结果看出:

package com.jikexueyuan.extendsDemo;
class Father{
    private int age;
    private String name;
    public Father(){
        System.out.println("父类的构造方法");
    }
}
class Son extends Father{
    public Son(){
        System.out.println("子类的构造方法");
    }
}
public class ExtendDemo03 {
    public static void main(String[] args){
        Son s = new Son();
    }
}

4 方法重写与super关键字

4.1 在继承中,也存在着重写的概念,其实就是子类定义了和父类同名的方法

4.2 定义:
– 方法名称相同,返回值相同,参数也相同。

定义2个类:

class A{
    public void tell(){
        System.out.println("我是tell方法");
    }
}
class B extends A{
    public void tell(){
        System.out.println("我重写了tell方法");
    }
}

通过实例化B 然后调用tell()方法:

public static void main(String[] args){
        B b = new B();
        b.tell();
    }

发现不会输出“我是tell方法”,只会输出“我重写了tell方法”。如果非要调用A类里的tell()方法,这时候就需要在B类里面加上super.tell();才能输出:

class B extends A{
    public void tell(){
        super.tell();
        System.out.println("我重写了tell方法");
    }
}

4.3 重写的限制

被子类重写的方法不能拥有比父类方法更加严格的访问权限。

加入父类有一个default级别的方法,在子类中重写这个方法的时候就不能用private级别,但可以使用default和public2个级别。通常情况下是子类的访问级别和父类一样。

4.4 访问权限

private < default < public

什么都不写就是default

  • private只能在当前方法内访问。
  • default只能在同一包下访问。
  • public 可以在当前工程中访问。

4.5 super关键字:

强行调用父类的方法的执行。比如上面的强行调用A类的tell()方法执行。

而在构造方法中,不用加super,父类的构造方法也会执行,这是因为java会自动给构造方法加上super。

4.6 super不一定在重写中使用,也可以表示那些方法是从父类继承而来的。

5 重写与重载的区别

No 区别点 重载 重写
1 单词 Overloading Overriding
2 定义 方法名称相同,参数的类型或个数不同 方法名称、参数的类型、返回值类型全部相同
3 权限 对权限没有要求 被重写的方法不能拥有比父类更加严格的权限
4 范围 发生在同一个类中 发生在继承中
read more